Immich: свой Google Photos в homelab

Обложка

Боль

Фото в чужом облаке — это «взято напрокат». Лимит 15 ГБ, подписки, внезапные изменения правил, да и приватность так себе. Хотелось, чтобы снимки жили дома, а не «где‑то у дяди».

Что такое Immich

Immich — self‑hosted менеджер фото и видео: – авто‑бэкап с телефона (iOS/Android); – локальный ML: распознавание лиц и объектов, поиск по ним; – альбомы и совместный доступ (семье/друзьям); – всё работает у вас, без чьих‑то клаудов и подписок.

Врезка: авто‑бэкап

Как подняли (кратко)

Инфраструктура — отдельный LXC‑контейнер (ID не публикуем), внутри docker compose, снаружи — reverse proxy на поддомене photos.example-lab.ru.

Минимальный compose (CPU‑вариант, дальше настраивайте под себя):

version: "3.9"
services:
  immich-server:
    image: ghcr.io/immich-app/immich-server:release
    depends_on: [immich-db, immich-redis, immich-ml]
    environment:
      - DB_HOST=immich-db
      - DB_PASSWORD=change-me
      - REDIS_HOST=immich-redis
    ports:
      - "2283:2283"  # HTTP API/UI
  immich-ml:
    image: ghcr.io/immich-app/immich-machine-learning:release
    # Для GPU добавьте проброс/драйверы; CPU тоже работает
  immich-db:
    image: postgres:14
    environment:
      - POSTGRES_PASSWORD=change-me
    volumes:
      - db:/var/lib/postgresql/data
  immich-redis:
    image: redis:7-alpine
volumes:
  db:

Reverse proxy (Caddy), прячем сервис за своим именем:

photos.example-lab.ru {
  encode zstd gzip
  reverse_proxy 198.51.100.15:2283
}

Примечания: – LXC: включить nesting, keyctl/cgroups v2; для GPU — аккуратно с группами устройств и безопасностью. – Бэкапы кладём на отдельный диск/том. – HTTPS — автоматический (Let’s Encrypt) на прокси.

Фишки в деле

Врезка: поиск и группировка

Грабли и нюансы

Итог

Immich закрывает боль «чужого» облака: фото у вас дома, поиск умный, бэкап автоматический. Поставили один раз — и забыли. А если вырастет — масштабируете железо, а не подписку.

Ссылки

#selfhosting