- VOL_PATH always defaults to /data; vscode/opencode VOL_PROJECTS nests it - TZ defaults to America/Vancouver (was UTC in etherpad, ntfy, redis) - compose section order fixed (volumes before environment, command after networks) - all default secrets are the literal ChangeThisPassword (grep-friendly, users must change them); removed a real key from ollama sample.env - sample.env synced with compose: missing vars added with defaults, dead vars removed - invoiceninja_dev/openarchiver_dev: app services had no environment block, wired all sample.env vars through so the stacks actually work - opencode: sample.env OLLAMA_HOST renamed to OLLAMA_HOST_URL to match compose - TZ values unquoted consistently Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Immich
Overview
Self-hosted photo and video management solution with a mobile app, machine-learning powered search, and face recognition. This stack runs the Immich server, a machine-learning service, Redis, and a pgvecto.rs (Postgres) database.
Project Details
- Project Repository: GitHub
- Container Image: ghcr.io
- Compose Example: Docs
- Documentation: Docs
- Reverse Proxy Port:
2283
Getting Started
- Start the containers:
docker compose up -d - Open http://localhost:8000 in your browser
- Follow the initial setup wizard to create the admin account
Environment Variable Notes
See the environment variable documentation.
IMMICH_IMAGE – immich server image/tag
IMMICH_ML_IMAGE – machine-learning service image/tag (add -cuda, -openvino, or -armnn for hardware acceleration)
IMMICH_PORT – host port mapped to the server's internal port 2283
IMMICH_DB_PASSWORD / IMMICH_DB_USERNAME / IMMICH_DB_DATABASE_NAME – Postgres credentials, shared between the server and the database
Volume Notes
${VOL_PATH}/immich/upload – uploaded photo/video library
${VOL_PATH}/immich/import – drop files here for external library import
${VOL_PATH}/immich/model-cache – downloaded machine-learning models
${VOL_PATH}/immich/postgres – database data
Network Notes
Requires proxy network. Redis, Postgres, and the machine-learning service only join the internal network.
Docker Run
Not practical for this stack — Immich needs the server, machine-learning, Redis, and Postgres containers together. Use the compose file.
Additional Notes / Gotchas
Import
- Go to the Administrator and External Libraries
- Choose the path:
/import - Place your files in the import directory.
- Run the Job External Libraries
Upgrades
The version tags can be confusing here. I go to the releases page: https://github.com/immich-app/immich/releases and then bump to that release: IMMICH_IMAGE=ghcr.io/immich-app/immich-server:v1.143.1
Env changes not applying
If the env file doesn't work after a change, try running docker compose up -d --force-recreate.
Dockhand Stack, Deploy from Git
Cookbooks Repository stackname: immich Compose file path: immich_dev/compose.yaml Additional env file (optional): immich_dev/sample.env
Then "Load" immich_dev/sample.env into the Environmental variables in dockhand
Create the Stack