add Container Immich

This commit is contained in:
= 2025-08-31 21:01:44 +02:00
parent 6d60f03461
commit 8b80f02c18
8 changed files with 126 additions and 0 deletions

View file

@ -0,0 +1,9 @@
##########
# Immich #
##########
container_immich_version: release # https://github.com/immich-app/immich/releases
container_immich_domain: immich.heyer.systems
container_immich_tz: Europe/Berlin
container_immich_db_user: postgres
container_immich_db_password: your_strong_password_here
container_immich_db_name: immmich

View file

@ -0,0 +1,28 @@
---
- name: Ensure data directories exist
ansible.builtin.file:
path: "{{ container_base_dir }}/data/{{ item }}"
state: directory
mode: '0755'
loop:
- "library"
- "postgres"
become: false
- name: Deploy Docker Compose and .env files
ansible.builtin.template:
src: "{{ item.src }}"
dest: "{{ container_base_dir }}/{{ item.dest }}"
mode: '0644'
loop:
- { src: 'docker-compose.yml.j2', dest: 'docker-compose.yml' }
- { src: '.env.j2', dest: '.env' }
become: false
- name: Start Container
community.docker.docker_compose_v2:
project_src: "{{ container_base_dir }}"
pull: always
recreate: always
docker_host: "unix:///run/user/1000/docker.sock"
become: false

View file

@ -0,0 +1,6 @@
IMMICH_VERSION={{ container_immich_version }}
IMMICH_DOMAIN={{ container_immich_domain }}
TZ={{ container_immich_tz }}
DB_USERNAME={{ container_immich_db_username }}
DB_PASSWORD={{ container_immich_db_password }}
DB_DATABASE_NAME={{ container_immich_db_name }}

View file

@ -0,0 +1,82 @@
---
name: immich
services:
immich-server:
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
container_name: immich_server
networks:
- traefik
- immich
# extends:
# file: hwaccel.transcoding.yml
# service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
volumes:
- ./data/library:/usr/src/app/upload
- /etc/localtime:/etc/localtime:ro
env_file:
- .env
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik"
- "traefik.http.routers.immich.entrypoints=http"
- "traefik.http.routers.immich.rule=Host(`${IMMICH_DOMAIN}`)"
- "traefik.http.middlewares.immich-https-redirect.redirectscheme.scheme=https"
- "traefik.http.routers.immich.middlewares=immich-https-redirect"
- "traefik.http.routers.immich-secure.entrypoints=https"
- "traefik.http.routers.immich-secure.rule=Host(`${IMMICH_DOMAIN}`)"
- "traefik.http.routers.immich-secure.tls=true"
- "traefik.http.routers.immich-secure.service=immich"
- "traefik.http.services.immich.loadbalancer.server.port=2283"
depends_on:
- redis
- database
restart: always
healthcheck:
disable: false
immich-machine-learning:
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
container_name: immich_machine_learning
networks:
- immich
volumes:
- model-cache:/cache
env_file:
- .env
restart: always
healthcheck:
disable: false
redis:
container_name: immich_redis
image: docker.io/valkey/valkey:8-bookworm@sha256:ff21bc0f8194dc9c105b769aeabf9585fea6a8ed649c0781caeac5cb3c247884
networks:
- immich
healthcheck:
test: redis-cli ping || exit 1
restart: always
database:
container_name: immich_postgres
image: ghcr.io/immich-app/postgres:14-vectorchord0.3.0-pgvectors0.2.0@sha256:fa4f6e0971f454cd95fec5a9aaed2ed93d8f46725cc6bc61e0698e97dba96da1
networks:
- immich
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
POSTGRES_INITDB_ARGS: '--data-checksums'
DB_STORAGE_TYPE: 'HDD'
volumes:
- ./data/postgres:/var/lib/postgresql/data
restart: always
networks:
immich:
driver: bridge
traefik:
external: true
volumes:
model-cache:

View file

@ -0,0 +1 @@
container_base_dir: /opt/docker/immich