# The compose file on main may not be compatible with the latest release. name: immich services: immich-server: container_name: immich_server image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release} extends: file: hwaccel.transcoding.yml service: quicksync # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding volumes: - ${UPLOAD_LOCATION}:/usr/src/app/upload # Do not edit - ${THUMB_LOCATION}:/usr/src/app/upload/thumbs - ${ENCODED_VIDEO_LOCATION}:/usr/src/app/upload/encoded-video - ${PROFILE_LOCATION}:/usr/src/app/upload/profile - ${BACKUP_LOCATION}:/usr/src/app/upload/backups - /etc/localtime:/etc/localtime:ro env_file: - .env networks: - immich ports: - '2283:2283' depends_on: - redis - database restart: always healthcheck: disable: false immich-machine-learning: container_name: immich_machine_learning # For hardware acceleration, add one of -[armnn, cuda, rocm, openvino, rknn] to the image tag. # Example tag: ${IMMICH_VERSION:-release}-cuda image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release} extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration file: hwaccel.ml.yml service: openvino # set to one of [armnn, cuda, rocm, openvino, openvino-wsl, rknn] for accelerated inference - use the `-wsl` version for WSL2 where applicable volumes: - model-cache:/cache env_file: .env networks: - immich restart: always healthcheck: disable: false redis: container_name: immich_redis image: docker.io/valkey/valkey:8-bookworm@sha256:fec42f399876eb6faf9e008570597741c87ff7662a54185593e74b09ce83d177 networks: - immich healthcheck: test: redis-cli ping || exit 1 restart: always database: container_name: immich_postgres image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0 environment: POSTGRES_PASSWORD: ${DB_PASSWORD} POSTGRES_USER: ${DB_USERNAME} POSTGRES_DB: ${DB_DATABASE_NAME} POSTGRES_INITDB_ARGS: '--data-checksums' # Uncomment the DB_STORAGE_TYPE: 'HDD' var if your database isn't stored on SSDs # DB_STORAGE_TYPE: 'HDD' networks: - immich volumes: - ${DB_DATA_LOCATION}:/var/lib/postgresql/data # Do not edit restart: always caddy: image: caddy:2.9-alpine depends_on: tailscale: condition: service_healthy restart: unless-stopped environment: DOMAIN: immich.tailcfcd4.ts.net volumes: - ${PWD}/Caddyfile:/etc/caddy/Caddyfile:ro - caddy_certs:/certs - caddy_config:/config - caddy_data:/data - tailscale_sock:/var/run/tailscale:ro network_mode: service:tailscale tailscale: image: tailscale/tailscale:stable hostname: immich environment: disable: false redis: container_name: immich_redis image: docker.io/valkey/valkey:8-bookworm@sha256:fec42f399876eb6faf9e008570597741c87ff7662a54185593e74b09ce83d177 networks: - immich healthcheck: test: redis-cli ping || exit 1 restart: always database: container_name: immich_postgres image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0 environment: POSTGRES_PASSWORD: ${DB_PASSWORD} POSTGRES_USER: ${DB_USERNAME} POSTGRES_DB: ${DB_DATABASE_NAME} POSTGRES_INITDB_ARGS: '--data-checksums' # Uncomment the DB_STORAGE_TYPE: 'HDD' var if your database isn't stored on SSDs # DB_STORAGE_TYPE: 'HDD' networks: - immich volumes: - ${DB_DATA_LOCATION}:/var/lib/postgresql/data # Do not edit restart: always caddy: image: caddy:2.9-alpine depends_on: tailscale: condition: service_healthy restart: unless-stopped environment: DOMAIN: immich.tailcfcd4.ts.net volumes: - ${PWD}/Caddyfile:/etc/caddy/Caddyfile:ro - caddy_certs:/certs - caddy_config:/config - caddy_data:/data - tailscale_sock:/var/run/tailscale:ro network_mode: service:tailscale tailscale: image: tailscale/tailscale:stable hostname: immich environment: disable: false redis: container_name: immich_redis image: docker.io/valkey/valkey:8-bookworm@sha256:fec42f399876eb6faf9e008570597741c87ff7662a54185593e74b09ce83d177 networks: - immich healthcheck: test: redis-cli ping || exit 1 restart: always database: container_name: immich_postgres image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0 environment: POSTGRES_PASSWORD: ${DB_PASSWORD} POSTGRES_USER: ${DB_USERNAME} POSTGRES_DB: ${DB_DATABASE_NAME} POSTGRES_INITDB_ARGS: '--data-checksums' # Uncomment the DB_STORAGE_TYPE: 'HDD' var if your database isn't stored on SSDs # DB_STORAGE_TYPE: 'HDD' networks: - immich volumes: - ${DB_DATA_LOCATION}:/var/lib/postgresql/data # Do not edit restart: always caddy: image: caddy:2.9-alpine depends_on: tailscale: condition: service_healthy restart: unless-stopped environment: DOMAIN: immich.tailcfcd4.ts.net volumes: - ${PWD}/Caddyfile:/etc/caddy/Caddyfile:ro - caddy_certs:/certs - caddy_config:/config - caddy_data:/data - tailscale_sock:/var/run/tailscale:ro network_mode: service:tailscale tailscale: image: tailscale/tailscale:stable hostname: immich environment: TS_AUTH_KEY: ?ephemeral=true TS_EXTRA_ARGS: --reset --advertise-tags=tag:container TS_STATE_DIR: /var/lib/tailscale TS_USERSPACE: false volumes: - ${PWD}/tailscale-immich:/var/lib/tailscale - tailscale_sock:/tmp devices: - /dev/net/tun:/dev/net/tun cap_add: - net_admin networks: - immich init: true healthcheck: test: tailscale status --peers=false --json | grep 'Online.*true' start_period: 3s interval: 1s retries: 3 restart: unless-stopped volumes: caddy_certs: caddy_config: caddy_data: model-cache: tailscale_sock: networks: immich: name: immich driver: bridge driver_opts: com.docker.network.bridge.default_bridge: "false"