# ── 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 # Trusted Proxies: Comma-separated list of IP addresses (e.g., from Nginx, Traefik, or Vercel). # If set, rate limiting will only trust X-Forwarded-For headers from these IPs. # TRUSTED_PROXIES=127.0.0.1,10.0.0.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.