version: "3.7" x-environment: &env NODE_ENV: "production" DB_HOSTNAME: "immich_postgres_1" DB_USERNAME: &db_username "immich" DB_PASSWORD: &db_password "moneyprintergobrrr" DB_DATABASE_NAME: &db_database_name "immich" REDIS_HOSTNAME: "immich_redis_1" LOG_LEVEL: "simple" JWT_SECRET: ${APP_SEED} DISABLE_REVERSE_GEOCODING: "false" REVERSE_GEOCODING_PRECISION: "3" PUBLIC_LOGIN_PAGE_MESSAGE: "" TYPESENSE_API_KEY: &typesense_api_key "any-text-for-self-hosted-typesense" IMMICH_SERVER_URL: &immich_server_url "http://immich_server_1:3001" IMMICH_WEB_URL: &immich_web_url "http://immich_web_1:3000" IMMICH_MACHINE_LEARNING_URL: "http://immich_machine-learning_1:3003" services: app_proxy: environment: APP_HOST: immich_proxy_1 APP_PORT: 8080 PROXY_AUTH_WHITELIST: "/api/*,/search/*" server: image: altran1502/immich-server:v1.72.2@sha256:d306708a090a814d6e3660e7fd372403b92600a1624b398ca2c00e8f3eaeaa1a command: [ "start.sh", "immich" ] volumes: - ${APP_DATA_DIR}/data/upload:/usr/src/app/upload environment: <<: *env depends_on: - redis - postgres - typesense restart: on-failure microservices: image: altran1502/immich-server:v1.72.2@sha256:d306708a090a814d6e3660e7fd372403b92600a1624b398ca2c00e8f3eaeaa1a # This service cannot run under 1000:1000 # And because the uploads are shared # We'll run immich specific services as root command: [ "start.sh", "microservices" ] volumes: - ${APP_DATA_DIR}/data/upload:/usr/src/app/upload environment: <<: *env depends_on: - redis - postgres - typesense restart: on-failure machine-learning: image: altran1502/immich-machine-learning:v1.72.2@sha256:3884b7424bf19256cf0e2b25f6eab099ec08ccffce6e05a8a250234d08a59aed volumes: - ${APP_DATA_DIR}/data/model-cache:/cache environment: <<: *env restart: on-failure web: image: altran1502/immich-web:v1.72.2@sha256:e50572dc3ec86dc0874ba7b06f8ba51bced3ce5de2fd84fc0fbba6999ab9bcef environment: <<: *env restart: on-failure typesense: image: typesense/typesense:0.24.1@sha256:9bcff2b829f12074426ca044b56160ca9d777a0c488303469143dd9f8259d4dd environment: TYPESENSE_API_KEY: *typesense_api_key TYPESENSE_DATA_DIR: "/data" volumes: - ${APP_DATA_DIR}/data/tsdata:/data restart: on-failure proxy: image: altran1502/immich-proxy:v1.72.2@sha256:40c2876f1db1ac209f4985c98410f529afc11646391e07cdb80402b31c6ad67d environment: IMMICH_SERVER_URL: *immich_server_url IMMICH_WEB_URL: *immich_web_url depends_on: - server - web restart: on-failure redis: image: redis:6.2-alpine@sha256:70a7a5b641117670beae0d80658430853896b5ef269ccf00d1827427e3263fa3 user: "1000:1000" restart: on-failure volumes: - ${APP_DATA_DIR}/data/redis:/data postgres: image: postgres:14-alpine@sha256:28407a9961e76f2d285dc6991e8e48893503cc3836a4755bbc2d40bcc272a441 user: "1000:1000" environment: <<: *env POSTGRES_PASSWORD: *db_password POSTGRES_USER: *db_username POSTGRES_DB: *db_database_name volumes: - ${APP_DATA_DIR}/data/postgres:/var/lib/postgresql/data restart: on-failure