# ── Immich Server Connection (required) ────────────────────────── # Validated by Zod at startup — missing or invalid values produce clear errors. # Base URL of your Immich instance (must be a valid URL) IMMICH_API_URL=http://your-immich-server:2283 # Immich API key (from Admin → API Keys) IMMICH_API_KEY=your-api-key-here # ── Optional Settings ──────────────────────────────────────────── # All have sensible defaults and are type-checked by Zod. # Site title shown in the header (string, default: "Gallery") SITE_TITLE=My Photography # Subtitle displayed below the title (string, default: "") SITE_SUBTITLE=A visual journal # Cache TTL in seconds (integer >= 0, default: 300 = 5 minutes) CACHE_TTL=300 # Rate limit for image proxy (integer >= 1, requests per minute per IP, default: 120) # RATE_LIMIT_RPM=120 # Number of reverse proxies in front of the app (nginx/Traefik/Caddy = 1, # Cloudflare in front of nginx = 2). Required for correct rate limiting behind # a proxy — without it the client IP is read from a spoofable header. # The app must be reachable ONLY through the proxy (bind to 127.0.0.1). # TRUSTED_PROXY_HOPS=1 # Secret for signing auth cookies and encrypting asset tokens (string, min 16 chars). # If not provided, IMMICH_API_KEY will be used as a fallback (not recommended). # AUTH_SECRET=your-super-long-random-secret-here # Webhook secret for cache invalidation (optional, string). # Set this to a long random string and configure Immich to send webhooks to # POST /api/webhook with an x-immich-signature header (HMAC-SHA256 of the body). # If not set, the webhook endpoint returns 501 and is effectively disabled. # WEBHOOK_SECRET=your-long-random-webhook-secret # ── Admin Panel ────────────────────────────────────────────────── # Set a password to enable the visual admin panel at /admin. # Leave unset or empty to disable the admin UI entirely. # ADMIN_PASSWORD=your-secure-admin-password # ── Album configuration ────────────────────────────────────────── # Albums, subpages, hero image, and passwords are defined in content/gallery.yaml # See content/gallery.yaml.example for the full reference.