Immich — открытый фото- и видеоархив для домашнего сервера, замена Google Photos: мобильные приложения, распознавание лиц, альбомы и резервное копирование без облака третьих лиц.

В этой заметке поднимаем Immich за Traefik с автоматическим HTTPS. Предполагается, что у вас уже есть рабочий Traefik и Docker-сеть traefik_network.

Запуск Immich с Docker Compose через Traefik

1. Подготовка каталога

mkdir -p ~/immich/library
cd ~/immich

Каталог library будет хранить оригиналы фото и видео — вынесите его на большой диск, если библиотека большая.

2. Файл .env

cat > .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 на свой пароль.

3. 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

4. Запуск

docker compose up -d
docker compose ps

Откройте https://immich.yourdomain, создайте первого пользователя (администратора) и подключите мобильное приложение Immich.

Полезные замечания

  • Для ML-моделей нужен запас RAM (лучше от 4–8 ГБ свободной памяти).
  • Бэкапьте и library, и volume pgdata — иначе потеряете альбомы и метаданные.
  • Версию можно зафиксировать в .env (IMMICH_VERSION=v1.xxx.x), если не хотите сюрпризов от release.

Готово: фотоархив на своём сервере, с HTTPS через Traefik.