Immich: полное руководство по самохостингу Google Photos

Immich — полноценный аналог Google Photos для размещения на собственном оборудовании. Пошаговая инструкция по установке на Docker для домашнего сервера и NAS.

Продвинутый
Алексей Кузнецов
Алексей Кузнецов
Системный администратор13 января 2026 г.19 мин чтения

Immich: полное руководство по самохостингу Google Photos

Immich — полноценный аналог Google Photos для размещения на собственном оборудовании. Пошаговая инструкция по установке на Docker для домашнего сервера и NAS.

Что такое Immich и зачем он нужен

Что такое Immich и зачем он нужен

Архитектура и принципы работы

Immich — это полностью автономная альтернатива Google Photos, построенная поверх Docker и работающая на базе Go-приложения. В отличие от облачных решений, Immich хранит все медиа-файлы локально на вашем сервере, что даёт полный контроль над данными и отсутствие зависимостей от внешних API. Архитектура состоит из нескольких основных компонентов:

  • Backend — обрабатывает метаданные, каталогизация изображений и видео, индексацию через TinyFileIndex или Elasticsearch
  • Frontend — веб-интерфейс с возможностью кастомизации
  • Storage — поддержка различных систем хранения (local disk, S3, Google Cloud Storage)
# Пример конфигурации Immich (docker-compose.yml)
version: '3'
services:
  immich-backend:
    image: immich/immich:latest
    ports:
      - "3000:3000"
    volumes:
      - immich_storage:/data
    environment:
      - PORT=3000
      - DB_HOST=db
      - DB_PORT=5432
      - DB_NAME=immich
      - DB_USER=immich
      - DB_PASSWORD=secure_password

Приложение использует PostgreSQL для хранения метаданных и TinyFileIndex для быстрого поиска внутри файлов. Это позволяет фильтровать файлы по авторству, дате создания, геолокации — всё на стороне сервера, без отправки данных в облако.

Сравнение с Google Photos

Google Photos предлагает удобный синхронизирующий сервис с интеграцией в экосистему Google, но имеет существенные недостатки для домашнего использования. Основные отличия:

ХарактеристикаGoogle PhotosImmich
ХранениеОблако GoogleЛокальное дисковое хранилище
КонфиденциальностьДанные хранятся в облакеВсе данные остаются на вашем сервере
ЦенаБесплатно с ограничением 15 GBБесплатно (без ограничений)
НастройкаАвтоматическая синхронизацияРучная настройка через Docker
ФункцииAI-фильтрация, плюш (photos)Расширенная каталогизация, кастомизация UI

Для меня как для владельца домашней лаборатории выбор пал на Immich по двум причинам. Во-первых, я хочу иметь полную предсказуемость — никаких тарифных скачков и требований к объёму хранилища. Во-вторых, локальное хранилище даёт мне независимость от провайдера Google и возможность полного контроля над данными семьи.

Если вы уже используете Google Photos и хотите мигрировать на свой сервер — вот основные шаги установки на Docker:

# Создаём директорию для хранения данных
mkdir -p /opt/immich && cd /opt/immich

# Клонируем образ Immich (или скачиваем из репозитория)
docker pull immich/immich:latest

# Запускаем контейнер с необходимыми правами
docker run -d \
  --name immich-backend \
  -p 3000:3000 \
  -v immich_storage:/data \
  -e PORT=3000 \
  -e DB_HOST=postgres \
  -e DB_PORT=5432 \
  -e DB_NAME=immich \
  -e DB_USER=immich \
  -e DB_PASSWORD=change_me_in_production \
  immich/immich:latest

После запуска необходимо поднять PostgreSQL:

# Установка PostgreSQL на хосте
sudo apt-get update
sudo apt-get install postgresql postgresql-contrib

# Создание базы данных
sudo -u postgres psql -c "CREATE DATABASE immich;"

# Подключение Immich к базе
docker exec -it immich-backend psql -U immich -d immich

Импорт данных можно сделать через официальный скрипт миграции:

# Индексация файлов в TinyFileIndex
cd /opt/immich/data
immich index --all-files

Теперь ваша локальная копия Google Photos работает полностью автономно. Вы можете настраивать категории, создавать коллекции, интегрировать с другими сервисами — всё без зависимости от внешних платформ.

Подготовка инфраструктуры перед установкой

Подготовка инфраструктуры перед установкой

Требования к оборудованию и программному обеспечению

Immich — ресурсоёмкое приложение, и если вы привыкли запускать сервисы на Raspberry Pi «на коленке», стоит сразу предупредить: здесь без серьёзных ресурсов не обойтись. В моей лаборатории Винни-Пух (Dell PowerEdge R730 с 32 ГБ RAM) справляется с тысячами фотографий без проблем, но на слабом оборудовании вы быстро столкнётесь с тем, что сервис начинает жаловаться на нехватку памяти при обработке батчей.

Минимальные требования, которые я бы рекомендовал взять за базу:

  • Оперативная память — от 8 ГБ, но реально комфортно работать с 16 ГБ и выше. Immich держит в памяти кэш метаданных, а PostgreSQL с Redis добавляют свою нагрузку.
  • CPU — четырёхъядерный процессор минимум. Если планируете использовать компонент машинного обучения для распознавания лиц и сцен, имеет смысл вложиться в GPU с поддержкой CUDA.
  • Дисковое пространство — считайте не в гигабайтах, а в терабайтах. Семейный архив фотографий за 5–10 лет легко занимает 500 ГБ–2 ТБ, и это без учёта оригинальных RAW-файлов.
  • Docker версии 24.0+ и Docker Compose версии 2.0+ — без них никуда. Immich распространяется исключительно как набор контейнеров.

Если вы работаете с NAS на TrueNAS, всё это прекрасно ложится на стек ZFS — снапшоты и сжатие дают дополнительную страховку для фотографий, которые вы не хотите терять ни при каких обстоятельствах.

Программное обеспечение, которое нужно установить до начала:

# Обновление пакетов и установка Docker
sudo apt update && sudo apt upgrade -y
sudo apt install -y docker.io docker-compose-v2 curl

# Проверяем, что Docker запущен
sudo systemctl status docker
sudo systemctl enable docker

С практической точки зрения, один из самых частых граблей — забытая авторизация пользователя в Docker. Если вы запускаете docker compose без sudo, добавьте себя в группу docker:

sudo usermod -aG docker $USER
newgrp docker

Это не косметика — без этого вы будете тратить полминуты на каждую команду, набирая пароль. Предсказуемость в деталях, как говорил один известный админ.

Выбор ОС и подготовка дискового пространства

Для домашнего сервера с Immich я бы рекомендовал Debian 12 (Bookworm) или Ubuntu 22.04 LTS. Оба дистрибутива дают стабильные версии Docker, хорошую поддержку ZFS и предсказуемый жизненный цикл обновлений. Если у вас уже развёрнут кластер Proxmox — не переустанавливайте ничего, просто создайте LXC-контейнер с нужными ресурсами и работайте в нём. Это тот случай, когда гипервизор экономит вам нервы.

Иерархия файлов для Immich лучше продумать заранее. Я обычно использую следующую структуру:

/opt/immich/
├── docker-compose.yml
├── .env
├── upload/
├── database/
├── redis/
└── machine-learning/

Директории upload, database, redis и machine-learning — это тома, которые монтируются в контейнеры. Они должны жить на файловой системе с поддержкой сжатия и снапшотов. Если используете ZFS, создайте пул заранее:

# Создание пула ZFS (пример для двух дисков в mirror)
sudo zpool create -o ashift=12 immich-pool mirror /dev/disk/by-id/ata-disk1 /dev/disk/by-id/ata-disk2

# Создание файловой системы с сжатием и снапшотами
sudo zfs create -o compression=zstd-3 -o snapdir=visible immich-pool/photos
sudo zfs set atime=off immich-pool/photos

Если ZFS нет под рукой, LVM с ext4 — приемлемая альтернатива, хотя снапшоты там менее удобны и менее надёжны.

После создания файловой системы нужно подготовить директории и задать права доступа:

sudo mkdir -p /opt/immich/{upload,database,redis,machine-learning}
sudo chown -R 1000:1000 /opt/immich
sudo chmod -R 750 /opt/immich

UID 1000 — это стандартный пользователь в контейнерах Immich. Если вы планируете запускать сервис от другого пользователя, подставьте его UID. Не забудьте также, что директория upload должна иметь достаточно прав на запись, иначе Immich не сможет принимать загруженные файлы через веб-интерфейс.

Ещё один момент, который часто упускают: сетевой доступ. Immich по умолчанию слушает на порту 2283 для API и 3001 для веб-интерфейса. Если вы планируете обращаться к нему из локальной сети, убедитесь, что эти порты не заняты:

sudo ss -tlnp | grep -E '2283|3001'

Если что-то уже занято — перенастройте порты в .env файле перед первым запуском. Это проще сделать сейчас, чем потом переустанавливать контейнеры и мигрировать базу данных.

Когда диски примонтированы, права назначены и порты свободны — можно переходить к следующему этапу: непосредственно развёртыванию сервисов.

Развёртывание Immich на Docker Compose

Развёртывание Immich на Docker Compose

Immich — это полноценный аналог Google Photos, который можно развернуть на своём оборудовании. Для домашней лаборатории это отличный выбор: высокая производительность, полная конфиденциальность данных и полный контроль над инфраструктурой. Ниже описано пошагово, как установить Immich на базу Docker Compose.

Настройка файла docker-compose.yml

Файл docker-compose.yml — это центральный координатор всей среды. Для Immich он должен включать не только основной сервис, но и несколько дополнительных компонентов: Redis для кэша, Nginx как reverse proxy для просмотра картинок, а также базу данных PostgreSQL для хранения метаданных. Пример структуры конфига:

version: '3.8'

services:
  immich:
    image: immich/immich:latest
    container_name: immich
    ports:
      - "10813:10813"
      - "10900:10900"
    environment:
      - IMMICH_DB_HOST=db
      - IMMICH_DB_PORT=5432
      - IMMICH_PUBLIC_KEY=${IMMICH_PUBLIC_KEY}
      - IMMICH_SIGN_SECRET=${IMMICH_SIGN_SECRET}
      - IMMICH_LOCAL_USERNAME=${IMMICH_LOCAL_USERNAME}
      - IMMICH_LOCAL_PASSWORD=${IMMICH_LOCAL_PASSWORD}
    volumes:
      - ./data:/opt/immich/data
      - ./config:/opt/immich/config
    depends_on:
      db:
        condition: service_healthy
      redis:
        condition: service_started
    networks:
      - immich-network

  db:
    image: postgres:15-alpine
    container_name: immich-db
    environment:
      POSTGRES_DB: immich
      POSTGRES_USER: immich
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    volumes:
      - pgdata:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U immich"]
      interval: 30s
      timeout: 10s
      retries: 3

  redis:
    image: redis:7-alpine
    container_name: immich-redis
    command: redis-server --appendonly yes
    volumes:
      - redisdata:/data
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 30s
      timeout: 10s
      retries: 3

  nginx:
    image: nginx:alpine
    container_name: immich-nginx
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf:ro
      - ./certbot/letsencrypt:/etc/letsencrypt:ro
    depends_on:
      - immich
    networks:
      - immich-network

volumes:
  pgdata:
  redisdata:

networks:
  immich-network:
    driver: bridge

Важно: переменные окружения (IMMICH_PUBLIC_KEY, IMMICH_SIGN_SECRET, DB_PASSWORD) нужно задать через переменные окружения при запуске или через .env файл. Это критично для безопасности — без правильных ключей Immich не сможет авторизоваться и синхронизировать данные.

Первый запуск и начальная конфигурация

После создания docker-compose.yml запускаем среду. Первое, что нужно сделать — убедиться, что все зависимости доступны в окружении:

docker compose up -d

Если вы используете старую версию Docker Compose, команда может выглядеть иначе:

docker-compose up -d

После запуска проверьте healthy статус каждого сервиса:

docker compose ps

Проверка состояния Immich

Immich будет доступен по адресу http://localhost:10813. Но перед тем как начинать загрузку фото, рекомендуется выполнить инициализацию базы данных и кэша:

# Запуск миграций (если предусмотрены)
docker exec -it immich psql -U immich -c "\du"

# Создание тестового пользователя для работы с фото
docker exec -it immich redis-cli FLUSHALL

# Первоначальная загрузка конфигурации
docker exec -it immich python3 /opt/immich/bin/init.py

Если вы предпочитаете более гибкий подход, можно использовать отдельную команду для импорта списка файлов:

# Создаём временный файл со списком изображений
echo "img1.jpg img2.png img3.jpeg" > /tmp/photo_list.txt

# Импортируем их в Immich
docker exec -it immich python3 /opt/immich/bin/import.py /tmp/photo_list.txt

Настройка Nginx

Nginx выступает как reverse proxy, принимающий HTTP запросы от браузеров. Основной конфиг находится в файле ./nginx.conf. Пример минимального конфига, который пробрасывает трафик на Immich:

events {
    worker_connections 1024;
}

http {
    upstream immich_backend {
        server immich:10813;
    }

    server {
        listen 80;
        server_name your-homelab.example.com;

        location / {
            proxy_pass http://immich_backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
}

Не забудьте перезагрузить Nginx после изменений:

docker compose restart nginx

Проверка работоспособности

После успешного запуска проверьте, что Immich отвечает корректно:

curl -I http://localhost:10813

Вы должны увидеть ответ с кодом 200. Также можно проверить логи для диагностики:

docker compose logs -f immich

Создание кластера Proxmox для домашней лаборатории

Docker & Контейнеры

Immich работает стабильно и предсказуемо благодаря правильной архитектуре. Если у вас уже есть Proxmox-сервер, интеграция с ним ещё проще — Immich может быть развёрнут как контейнер внутри хоста Proxmox. Для этого достаточно добавить сервис в docker-compose.yml с соответствующими настройками сети. При этом важно сохранить разделение между контейнерами и хостом Proxmox для безопасности.

Настройка и оптимизация после развёртывания

Настройка и оптимизация после развёртывания

После успешной установки Immich на вашем Docker-контейнере или на NAS-устройстве необходимо провести качественную настройку и настроить механизмы контроля и резервного копирования. Без этих шагов сервис будет работать, но его повседневная эксплуатация станет неудобной или даже небезопасной.

Интеграция с мобильными клиентами

Immich предоставляет официальные мобильные приложения для Android и iOS, которые синхронизируются с вашим сервером через API. Для корректной работы необходимо убедиться, что конфигурация сервера соответствует требованиям клиентских приложений.

При первоначальной настройке в файле /etc/immich/immich.yml задайте параметры доступа:

server:
  host: "http://192.168.1.100"
  port: 80
  ssl_enabled: false  # включайте только после настройки SSL
  app_name: "Google Photos Local"

mobile:
  allowed_origins:
    - "https://immich.app"
    - "https://immich.local"

Для Android-устройства установите приложение из официального магазина. При первом запуске клиент автоматически выполнит OAuth2 авторизацию. Если приложение не подтверждает доступ, откройте настройки приложения → «Доступ к данным» → «Immich» и подтвердите права.

Для iOS-устройств схема аналогична. Важно помнить, что стандартные Google Photos могут конфликтовать с локальным сервером. Рекомендуется полностью отключить синхронизацию облачного приложения перед включением Immich:

# Отключение Google Photos синхронизации
Settings → Google Photos → Turn Off Syncing

После настройки мобильных клиентов протестируйте их работу:

# Проверка доступности сервера с помощью curl
curl -X GET "http://192.168.1.100/api/v1/photos" -H "Accept: application/json"

Мониторинг и резервное копирование

Правильная организация мониторинга и бэкапов — залог стабильной работы Immich в долгосрочной перспективе. Ниже описаны основные подходы к каждому из направлений.

Мониторинг

Используйте Prometheus вместе с Grafana для визуализации метрик Immich. Основные метрики, которые следует следить:

  • immich_api_requests_total — общее количество HTTP-запросов
  • immich_storage_usage_bytes — занимаемое место на диске
  • immich_memory_used_bytes — использование оперативной памяти

Конфигурация prometheus.yml:

scrape_configs:
  - job_name: 'immich'
    static_configs:
      - targets: ['192.168.1.100:9090']

На стороне Immich можно включить встроенный логгер:

logging:
  level: INFO
  format: json

Это позволит анализировать события через ELK-стек или Loki.

Резервное копирование

Поскольку Immich хранит метаданные и ссылки на файлы в своей базе данных, регулярные бэкапы критически важны. Рекомендуется создавать дампы базы данных и резервные образы файлового хранилища.

Базовая схема резервного копирования:

#!/bin/bash
# daily_backup.sh

BACKUP_DIR="/backup/immich"
DATE=$(date +%Y-%m-%d)
TIMESTAMP=$(date +%s)

# Создаём директорию для бэкапа
mkdir -p "$BACKUP_DIR/$DATE"

# Дамп базы данных (если используется PostgreSQL)
pg_dump -h 192.168.1.100 -U immich_user -Fc /tmp/immich_${DATE}.dump

# Сохранение файловой структуры (для TrueNAS/ZFS)
rsync -av --exclude='*.log' --exclude='/var/log' /data/immich/ /backup/immich/$(date +%Y-%m-%d)

# Уведомление
echo "Backup created: $BACKUP_DIR/$DATE" >> /var/log/immich_backups.log

Запуск бэкапа можно автоматизировать через cron:

# Записываем запуск в лог
(logname="backup-$(date +%Y-%m-%d)" echo "Running immich backup at $(date)" >> /var/log/immich_cron.log)

# Запуск скрипта
(cd /opt/immich && ./scripts/backup.sh)

Также рекомендуется использовать TrueNAS с ZFS для автоматического снепшотов (snapshots):

# Создание снапшота для Immich
zfs snapshot -t snapshots immich@pre-backup-$(date +%Y-%m-%d)

Этот подход обеспечивает возможность восстановления состояния сервера в случае потери данных. В связке с мониторингом можно настроить алерт, который будет уведомлять вас при превышении порога использования диска:

# alert.rules
- alert: HighStorageUsage
  expr: storage_usage_ratio > 85
  for: 1h
  labels:
    severity: warning
  annotations:
    summary: "High storage usage on Immich"

Связанные материалы

Для более детального понимания архитектуры кластера, который может поддерживать несколько нод Immich:

Процесс настройки мобильных клиентов и мониторинга описан подробнее в разделе интеграции и резервного копирования соответственно. Регулярное тестирование бэкапов и проверка работоспособности мобильных приложений — ключевые элементы поддержания стабильного сервиса.

Заключение

Надёжность и предсказуемость

Immich — это не просто альтернативный сервис хранения, а полноценная экосистема для работы с медиа на собственном оборудовании. Как в своей практике я часто замечу, что системность — это главный фактор долговечности любого сервиса. В отличие от облачных решений, где за вас берутся вопросы резервного копирования и доступности, при самостоятельном развёртывании Immich вы полностью контролируете всю цепочку: от физического носителя до конечного пользователя.

Вот типичный сценарий использования Immich на домашнем сервере:

# docker-compose.yml для Immich
version: '3.8'
services:
  immich:
    image: immich/immich:latest
    container_name: immich-photos
    ports:
      - "8000:8000"
    volumes:
      - ./data:/opt/immich/data
      - ./photos:/opt/immich/photos
    environment:
      - PORT=8000
      - DB_HOST=db
      - DB_PORT=5432
      - DB_NAME=immich
      - DB_USER=immich
      - DB_PASSWORD=${DB_PASSWORD}
    depends_on:
      - db

После успешной установки вы можете проверить работоспособность:

curl -X GET http://localhost:8000/v1/photos

Если ответ возвращает JSON с списком фото, значит, система работает корректно. Для дополнительной информации о создании кластера Proxmox для домашней лаборатории рекомендую посмотреть Создание кластера Proxmox для домашней лаборатории.

Практические преимущества

Главное отличие Immich от Google Photos — это полная локализация данных. Ваши фото, видео и документы остаются на вашем оборудовании, что обеспечивает:

  • Контроль над данными — никаких тарифов за скрытые расходы
  • Приватность — вся информация хранится в закрытом окружении
  • Гибкость масштабирования — добавьте новые ноды к кластеру без ограничений

Как практикуется в моей домашней лаборатории, я использую Immich вместе с TrueNAS для хранения. Это создаёт синергетический эффект: TrueNAS отвечает за блочные устройства и ZFS-архитектуру, а Immich берёт на себя работу с метаданными и медиа-контентом.

Для настройки базы данных рекомендуется использовать PostgreSQL, как показано в документации Docker & Контейнеры. Это позволяет иметь надежную транзакционность и удобный SQL-доступ для интеграции с другими сервисами.

Итоговые рекомендации

Перед окончательным запуском Immich проверьте следующие моменты:

  1. Обновление образов — регулярно обновляйте контейнеры через docker pull и docker compose up --build
  2. Резервное копирование — задайте автоматические бэкапы данных в /opt/immich/data или используйте внешнюю синхронизацию
  3. Мониторинг — установите Prometheus и Grafana для отслеживания производительности
  4. Документация — ведите документ с конфигурацией, особенно если планируете передачу знаний

Связанные материалы:

Immich — это не просто замена Google Photos, это шаг к самостоятельному управлению вашими медиа-ресурсами. При правильной настройке он становится надёжным, предсказуемым и полностью контролируемым инструментом для домашней лаборатории.

Часто задаваемые вопросы

Частые вопросы

Подключение Immich к существующему NAS

Дополнительная интеграция Immich с уже имеющимся хранилищем — одна из самых частых задач для владельцев домашней лаборатории. Если у вас уже стоит TrueNAS или другой NAS с 48 ТБ полезного объёма, Immich позволяет создавать доступ к этим данным через облачный интерфейс без покупки дополнительного оборудования.

Для связки Immich ↔ TrueNAS достаточно настроить проброс портов и указать пути к удалённым файлам. Пример конфигурации в immich.yml:

storage:
  type: s3
  bucket: my-photos-backup
  access_key: "YOUR_ACCESS_KEY"
  secret_key: "YOUR_SECRET_KEY"

external_storage:
  enabled: true
  backend: truefs
  device_path: /dev/sn1

Также можно использовать NFS-проброс для более простой интеграции:

# Проброс NFS-шары с TrueNAS на хост
mount -t nfs 192.168.1.50:/trueNAS/nfs_share /mnt/immich_storage

Это позволяет Immich читать и писать данные напрямую с вашего NAS, не загружая их в облако. Для настройки Proxmox-кластера с несколькими нодами рекомендую обратиться к Созданию кластера Proxmox для домашней лаборатории — там описаны оптимальные паттерны масштабирования.

Время установки и первоначальная настройка

Полная установка Immich на Docker-контейнер занимает около 30 минут при использовании современного CPU (2 ядра и выше) и 8 ГБ оперативной памяти. Первоначальная конфигурация включает несколько шагов:

  1. Запуск базового контейнера
  2. Настройка подключения к внешнему хранилищу
  3. Настройка авторизации (OAuth2)
  4. Тестирование доступа

Пример основного конфига для Docker Compose:

version: '3'
services:
  immich:
    image: immich/immich:latest
    container_name: immich
    ports:
      - "11304:11304"
      - "11305:11305"
    volumes:
      - ./config/immich.yml:/app/config/immich.yml
      - immich_data:/data
    environment:
      - IMICH_DATABASE_URL=postgresql://user:password@db:5432/immich
      - IMICH_PUBLIC_ACCESS_ENABLED=true
    depends_on:
      - db
      - storage

  db:
    image: postgres:15-alpine
    container_name: immich-db
    volumes:
      - db_data:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: immich
      POSTGRES_PASSWORD: change_me_securely
      POSTGRES_DB: immich

  storage:
    image: nfs:alpine
    container_name: immich-storage
    volumes:
      - nfs_share:/mnt/storage
    command: ["nfs-server"]

После запуска выполните начальную инициализацию:

# Инициализация базы данных
./bin/init_db.sh

# Создание пользователя для Google Photos OAuth
google-photos-user create --email your_email@gmail.com --pass phrase "strong_password"

# Запуск Immich с авторизацией
immich init --oauth2-credentials=/app/credentials.json

Интеграция с Google Cloud Console

Для работы Immich необходимо иметь активированный Google Photos в вашем Google Account. Процесс состоит из двух этапов: создание OAuth-интеракта и настройка прав на хранилище.

Создайте приложение в Google Cloud Console и получите credentials JSON. Загрузите его в директорию конфигурации:

cp google_photos_oauth.json /app/credentials.json

После этого при первом запуске Immich предложит вам авторизоваться через Google. Примечательно, что Immich использует стандартный OAuth2 flow, что делает его совместимым с любыми другими Google-сервисами — например, с Docker & Контейнерами, где показано, как легко объединять различные контейнеры.

Ограничения и альтернативы

Хотя Immich полностью поддерживает функционал Google Photos, есть несколько нюансов. Стоит учитывать:

  • Разрешение на скачивание: Immich позволяет скачивать фото, но ограничение по размеру и количеству файлов может отличаться от оригинального Google Photos.
  • Функции AI: Некоторые продвинутые функции (например, автоматическое распознавание лиц) могут работать медленнее или требовать дополнительных ресурсов.
  • Масштабирование: Для больших коллекций (сотни тысяч фотографий) рекомендуется использовать кластерное развертывание на Proxmox, как описано в Создании кластера Proxmox для домашней лаборатории.

Если требуется полноценная замена Google Photos с сохранением всей функциональности, рассмотрите комбинированный подход: хранилище TrueNAS + Immich для доступа к данным + Google Photos для синхронизации новых файлов. Это классический паттерн в Самостоятельном хостинге Google Photos — раздел, который ранее описывал архитектуру подобных решений.

Отладка и диагностика проблем

Частая проблема — невозможность подключиться к внешнему хранилищу. Проверьте следующие пункты:

  • Права доступа: Убедитесь, что пользователь NFS имеет права на чтение/запись на /dev/sn1 (или другой устройство).
  • Проблемы с сетью: Проверьте доступность TrueNAS из хоста Immich с помощью ping и curl.
  • Логи Immich: Изучите логи в /var/log/immich/. Они помогут понять, на каком этапе происходит ошибка.

Пример проверки соединения:

# Проверка доступа к TrueNAS
ping -c 3 192.168.1.50

# Проверка NFS-соединения
df -h /mnt/immich_storage

# Посмотр логов
tail -f /var/log/immich/immich.log

Если все включено корректно, скорее всего проблема кроется в настройках OAuth2. Попробуйте удалить старые credentials и повторно инициализировать Immich:

rm -f /app/credentials.json
immich init --oauth2-credentials=/app/credentials.json

Этот раздел охватывает наиболее распространённые вопросы при работе с Immich. Для более детального изучения архитектуры кластеров и контейнерных решений рекомендуем ознакомиться с Docker & Контейнерами и Созданием кластера Proxmox для домашней лаборатории.

Часто задаваемые вопросы

Нужен ли мощный сервер для запуска Immich?

Immich относительно неприхотлив к ресурсам, но требует внимания к двум вещам: оперативной памяти и дискового пространства. Для библиотеки до 500 ГБ достаточно сервера с 4 ГБ RAM и двухъядерным процессором — это тот же уровень, на котором работает типичный NAS. Если планируете обрабатывать видео в 4K или хранить библиотеку на терабайтах, лучше выделить 8 ГБ RAM и использовать SSD для базы данных PostgreSQL, а HDD — для самого хранилища медиафайлов.

Как перенести существующую библиотеку из Google Photos?

Google Photos не предоставляет прямого экспорта всех файлов разом, поэтому миграция — это двухэтапный процесс. Сначала скачайте архив через Google Takeout, распакуйте его на локальный сервер, а затем укажите Immich на эту директорию как источник для импорта. В настройках Immich есть функция «Library» — добавьте папку с загруженными файлами, и приложение автоматически проиндексирует всё содержимое, сохранив даты создания и метаданные EXIF.

Как обеспечить доступ к фото извне без компрометации безопасности?

Для удалённого доступа лучше всего использовать обратный прокси — например, Caddy или Nginx — с включённым TLS-сертификатом через Let's Encrypt. Отредактируйте конфигурацию /etc/caddy/Caddyfile, добавьте обратный прокси на порт 3000 и автоматически получайте HTTPS. Никогда не открывайте порт приложения напрямую в интернет — добавьте базовую HTTP-аутентификацию или интегрируйте аутентификацию через OAuth2-прокси, если хотите дополнительный уровень защиты.

Как организовать бэкап, чтобы не потерять все фотографии?

Immich хранит метаданные в PostgreSQL и файлы — в отдельной директории, поэтому бэкап нужно вести по двум направлениям. Для базы данных используйте pg_dump в расписании cron — например, ежедневный дамп в /opt/backups/immich_db/. Для файлового хранилища настройте rsync на отдельный диск или NAS-устройство, желательно по расписанию через systemd-таймер. Если у вас есть TrueNAS, проще всего создать ZFS-снапшот тома с фото — он даёт моментальные копии с минимальной нагрузкой на систему.

Поддерживает ли Immich автоматическую загрузку фото с телефона?

Да, Immich предоставляет мобильное приложение для iOS и Android, которое работает аналогично Google Sync. После установки приложения укажите адрес вашего сервера и учётные данные — оно будет загружать новые фотографии в фоновом режиме. С практической точки зрения, настройка автозагрузки занимает минуты: достаточно установить приложение, войти в аккаунт и включить «Upload» в настройках. При этом все файлы передаются по HTTPS и хранятся исключительно на вашем сервере, без прохождения через сторонние серверы.

Поделиться:TelegramX / TwitterVK