Files
homelab/docker/stacks/immich/docker-compose.yaml

113 lines
3.1 KiB
YAML

services:
immich-server:
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
volumes:
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- /etc/localtime:/etc/localtime:ro
environment:
UPLOAD_LOCATION: ${UPLOAD_LOCATION}
DB_PASSWORD: ${DB_PASSWORD}
DB_USERNAME: ${DB_USERNAME}
DB_DATABASE_NAME: ${DB_DATABASE_NAME}
REDIS_HOSTNAME: redis
TZ: ${TZ}
ports:
- 2283:3001
depends_on:
- redis
- database
restart: always
healthcheck:
disable: false
labels:
- "traefik.enable=true"
- "traefik.http.routers.immich.rule=Host(`${TRAEFIK_DOMAIN}`)"
- "traefik.http.routers.immich.entrypoints=websecure"
- "traefik.http.routers.immich.tls.certresolver=myresolver"
- "traefik.docker.network=traefik"
networks:
- immich
- traefik
immich-machine-learning:
container_name: immich_machine_learning
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
volumes:
- model-cache:/cache
restart: always
healthcheck:
disable: false
networks:
- immich
redis:
image: registry.hub.docker.com/library/redis:6.2-alpine@sha256:84882e87b54734154586e5f8abd4dce69fe7311315e2fc6d67c29614c8de2672
healthcheck:
test: redis-cli ping || exit 1
restart: always
networks:
- immich
database:
image: ghcr.io/immich-app/postgres:14-vectorchord0.3.0-pgvectors0.2.0
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
POSTGRES_INITDB_ARGS: '--data-checksums'
DB_STORAGE_TYPE: 'HDD'
volumes:
- ${SERVICE_DATA_ROOT_PATH}/database:/var/lib/postgresql/data
restart: always
networks:
- immich
backup-files:
image: creativeprojects/resticprofile:${RP_VERSION:-latest}
entrypoint: '/bin/sh'
hostname: immich-resticprofile
restart: always
command:
- '-c'
- 'resticprofile schedule --all && crond -f'
volumes:
- ${SERVICE_DATA_ROOT_PATH}/restic/resticprofile.yaml:/etc/resticprofile/profiles.yaml:ro
- ${SERVICE_DATA_ROOT_PATH}/restic/restic.key:/etc/resticprofile/key:ro
- ${SERVICE_DATA_ROOT_PATH}/db_dumps:/db_dumps:ro
- ${UPLOAD_LOCATION}:/photos:ro
environment:
TZ: ${TZ}
AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
backup-database:
container_name: immich_db_dumper
image: prodrigestivill/postgres-backup-local:14
restart: always
environment:
POSTGRES_HOST: database
POSTGRES_CLUSTER: 'TRUE'
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_DB: ${DB_DATABASE_NAME}
BACKUP_KEEP_MINS: "120"
SCHEDULE: "50 * * * *"
POSTGRES_EXTRA_OPTS: '--clean --if-exists'
BACKUP_DIR: /db_dumps
volumes:
- ${SERVICE_DATA_ROOT_PATH}/db_dumps:/db_dumps
depends_on:
- database
networks:
- immich
networks:
immich:
name: immich
traefik:
name: traefik
external: true
volumes:
model-cache: