# Every setting the application and its composition read, with no values in it. # Copy to `.env`, fill in what you need, and keep that copy out of git (it is # gitignored, and the work-item safety checks refuse to stage it). # # cp .env.example .env # # Empty means "use the default noted beside it". Anything already exported in the # shell wins over this file, both for the app and for `docker compose`. # ── the composition (host side; read by docker-compose.yml only) ───────────── # The photo library on this host. Bind-mounted at PHOTO_PIPELINE_LIBRARY_ROOTS. PHOTO_PIPELINE_LIBRARY_HOST_PATH= # Which image to run. Default: photo-pipeline:dev (what `up --build` builds). PHOTO_PIPELINE_IMAGE= # Must be the owner of the library above: what the containers rename and rewrite # keeps this ownership. Default: 1000 / 1000. PHOTO_PIPELINE_UID= PHOTO_PIPELINE_GID= # Host address the API port is published on. Default: 127.0.0.1. Anything else # exposes the app beyond this machine — then ALLOWED_HOSTS and ACCESS_SECRET below # are what stand in for the loopback boundary (US08-01). PHOTO_PIPELINE_PUBLISH_ADDRESS= # This file's own path, if it is not ./.env. Default: .env. PHOTO_PIPELINE_ENV_FILE= # ── library and data ──────────────────────────────────────────────────────── # os.pathsep-separated. In a container these are the *container-side* mount paths, # and `serve`/`worker` refuse to start when they are not mounted. PHOTO_PIPELINE_LIBRARY_ROOTS= # Database, WAL, thumbnail cache, journals, backups. Default: data (the container # sets /data, which is the persistent volume; a network mount is unsupported). PHOTO_PIPELINE_DATA_DIR= # Database file, if it should not live in the data directory. Default: # /photo_pipeline.db. PHOTO_PIPELINE_DB_PATH= # ── serving ───────────────────────────────────────────────────────────────── # Bind address. Default: 127.0.0.1. The composition sets 0.0.0.0 inside the # container and publishes to loopback on the host instead. PHOTO_PIPELINE_HOST= # Under the composition this is the *published* host port; the container serves # 8000. Default: 8000. PHOTO_PIPELINE_PORT= # Comma-separated hostnames the app answers to besides loopback. Empty means # loopback only. Naming one makes the access secret mandatory. PHOTO_PIPELINE_ALLOWED_HOSTS= # Traded for the session cookie at GET /api/v1/session via X-Access-Secret. # Required as soon as the app is reachable from anywhere but loopback. Generate # one with: python -c 'import secrets; print(secrets.token_urlsafe(32))' PHOTO_PIPELINE_ACCESS_SECRET= # Comma-separated peer addresses whose X-Forwarded-Proto/-Host may be believed. # Only the reverse proxy's address belongs here. Default: none. PHOTO_PIPELINE_TRUSTED_PROXIES= # Largest request body accepted, in bytes. Default: 1048576. PHOTO_PIPELINE_MAX_REQUEST_BYTES= # ── logging ───────────────────────────────────────────────────────────────── # Default: INFO. PHOTO_PIPELINE_LOG_LEVEL= # json or text. Default: json. PHOTO_PIPELINE_LOG_FORMAT= # ── limits ────────────────────────────────────────────────────────────────── # Thumbnail cache quota in bytes. Default: 500000000. PHOTO_PIPELINE_THUMBNAIL_CACHE_QUOTA_BYTES= # Refuse to decode images larger than this many pixels. Default: 100000000. PHOTO_PIPELINE_THUMBNAIL_MAX_PIXELS= # Free space an archive destination must keep beyond the transfer. Default: # 1000000000. PHOTO_PIPELINE_ARCHIVE_FREE_SPACE_RESERVE_BYTES= # ── safety gate ───────────────────────────────────────────────────────────── # true refuses every mutating request until a read-only dry run of this library has # been produced and approved (US07-07). Default: false. Turn it on before pointing # the app at photos that cannot be replaced. PHOTO_PIPELINE_REQUIRE_DRY_RUN_APPROVAL= # ── external services ─────────────────────────────────────────────────────── # Vision provider key for the analysis stage. Without it, analysis cannot run. PHOTO_PIPELINE_VISION_API_KEY= # Immich server and its API key, for the upload stage. PHOTO_PIPELINE_IMMICH_SERVER_URL= PHOTO_PIPELINE_IMMICH_API_KEY= # Uploader binary. Default: immich-go (on PATH; pinned inside the image). PHOTO_PIPELINE_IMMICH_GO_BINARY=