diff --git a/.env.sample b/.env.sample index 18b1fad..beb09da 100644 --- a/.env.sample +++ b/.env.sample @@ -6,3 +6,25 @@ DOMAIN=immich.example.com #EXTRA_DOMAINS=', `www.immich.example.com`' LETS_ENCRYPT_ENV=production + +# You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables + +# The location where your uploaded files are stored +UPLOAD_LOCATION=./library +# The location where your database files are stored +DB_DATA_LOCATION=./postgres + +# To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List +# TZ=Etc/UTC + +# The Immich version to use. You can pin this to a specific version like "v1.71.0" +IMMICH_VERSION=release + +# Connection secret for postgres. You should change it to a random password +# Please use only the characters `A-Za-z0-9`, without special characters or spaces +DB_PASSWORD=postgres + +# The values below this line do not need to be changed +################################################################################### +DB_USERNAME=postgres +DB_DATABASE_NAME=immich diff --git a/compose.yml b/compose.yml index a2c3805..1151090 100644 --- a/compose.yml +++ b/compose.yml @@ -2,30 +2,58 @@ version: "3.8" services: - app: - image: nginx:1.20.0 - networks: - - proxy + server: + image: immich-server:latest + volumes: + - ${UPLOAD_LOCATION}/photos:/usr/src/app/upload + - /etc/localtime:/etc/localtime:ro + environment: + - UPLOAD_LOCATION + - DB_DATA_LOCATION + - TZ + - IMMICH_VERSION + - DB_PASSWORD + - DB_USERNAME + - DB_DATABASE_NAME + ports: + - 2283:2283 + healthcheck: + disable: false deploy: - restart_policy: - condition: on-failure labels: - "traefik.enable=true" - - "traefik.http.services.${STACK_NAME}.loadbalancer.server.port=80" + - "traefik.http.services.${STACK_NAME}.loadbalancer.server.port=2283" - "traefik.http.routers.${STACK_NAME}.rule=Host(`${DOMAIN}`${EXTRA_DOMAINS})" - "traefik.http.routers.${STACK_NAME}.entrypoints=web-secure" - "traefik.http.routers.${STACK_NAME}.tls.certresolver=${LETS_ENCRYPT_ENV}" - ## Redirect from EXTRA_DOMAINS to DOMAIN - #- "traefik.http.routers.${STACK_NAME}.middlewares=${STACK_NAME}-redirect" - #- "traefik.http.middlewares.${STACK_NAME}-redirect.headers.SSLForceHost=true" - #- "traefik.http.middlewares.${STACK_NAME}-redirect.headers.SSLHost=${DOMAIN}" - "coop-cloud.${STACK_NAME}.version=" + + + machine-learning: + image: immich-machine-learning:latest + ports: + - 3003:3003 + volumes: + - model-cache:/cache healthcheck: - test: ["CMD", "curl", "-f", "http://localhost"] - interval: 30s - timeout: 10s - retries: 10 - start_period: 1m + disable: false + redis: + image: redis:6.2-alpine@sha256:eaba718fecd1196d88533de7ba49bf903ad33664a92debb24660a922ecd9cac8 + healthcheck: + test: redis-cli ping || exit 1 + + database: + image: tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0 + environment: + POSTGRES_PASSWORD: ${DB_PASSWORD} + POSTGRES_USER: ${DB_USERNAME} + POSTGRES_DB: ${DB_DATABASE_NAME} + POSTGRES_INITDB_ARGS: '--data-checksums' + volumes: + - ${UPLOAD_LOCATION}/postgres:/var/lib/postgresql/data + ports: + - 5432:5432 + networks: proxy: