2026-02-14 11:47:26 +01:00
|
|
|
# ── 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)
|
2026-02-14 10:37:05 +01:00
|
|
|
IMMICH_API_URL=http://your-immich-server:2283
|
2026-02-14 11:47:26 +01:00
|
|
|
|
|
|
|
|
# Immich API key (from Admin → API Keys)
|
2026-02-14 10:37:05 +01:00
|
|
|
IMMICH_API_KEY=your-api-key-here
|
|
|
|
|
|
2026-02-14 11:47:26 +01:00
|
|
|
# ── Optional Settings ────────────────────────────────────────────
|
|
|
|
|
# All have sensible defaults and are type-checked by Zod.
|
|
|
|
|
|
|
|
|
|
# Site title shown in the header (string, default: "Gallery")
|
2026-02-14 10:37:05 +01:00
|
|
|
SITE_TITLE=My Photography
|
2026-02-14 11:47:26 +01:00
|
|
|
|
|
|
|
|
# Subtitle displayed below the title (string, default: "")
|
2026-02-14 10:37:05 +01:00
|
|
|
SITE_SUBTITLE=A visual journal
|
|
|
|
|
|
2026-02-14 11:47:26 +01:00
|
|
|
# Cache TTL in seconds (integer >= 0, default: 300 = 5 minutes)
|
2026-02-14 10:37:05 +01:00
|
|
|
CACHE_TTL=300
|
|
|
|
|
|
2026-02-14 11:47:26 +01:00
|
|
|
# Rate limit for image proxy (integer >= 1, requests per minute per IP, default: 120)
|
2026-02-14 10:37:05 +01:00
|
|
|
# RATE_LIMIT_RPM=120
|
|
|
|
|
|
2026-07-20 18:57:57 +02:00
|
|
|
# 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
|
2026-04-24 22:14:53 +02:00
|
|
|
|
2026-03-07 08:18:23 +01:00
|
|
|
# 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
|
|
|
|
|
|
feat: add visual admin panel with page builder and settings editor
- Add /admin route with password-protected visual page builder
- Page Builder: manage hero images, standalone albums, subpages, and sections
- Album Picker: browse all shared Immich albums with search and filtering
- Settings Editor: theme, grid, footer, legal, SEO configuration
- YAML service with atomic writes and automatic backups (content/.backups/)
- HMAC-signed admin sessions (24h expiry, HttpOnly cookies)
- API endpoints: /api/admin/{auth,gallery,settings,albums,reload}
- Enable with ADMIN_PASSWORD env var; disabled by default
- invalidateConfigCache() export for hot-reload after saves
2026-05-29 17:04:37 +02:00
|
|
|
# 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
|
|
|
|
|
|
2026-02-14 11:47:26 +01:00
|
|
|
# ── Album configuration ──────────────────────────────────────────
|
2026-02-14 10:37:05 +01:00
|
|
|
# Albums, subpages, hero image, and passwords are defined in content/gallery.yaml
|
|
|
|
|
# See content/gallery.yaml.example for the full reference.
|