services: immich_server: image: ghcr.io/immich-app/immich-server:release container_name: immich_server user: "1028:100" environment: UPLOAD_LOCATION: /usr/src/app/upload DB_DATA_LOCATION: ./postgres TZ: Australia/Melbourne IMMICH_VERSION: release DB_USERNAME: postgres DB_PASSWORD: postgres DB_DATABASE_NAME: immich DB_HOST: database DB_PORT: 5432 REDIS_HOST: redis REDIS_PORT: 6379 IMMICH_DISABLE_UPLOAD_WATCH: true IMMICH_DISABLE_LIBRARY_WATCH: true IMMICH_DISABLE_BACKUP_WATCH: true IMMICH_DISABLE_ENCODED_VIDEO_WATCH: true IMMICH_DISABLE_PROFILE_WATCH: true MACHINE_LEARNING_URL: http://immich_machine_learning:3003 ports: - "2283:2283" volumes: - /home/ravin/immich/photos:/usr/src/app/photos # ✅ Local ingestion folder - /home/ravin/immich/photos/encoded-video:/data/encoded-video - /home/ravin/immich/library:/data/library - /home/ravin/immich/photos/library:/data/library - /home/ravin/immich/photos/upload:/data/upload - /home/ravin/immich/photos/profile:/data/profile - /home/ravin/immich/photos/thumbs:/data/thumbs - /home/ravin/immich/photos/backups:/data/backups - ./npm-cache:/.npm # ✅ Writable npm cache for CLI tools depends_on: database: condition: service_healthy redis: condition: service_healthy networks: - immich_net database: image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0 container_name: database environment: POSTGRES_DB: immich POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres volumes: - ./postgres:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 5s timeout: 5s retries: 5 networks: - immich_net redis: image: valkey/valkey:8-bookworm container_name: redis healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 3s retries: 5 networks: - immich_net immich_machine_learning: image: ghcr.io/immich-app/immich-machine-learning:release container_name: immich_machine_learning volumes: - ./ml-models:/root/.cache restart: unless-stopped networks: - immich_net networks: immich_net: driver: bridge