Immich — открытый фото- и видеоархив для домашнего сервера, замена Google Photos: мобильные приложения, распознавание лиц, альбомы и резервное копирование без облака третьих лиц.
В этой заметке поднимаем Immich за Traefik с автоматическим HTTPS. Предполагается, что у вас уже есть рабочий Traefik и Docker-сеть traefik_network.
mkdir -p ~/immich/library
cd ~/immich
Каталог library будет хранить оригиналы фото и видео — вынесите его на большой диск, если библиотека большая.
.envcat > .env << 'EOF'
UPLOAD_LOCATION=./library
DB_PASSWORD=change_me_strong_password
DB_USERNAME=immich
DB_DATABASE_NAME=immich
IMMICH_VERSION=release
EOF
Замените change_me_strong_password на свой пароль.
docker-compose.ymlОфициальный стек Immich включает API, микросервисы, Redis и PostgreSQL. Ниже — рабочий вариант с ярлыками Traefik (замените immich.yourdomain на свой хост):
name: immich
services:
immich-server:
container_name: immich_server
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
volumes:
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- /etc/localtime:/etc/localtime:ro
env_file:
- .env
depends_on:
- redis
- database
restart: unless-stopped
labels:
- traefik.enable=true
- traefik.http.middlewares.immich_https.redirectscheme.scheme=https
- traefik.http.routers.immich.entrypoints=web
- traefik.http.routers.immich.middlewares=immich_https@docker
- traefik.http.routers.immich.rule=Host(`immich.yourdomain`)
- traefik.http.routers.immich_https.entrypoints=websecure
- traefik.http.routers.immich_https.rule=Host(`immich.yourdomain`)
- traefik.http.routers.immich_https.tls=true
- traefik.http.routers.immich_https.tls.certresolver=le
- traefik.http.services.immich.loadbalancer.server.port=2283
networks:
- default
- traefik_network
immich-machine-learning:
container_name: immich_machine_learning
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
volumes:
- model-cache:/cache
env_file:
- .env
restart: unless-stopped
redis:
container_name: immich_redis
image: redis:7-alpine
restart: unless-stopped
database:
container_name: immich_postgres
image: tensorchord/pgvecto-rs:pg16-v0.2.0
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
POSTGRES_INITDB_ARGS: '--data-checksums'
volumes:
- pgdata:/var/lib/postgresql/data
restart: unless-stopped
volumes:
model-cache:
pgdata:
networks:
traefik_network:
external: true
docker compose up -d
docker compose ps
Откройте https://immich.yourdomain, создайте первого пользователя (администратора) и подключите мобильное приложение Immich.
library, и volume pgdata — иначе потеряете альбомы и метаданные..env (IMMICH_VERSION=v1.xxx.x), если не хотите сюрпризов от release.Готово: фотоархив на своём сервере, с HTTPS через Traefik.