Post

Власний Google Photos без підписок: розгортаємо Immich у Homelab

Власний Google Photos без підписок: розгортаємо Immich у Homelab

🇬🇧 Read this article in English


Роками Google Photos був улюбленцем мільйонів користувачів: автоматичне вивантаження знімків із телефону, миттєвий пошук за об’єктами та обличчями рідних, створення спільних альбомів. Проте часи безлімітного простору минули. Сьогодні базова безкоштовна квота у 15 ГБ ділиться між поштою Gmail, Google Диском та фотографіями — і вичерпується за кілька місяців.

Далі починається підписочна пастка: щомісячна абонплата за додаткові гігабайти, постійне стиснення якості «для економії» та головне — питання приватності. Корпорації відкрито використовують терабайти особистих фотографій користувачів для навчання своїх комерційних моделей штучного інтелекту.

Вихід є — Immich. Це сучасна, неймовірно швидка та повнофункціональна заміна Google Photos, яку ви можете розгорнути на власному сервері за лічені хвилини.

Таймлайн фотогалереї Immich у темній темі Мал. 1. Сучасний інтерфейс веб-галереї Immich із хронологічною шкалою фотографій


Чому саме Immich?

Immich став справжньою сенсацією у світі селф-хостингу, оскільки він не поступається хмарним гігантам жодною функцією:

  • Оригінальна якість без стиснення: Зберігаються вихідні RAW-файли камер, живі фото Apple Live Photos, повнорозмірні HEIC та 4K-відео.
  • Офіційні мобільні додатки (iOS / Android): Автоматичне фонове резервне копіювання фотографій, щойно телефон підключається до Wi-Fi чи зарядки.
  • Локальний штучний інтелект: Вбудовані моделі комп’ютерного зору групують обличчя людей, знаходять домашніх улюбленців та дозволяють шукати по тексту («захід сонця на морі», «червона машина», «дитячий торт») без інтернету.
  • Багатокористувацький доступ: Ви можете створити ізольовані акаунти для кожного члена родини та налаштувати функцію «Партнерський доступ» (Partner Sharing), як у Google.
  • Інтерактивна карта світу: Перегляд усіх знімків із прив’язкою до геолокації на карті.

Архітектура стеку

Immich розроблений із прицілом на високу продуктивність та модульність. Стек складається з 4 ключових компонентів:

  1. immich-server — ядро бекенду та вебінтерфейс.
  2. immich-machine-learning — окремий мікросервіс машинного навчання для розпізнавання облич та семантичного пошуку.
  3. redis — черга фонових задач для обробки великих пакетів фотографій.
  4. database — PostgreSQL зі спеціальним розширенням pgvector, яке забезпечує блискавичний векторний пошук схожих зображень.

Крок 1. Підготовка сховища та конфігурації Docker Compose

Рекомендується створити окрему директорію для проєкту, наприклад /opt/immich:

1
sudo mkdir -p /opt/immich && cd /opt/immich

Завантажуємо офіційні файли конфігурації:

1
2
wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env

Налаштування файлу .env

Відкрийте файл .env у текстовому редакторі (nano .env) та налаштуйте критично важливі параметри:

1
2
3
4
5
6
7
8
9
10
11
12
# Папка, куди завантажуватимуться всі ваші оригінальні фотографії
# Можна вказати ZFS-пул TrueNAS чи окремий жорсткий диск
UPLOAD_LOCATION=/mnt/storage/photos

# Папка для зберігання системної бази даних PostgreSQL
DB_DATA_LOCATION=./postgres

# Часовий пояс вашого сервера
TZ=Europe/Kyiv

# Надійний пароль для бази даних
DB_PASSWORD=Super_Secure_Immich_Pass_2026!

Крок 2. Запуск стеку

Переконайтеся, що папка для фотографій створена та доступна для запису, після чого запустіть контейнери:

1
docker compose up -d

Сервер завантажить образи та запустить сервіси. Веб-інтерфейс Immich стане доступним на стандартному порту 2283 вашого сервера (наприклад, http://192.168.50.125:2283).


Крок 3. Перший вхід та реєстрація адміністратора

  1. Відкрийте браузер і перейдіть за адресою http://192.168.50.125:2283.
  2. Натисніть Getting Started та створіть перший обліковий запис адміністратора (Email, пароль та ім’я).
  3. Після входу відкриється головна галерея, готова приймати файли.

Крок 4. Налаштування HTTPS через Nginx Proxy Manager

Для коректної роботи мобільних додатків на смартфонах та підтримки безпечних технологій шифрування HTTPS є обов’язковим.

Ми скористаємося нашою зв’язкою AdGuard Home та Nginx Proxy Manager:

  1. DNS Rewrite в AdGuard:
    • Домен: photos.home.myhomelab.org
    • IP: IP вашого проксі-сервера (наприклад, 192.168.50.125).
  2. Proxy Host у Nginx Proxy Manager:
    • Domain Names: photos.home.myhomelab.org
    • Scheme: http
    • Forward Host/IP: IP-адреса хоста з Immich.
    • Forward Port: 2283
    • Websockets Support: Увімкнути!
    • SSL: Оберіть Wildcard-сертифікат *.home.myhomelab.org та увімкніть Force SSL і HTTP/2.
  3. ⚠️ Критичне налаштування для завантаження великих 4K-відео:
    У вікні редагування хоста в NPM перейдіть на вкладку Advanced і вставте такий рядок:
    1
    2
    3
    
    client_max_body_size 50000M;
    proxy_read_timeout 600s;
    proxy_send_timeout 600s;
    

    Без цього налаштування Nginx за замовчуванням блокуватиме будь-які файли більші за 1 МБ.


Крок 5. Підключення мобільних додатків

  1. Встановіть офіційний додаток Immich із App Store або Google Play.
  2. Під час першого відкриття вкажіть адресу вашого сервера: https://photos.home.myhomelab.org.
  3. Увійдіть за допомогою свого логіна та пароля.
  4. Надайте дозволи на доступ до фотографій і увімкніть Background Backup (Фонове копіювання).

Тепер кожен новий знімок автоматично та безпечно копіюватиметься на ваш домашній сервер, навіть коли додаток згорнутий.


Крок 6. Локальний штучний інтелект: Обличчя та Розумний пошук

Immich містить потужний локальний рушій комп’ютерного зору, який автоматично сканує бібліотеку у фоні:

Розпізнавання облич людей у Immich Мал. 2. Меню розпізнавання облич People в Immich із групуванням персонажів

  • Меню People: Усі знайдені обличчя людей групуються в окремі картки. Ви можете вказати ім’я людини («Олександр», «Марія»), і сервіс миттєво підтягне всі знімки за участю цієї особи.
  • Семантичний пошук CLIP: У рядку пошуку можна писати звичайні фрази природною мовою («кіт на дивані», «гори в тумані», «квиток на потяг») — модель розуміє зміст сцени без жодних текстових міток від користувача.

Крок 7. Резервне копіювання фотохмари

Ваші фотографії тепер зберігаються на власному сервері, тому захист від апаратних збоїв дисків — це ваша зона відповідальності:

  1. База даних: Раз на добу робіть дамп PostgreSQL:
    1
    
    docker exec -t immich_postgres pg_dumpall -c -U postgres > /opt/immich/backup_db.sql
    
  2. Папка фотографій: Налаштуйте бекап папки /mnt/storage/photos на зовнішнє сховище за допомогою утиліти restic або rclone (про які ми детально розповідали в попередніх статтях).

Висновок

Immich — це один із найдосконаліших продуктів у світі сучасного Self-Hosting. Він повністю позбавляє від потреби платити за хмарні сховища, повертає повний контроль над сімейним архівом і гарантує абсолютну конфіденційність для найцінніших спогадів вашого життя!

This post is licensed under CC BY 4.0 by the author.