initial commit

This commit is contained in:
hiperman
2026-01-30 15:07:31 -05:00
commit 7844cc4416
83 changed files with 3802 additions and 0 deletions
+37
View File
@@ -0,0 +1,37 @@
# Immich
Deploy Immich photo management platform using Docker Compose.
## Description
Immich is a self-hosted photo and video backup solution with mobile apps, AI features, and automatic organization. Includes web server, machine learning, PostgreSQL database, and Redis.
## Variables
### Required (Set in Vault)
| Variable | Description |
|----------|-------------|
| `immich_db_password` | PostgreSQL database password (use only A-Za-z0-9 characters) |
### Optional
| Variable | Default | Description |
|----------|---------|-------------|
| `immich_http_port` | `2283` | Web interface port |
| `immich_library_path` | `{{ app_dir }}/library` | Photo and video upload storage location |
| `immich_pgdata_path` | `{{ app_dir }}/pgdata` | PostgreSQL database storage location |
| `immich_container_version` | `v2` | Immich version tag (can pin to specific version like "v2.1.0") |
| `immich_container_name` | `{{ app_name }}` | Container name |
| `immich_restart_policy` | `{{ app_restart_policy }}` | Container restart policy |
| `immich_timezone` | `{{ app_timezone }}` | Container timezone |
## Example
```yaml
- role: patrickj.docker_apps.immich
vars:
immich_db_password: "{{ vault_immich_db_password }}"
immich_library_path: /storage/photos
immich_container_version: "v2.1.0"
```
+18
View File
@@ -0,0 +1,18 @@
---
app_name: immich
# Container configuration
immich_container_name: "{{ app_name | default('immich') }}"
immich_container_version: v2
immich_restart_policy: "{{ app_restart_policy | default('unless-stopped') }}"
# Network configuration
immich_http_port: 2283
# Volume paths
immich_library_path: "{{ app_dir }}/library"
immich_pgdata_path: "{{ app_dir }}/pgdata"
# App-specific configuration
immich_db_password: postgres
immich_timezone: "{{ app_timezone }}"
+20
View File
@@ -0,0 +1,20 @@
---
galaxy_info:
author: Patrick Jaroszewski
description:: Deploy Immich with Docker Compose
license: MIT
dependencies:
- role: patrickj.docker_apps.docker_compose_app
vars:
app_role_name: immich
app_subdirectories:
- "{{ immich_library_path }}"
- "{{ immich_pgdata_path }}"
app_backup_subdirectories:
- "{{ immich_library_path }}"
- "{{ immich_pgdata_path }}"
app_extra_templates:
- src: "{{ app_templates_path }}/.env.j2"
dest: "{{ app_dir }}/.env"
app_compose_validate: false
+22
View File
@@ -0,0 +1,22 @@
# You can find documentation for all the supported env variables at https://docs.immich.app/install/environment-variables
# The location where your uploaded files are stored
UPLOAD_LOCATION={{ immich_library_path }}
# The location where your database files are stored. Network shares are not supported for the database
DB_DATA_LOCATION={{ immich_pgdata_path }}
# 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={{ immich_timezone }}
# The Immich version to use. You can pin this to a specific version like "v2.1.0"
IMMICH_VERSION={{ immich_container_version }}
# 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={{ immich_db_password }}
# The values below this line do not need to be changed
###################################################################################
DB_USERNAME=postgres
DB_DATABASE_NAME=immich
+66
View File
@@ -0,0 +1,66 @@
name: immich
services:
immich-server:
container_name: "{{ immich_container_name }}"
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
# extends:
# file: hwaccel.transcoding.yml
# service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
volumes:
# Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file
- ${UPLOAD_LOCATION}:/data
- /etc/localtime:/etc/localtime:ro
env_file:
- .env
ports:
- "{{ immich_http_port }}:2283"
depends_on:
- redis
- database
restart: {{ immich_restart_policy }}
healthcheck:
disable: false
immich-machine-learning:
container_name: immich_machine_learning
# For hardware acceleration, add one of -[armnn, cuda, rocm, openvino, rknn] to the image tag.
# Example tag: ${IMMICH_VERSION:-release}-cuda
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
# extends: # uncomment this section for hardware acceleration - see https://docs.immich.app/features/ml-hardware-acceleration
# file: hwaccel.ml.yml
# service: cpu # set to one of [armnn, cuda, rocm, openvino, openvino-wsl, rknn] for accelerated inference - use the `-wsl` version for WSL2 where applicable
volumes:
- model-cache:/cache
env_file:
- .env
restart: {{ immich_restart_policy }}
healthcheck:
disable: false
redis:
container_name: immich_redis
image: docker.io/valkey/valkey:9@sha256:fb8d272e529ea567b9bf1302245796f21a2672b8368ca3fcb938ac334e613c8f
healthcheck:
test: redis-cli ping || exit 1
restart: {{ immich_restart_policy }}
database:
container_name: immich_postgres
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:bcf63357191b76a916ae5eb93464d65c07511da41e3bf7a8416db519b40b1c23
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
POSTGRES_INITDB_ARGS: '--data-checksums'
# Uncomment the DB_STORAGE_TYPE: 'HDD' var if your database isn't stored on SSDs
# DB_STORAGE_TYPE: 'HDD'
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
- ${DB_DATA_LOCATION}:/var/lib/postgresql/data
shm_size: 128mb
restart: {{ immich_restart_policy }}
volumes:
model-cache: