feat: add Immich service deployment with Docker Compose and environment configuration
Some checks failed
Nix Format Check / check-format (push) Failing after 38s
Some checks failed
Nix Format Check / check-format (push) Failing after 38s
This commit is contained in:
parent
0f8063445e
commit
8eded69aee
@ -14,4 +14,5 @@
|
||||
vars:
|
||||
hoarder_enabled: true
|
||||
golink_enabled: true
|
||||
immich_enabled: false
|
||||
when: ansible_hostname == "mennos-cloud-server"
|
||||
|
@ -0,0 +1,76 @@
|
||||
name: immich
|
||||
services:
|
||||
server:
|
||||
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
|
||||
volumes:
|
||||
- {{ immich_data_dir }}/upload:/usr/src/app/upload
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
env_file:
|
||||
- .env
|
||||
ports:
|
||||
- '2283:2283'
|
||||
depends_on:
|
||||
- redis
|
||||
- database
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
disable: false
|
||||
|
||||
machine-learning:
|
||||
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
|
||||
volumes:
|
||||
- model-cache:/cache
|
||||
env_file:
|
||||
- .env
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
disable: false
|
||||
|
||||
redis:
|
||||
container_name: immich_redis
|
||||
image: docker.io/redis:6.2-alpine@sha256:2ba50e1ac3a0ea17b736ce9db2b0a9f6f8b85d4c27d5f5accc6a416d8f42c6d5
|
||||
healthcheck:
|
||||
test: redis-cli ping || exit 1
|
||||
restart: unless-stopped
|
||||
|
||||
database:
|
||||
container_name: immich_postgres
|
||||
image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
|
||||
environment:
|
||||
PUID: 1000
|
||||
PGID: 1000
|
||||
POSTGRES_PASSWORD: ${DB_PASSWORD}
|
||||
POSTGRES_USER: ${DB_USERNAME}
|
||||
POSTGRES_DB: ${DB_DATABASE_NAME}
|
||||
POSTGRES_INITDB_ARGS: '--data-checksums'
|
||||
volumes:
|
||||
# Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file
|
||||
- {{ immich_data_dir }}/db:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: pg_isready --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' || exit 1; Chksum="$$(psql --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' --tuples-only --no-align --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')"; echo "checksum failure count is $$Chksum"; [ "$$Chksum" = '0' ] || exit 1
|
||||
interval: 5m
|
||||
start_interval: 30s
|
||||
start_period: 5m
|
||||
command:
|
||||
[
|
||||
'postgres',
|
||||
'-c',
|
||||
'shared_preload_libraries=vectors.so',
|
||||
'-c',
|
||||
'search_path="$$user", public, vectors',
|
||||
'-c',
|
||||
'logging_collector=on',
|
||||
'-c',
|
||||
'max_wal_size=2GB',
|
||||
'-c',
|
||||
'shared_buffers=512MB',
|
||||
'-c',
|
||||
'wal_compression=on',
|
||||
]
|
||||
restart: unless-stopped
|
||||
|
||||
volumes:
|
||||
model-cache:
|
10
config/ansible/tasks/servers/services/immich/dotenv.j2
Normal file
10
config/ansible/tasks/servers/services/immich/dotenv.j2
Normal file
@ -0,0 +1,10 @@
|
||||
# You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables
|
||||
# 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=Europe/Amsterdam
|
||||
|
||||
# The Immich version to use. You can pin this to a specific version like "v1.71.0"
|
||||
IMMICH_VERSION=release
|
||||
|
||||
DB_USERNAME=postgres
|
||||
DB_PASSWORD=postgres
|
||||
DB_DATABASE_NAME=immich
|
36
config/ansible/tasks/servers/services/immich/immich.yml
Normal file
36
config/ansible/tasks/servers/services/immich/immich.yml
Normal file
@ -0,0 +1,36 @@
|
||||
- name: Deploy Immich service
|
||||
block:
|
||||
- name: Set Immich data directory
|
||||
ansible.builtin.set_fact:
|
||||
immich_data_dir: "/mnt/storage-box/services/immich"
|
||||
|
||||
- name: Set Immich service directory
|
||||
ansible.builtin.set_fact:
|
||||
immich_service_dir: "{{ ansible_env.HOME }}/services/immich"
|
||||
|
||||
- name: Create Immich directories
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
mode: "0755"
|
||||
loop:
|
||||
- "{{ immich_data_dir }}"
|
||||
- "{{ immich_service_dir }}"
|
||||
|
||||
- name: Deploy Immich docker-compose.yml
|
||||
ansible.builtin.template:
|
||||
src: docker-compose.yml.j2
|
||||
dest: "{{ immich_service_dir }}/docker-compose.yml"
|
||||
mode: "0644"
|
||||
register: immich_compose
|
||||
|
||||
- name: Deploy Immich .env
|
||||
ansible.builtin.template:
|
||||
src: dotenv.j2
|
||||
dest: "{{ immich_service_dir }}/.env"
|
||||
mode: "0644"
|
||||
register: immich_compose
|
||||
|
||||
- name: Start Immich service
|
||||
ansible.builtin.command: docker compose -f "{{ immich_service_dir }}/docker-compose.yml" up -d
|
||||
when: immich_compose.changed
|
@ -6,3 +6,6 @@
|
||||
- name: Include hoarder tasks
|
||||
ansible.builtin.include_tasks: hoarder/hoarder.yml
|
||||
when: hoarder_enabled|bool
|
||||
- name: Include immich tasks
|
||||
ansible.builtin.include_tasks: immich/immich.yml
|
||||
when: immich_enabled|bool
|
Loading…
x
Reference in New Issue
Block a user