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

Установите Immich — самохостинговую систему управления фотографиями, настройте облачную галерею, распознавание лиц и коллекции. Полное руководство.

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

Введение в Immich

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

Требования к системе

Минимальные требования: процессор 2 ядра, RAM 4GB, диск 50GB SSD, сеть 100 Мбит/с. Оптимальная конфигурация: процессор 4+ ядер, RAM 8GB+, диск 500GB+ SSD, сеть 1 Гбит/с.

Подготовка системы

Установка Docker и Docker Compose, настройка пользователя, создание директории для Immich.

sudo apt update && sudo apt upgrade -y
sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
sudo usermod -aG docker ${USER}
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
mkdir -p ~/immich
cd ~/immich

Установка через Docker Compose

Рекомендуемый метод установки Immich с использованием Docker Compose.

git clone https://github.com/immich-app/immich.git
cd immich
cp .env.example .env
# Отредактируйте файл .env с нужными параметрами
docker-compose up -d

Первоначальная настройка

Создание учетной администратора, настройка базы данных и хранилища.

# Файл .env конфигурации
SERVER_PORT=3001
SERVER_URL=http://localhost:3001
DB_HOST_PORT=5432
DB_USERNAME=postgres
DB_PASSWORD=$(openssl rand -base64 32)
DB_DATABASE_NAME=immich
REDIS_HOST_PORT=6379
MACHINE_LEARNING_HOST_PORT=3003
MACHINE_LEARNING_ENABLED=true
UPLOAD_LOCATION=./upload

Базовое использование

Загрузка фотографий через веб-интерфейс и мобильное приложение, создание альбомов, поиск и фильтрация.

# Пример загрузки через веб-интерфейс
1. Войдите в Immich
2. Нажмите "Загрузить"
3. Выберите файлы
4. Настройте параметры
5. Нажмите "Загрузить"

Продвинутые функции

Распознавание лиц, временные шкалы, карты, работа с геоданными.

# Запуск распознавания лиц
1. Перейдите в "Настройки" → "Машинное обучение"
2. Убедитесь, что "Включить машинное обучение" включено
3. Настройте параметры
4. Перейдите в "Инструменты" → "Обновить лица"
5. Нажмите "Начать"

Мобильные приложения

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

Интеграция с API

Использование RESTful API Immich для интеграции с другими сервисами.

# Пример аутентификации
curl -X POST http://localhost:3001/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email": "user@example.com", "password": "password"}'

# Пример загрузки файла
curl -X POST http://localhost:3001/api/media/upload \
  -H "Authorization: Bearer ваш_токен" \
  -F "assetData=@/путь/к/файлу.jpg"

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

Стратегии и инструменты для создания резервных копий данных Immich.

# Бэкап базы данных
docker-compose exec db pg_dump -U postgres immich > backup.sql

# Бэкап медиафайлов
tar -czf immich-media-backup.tar.gz ./upload

Оптимизация производительности

Настройка производительности сервера, Docker и базы данных для работы с большими коллекциями фото.

# Оптимизация Docker
{
  "storage-driver": "overlay2",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  },
  "live-restore": true
}

# Оптимизация базы данных
CREATE INDEX CONCURRENTLY idx_assets_created_at ON assets(created_at);

Безопасность

Настройка SSL/TLS, базовые меры безопасности, мониторинг.

# Конфигурация Nginx для SSL
server {
    listen 80;
    server_name your-domain.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    server_name your-domain.com;
    ssl_certificate /path/to/fullchain.pem;
    ssl_certificate_key /path/to/privkey.pem;
    location / {
        proxy_pass http://localhost:3001;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Решение проблем

Распространенные проблемы с производительностью и хранением, методы их решения.

# Просмотр логов
docker-compose logs immich-server
docker-compose logs -f immich-server

# Диагностика базы данных
docker-compose exec db pg_isready
docker-compose exec db psql -U postgres -d immich -c "SELECT schemaname, tablename, pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename)) AS size FROM pg_tables WHERE schemaname = 'public' ORDER BY pg_total_relation_size(schemaname||'.'||tablename) DESC;"

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

Введение в Immich

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

Основные возможности:

  • Эффективное хранение медиафайлов с поддержкой дедупликации
  • Быстрый поиск по метаданным
  • Распознавание лиц и объектов
  • Временные шкалы и карты на основе геоданных
  • Поддержка мобильных приложений для iOS и Android
  • RESTful API для интеграции
  • Веб-интерфейс для управления

Immich использует микросервисную архитектуру, что обеспечивает гибкость и масштабируемость.

Требования и подготовка системы

Минимальные требования к аппаратному обеспечению

Базовая конфигурация:

  • Процессор: 2 ядра
  • RAM: 4GB
  • Диск: 50GB SSD
  • Сеть: 100 Мбит/с

Оптимальная конфигурация:

  • Процессор: 4+ ядер
  • RAM: 8GB+
  • Диск: 500GB+ SSD (или быстрая NVMe)
  • Сеть: 1 Гбит/с

Требования к ПО

  • ОС: Linux (рекомендуется Ubuntu 20.04/22.04, Debian 11)
  • Docker: 20.10+
  • Docker Compose: 1.29+
  • PostgreSQL: 13+ (для внешней инсталляции)
  • Redis: 6+ (для внешней инсталляции)

Подготовка системы

  1. Обновите систему:
sudo apt update && sudo apt upgrade -y
  1. Установите зависимости:
sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release
  1. Установите Docker:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
  1. Добавьте пользователя в группу docker:
sudo usermod -aG docker ${USER}
  1. Установите Docker Compose:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
  1. Создайте директорию для Immich:
mkdir -p ~/immich
cd ~/immich

Установка Immich различными методами

Установка через Docker Compose (рекомендуемый метод)

  1. Клонируйте репозиторий Immich:
git clone https://github.com/immich-app/immich.git
cd immich
  1. Создайте файл .env на основе .env.example:
cp .env.example .env
  1. Отредактируйте файл .env:
# Базовые настройки
SERVER_PORT=3001
SERVER_URL=http://localhost:3001

# База данных
DB_HOST_PORT=5432
DB_USERNAME=postgres
DB_PASSWORD=$(openssl rand -base64 32)
DB_DATABASE_NAME=immich

# Redis
REDIS_HOST_PORT=6379

# Машинное обучение
MACHINE_LEARNING_HOST_PORT=3003
MACHINE_LEARNING_ENABLED=true
MACHINE_LEARNING_LIBRARY_PATH=/models

# Хранилище
UPLOAD_LOCATION=./upload
  1. Запустите сервисы:
docker-compose up -d
  1. Дождитесь полной инициализации (5-15 минут).

  2. Откройте веб-интерфейс по адресу http://localhost:3001 и завершите настройку.

Установка через Kubernetes

  1. Установите Helm:
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
  1. Добавьте репозиторий Immich:
helm repo add immich https://immich-app.github.io/immich-charts/
helm repo update
  1. Установите Immich:
helm install immich immich/immich \
  --set postgresql.postgresqlPassword=$(openssl rand -base64 32) \
  --set auth.admin.email=admin@example.com \
  --set auth.admin.password=$(openssl rand -base64 12)
  1. Проверьте статус:
kubectl get pods -n default
  1. Получите URL:
kubectl get svc -n default

Установка из исходного кода

  1. Установите Node.js и npm:
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
  1. Установите PostgreSQL и Redis:
sudo apt install -y postgresql redis-server
  1. Настройте PostgreSQL:
sudo -u postgres createdb immich
sudo -u postgres psql -c "CREATE USER immich WITH PASSWORD '$(openssl rand -base64 32)';"
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE immich TO immich;"
  1. Клонируйте репозиторий:
git clone https://github.com/immich-app/immich.git
cd immich
  1. Установите зависимости:
npm install
  1. Создайте файл .env:
cp .env.example .env
  1. Отредактируйте .env:
# База данных
DB_HOST=localhost
DB_PORT=5432
DB_USERNAME=immich
DB_PASSWORD=$(openssl rand -base64 32)
DB_DATABASE_NAME=immich

# Redis
REDIS_HOST=localhost
REDIS_PORT=6379

# Сервер
SERVER_PORT=3001
SERVER_URL=http://localhost:3001
  1. Запустите миграции:
npm run migration:run
  1. Соберите проект:
npm run build
  1. Запустите сервер:
npm start

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

Настройка администратора

  1. Откройте веб-интерфейс по адресу http://localhost:3001
  2. Нажмите "Создать учетную запись"
  3. Заполните:
    • Имя пользователя
    • Email
    • Пароль (минимум 8 символов)
    • Подтверждение пароля
  4. Установите флажок "Сделать администратор"
  5. Нажмите "Создать учетную запись"

Конфигурация базы данных

  1. Откройте файл .env:
nano ~/immich/.env
  1. Настройте параметры:
# PostgreSQL
DB_HOST=db
DB_PORT=5432
DB_USERNAME=postgres
DB_PASSWORD=ваш_пароль
DB_DATABASE_NAME=immich

# Для внешней базы данных
# DB_HOST=внешний_хост
# DB_PORT=5432
# DB_USERNAME=immich_user
# DB_PASSWORD=сильный_пароль
# DB_DATABASE_NAME=immich_prod
  1. Перезапустите сервисы:
docker-compose down && docker-compose up -d

Настройка хранилища

  1. В .env настройте параметры:
# Локальное хранилище
UPLOAD_LOCATION=./upload

# S3-совместимое хранилище
# TYPE=s3
# AWS_ACCESS_KEY_ID=ваш_ключ
# AWS_SECRET_ACCESS_KEY=ваш_секретный_ключ
# AWS_REGION=ваш_регион
# AWS_S3_BUCKET=ваш_бакет
# AWS_S3_ENDPOINT=ваш_эндпоинт
  1. Для локального хранения:
mkdir -p ~/immich/upload
chmod 755 ~/immich/upload
  1. Перезапустите сервисы:
docker-compose down && docker-compose up -d

Базовое использование: загрузка и организация фотографий

Загрузка фотографий через веб-интерфейс

  1. Войдите в Immich
  2. Нажмите "Загрузить" в правом верхнем углу
  3. Выберите "Загрузить файлы"
  4. Выберите медиафайлы
  5. Настройте параметры:
    • Создать альбом (опционально)
    • Сохранить метаданные
    • Не загружать дубликаты
  6. Нажмите "Загрузить"

Загрузка через мобильное приложение

  1. Скачайте приложение:

    • iOS: App Store
    • Android: Google Play
  2. Запустите приложение и выберите "Создать новый сервер"

  3. Введите адрес сервера (например, http://192.168.1.100:3001)

  4. Введите учетные данные

  5. Настройте параметры загрузки:

    • Только через Wi-Fi
    • Качество изображений (оригинал/сжатый)
    • Автоматическая загрузка видео

Организация альбомов

  1. Перейдите в "Альбомы"
  2. Нажмите "Создать альбом"
  3. Дайте имя и добавьте описание
  4. Выберите фотографии
  5. Нажмите "Создать"

Поиск и фильтрация

  1. Используйте панель поиска

  2. Выберите параметры:

    • По тексту (названия, описания, метки)
    • По дате (диапазон)
    • По типу файлов
    • По размеру файла
    • По EXIF-данным
  3. Используйте расширенные фильтры:

    • Нажмите "Фильтры"
    • Выберите критерии
    • Нажмите "Применить"

Продвинутые функции: распознавание лиц, временная шкала, карта

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

  1. Войдите как администратор

  2. Перейдите в "Настройки" → "Машинное обучение"

  3. Убедитесь, что "Включить машинное обучение" включено

  4. Настройте параметры:

    • Точность распознавания
    • Минимальный размер лица
    • Автоматическое группирование
  5. Запустите распознавание:

    • Перейдите в "Инструменты" → "Обновить лица"
    • Нажмите "Начать"
    • Дождитесь завершения

Создание и просмотр временной шкалы

  1. Immich автоматически создает временную шкалу
  2. Для просмотра:
    • Откройте "Библиотеку"
    • Выберите "Временная шкала"
    • Навигируйтесь по годам, месяцам и дням

Использование карт

  1. Immich автоматически отображает фото с геоданными

  2. Для просмотра:

    • Откройте "Библиотеку"
    • Выберите "Карта"
    • Навигируйтесь по карте
  3. Для добавления геолокации:

    • Выберите фотографию
    • Нажмите "Редактировать"
    • Перейдите на вкладку "Карта"
    • Перетащите маркер или введите координаты
    • Сохраните

Мобильные приложения и веб-интерфейс

Официальные мобильные приложения

Основные функции:

  • Автоматическая загрузка новых фото
  • Просмотр и поиск медиафайлов
  • Создание альбомов и меток
  • Доступ к временным шкалам и картам
  • Кэширование для офлайн-работы

Настройка приложения:

  1. Введите адрес сервера
  2. Укажите учетные данные
  3. Настройте параметры загрузки:
    • Только через Wi-Fi
    • Качество изображений
    • Автоматическая загрузка видео

Функции веб-интерфейса

Основные разделы:

  • Библиотека: Просмотр всех медиафайлов с фильтрами
  • Альбомы: Управление альбомами
  • Люди: Просмотр распознанных лиц
  • Места: Просмотр фото на карте
  • Поиск: Расширенный поиск

Инструменты редактирования:

  • Обрезка
  • Коррекция яркости и контрастности
  • Поворот и отражение
  • Применение фильтров

Интеграция с другими сервисами и API

Использование API Immich

  1. Документация доступна по адресу http://ваш-сервер:3001/docs
  2. Основные эндпоинты:
    • /api/media - управление медиафайлами
    • /api/albums - работа с альбомами
    • /api/users - управление пользователями
    • /api/search - поиск

Пример аутентификации:

curl -X POST http://localhost:3001/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email": "user@example.com", "password": "password"}'

Пример загрузки файла:

curl -X POST http://localhost:3001/api/media/upload \
  -H "Authorization: Bearer ваш_токен" \
  -F "assetData=@/путь/к/файлу.jpg"

Интеграция с Nextcloud

  1. Установите плагин Immich для Nextcloud
  2. В настройках Nextcloud:
    • Укажите URL Immich-сервера
    • Введите API-ключ Immich
    • Настройте параметры синхронизации

Webhooks

  1. В "Настройках" → "Вебхуки"
  2. Создайте вебхук:
    • URL для уведомлений
    • Выберите события
    • Настройте формат данных

Пример уведомления:

{
  "event": "asset.created",
  "assetId": "uuid-файла",
  "userId": "id-пользователя",
  "timestamp": "2023-01-01T00:00:00.000Z"
}

Резервное копирование и восстановление данных

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

Методы:

  • Полное резервное копирование
  • Инкрементальное
  • Дифференциальное

Частота:

  • Ежедневное для изменений
  • Еженедельное для полного бэкапа
  • После обновлений системы

Инструменты для резервного копирования

Ручное резервное копирование:

# База данных
docker-compose exec db pg_dump -U postgres immich > backup.sql

# Медиафайлы
tar -czf immich-media-backup.tar.gz ./upload

Скрипт автоматического бэкапа:

#!/bin/bash

DATE=$(date +%Y-%m-%d_%H-%M-%S)
BACKUP_DIR="/путь/к/резервным/копиям"

mkdir -p $BACKUP_DIR/$DATE

# Бэкап базы данных
docker-compose exec -T db pg_dump -U postgres immich > $BACKUP_DIR/$DATE/database.sql

# Бэкап медиафайлов
docker run --rm -v immich_upload:/source -v $BACKUP_DIR/$DATE:/backup alpine tar czf /backup/media.tar.gz -C /source .

# Очистка старых бэкапов
find $BACKUP_DIR -type d -mtime +30 -exec rm -rf {} \;

Восстановление системы

Восстановление базы данных:

docker-compose down
docker-compose run -d --rm -v $BACKUP_DIR/latest/database.sql:/backup/database.sql postgres psql -U postgres -d immich -f /backup/database.sql
docker-compose up -d

Восстановление медиафайлов:

tar -xzf $BACKUP_DIR/latest/media.tar.gz -C /путь/к/директории/immich
chown -R 1000:1000 /путь/к/директории/immich/upload

Оптимизация производительности и безопасность

Оптимизация производительности

Оптимизация сервера:

  • Увеличьте RAM до 8GB+
  • Используйте SSD для базы данных и медиафайлов
  • Настройте Redis кэширование

Оптимизация Docker:

sudo nano /etc/docker/daemon.json
{
  "storage-driver": "overlay2",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  },
  "live-restore": true
}
sudo systemctl restart docker

Оптимизация базы данных:

docker-compose exec db psql -U postgres -d immich -c "VACUUM ANALYZE;"
CREATE INDEX CONCURRENTLY idx_assets_created_at ON assets(created_at);
CREATE INDEX CONCURRENTLY idx_assets_file_extension ON assets(fileExtension);

Настройка безопасности

Базовая безопасность:

  • Используйте сложные пароли
  • Ограничьте доступ по SSH
  • Регулярно обновляйте систему

Настройка SSL/TLS:

server {
    listen 80;
    server_name your-domain.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    server_name your-domain.com;

    ssl_certificate /path/to/fullchain.pem;
    ssl_certificate_key /path/to/privkey.pem;

    location / {
        proxy_pass http://localhost:3001;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}
sudo apt install certbot
sudo certbot --nginx -d your-domain.com

Мониторинг:

docker-compose logs immich-server
docker-compose logs -f immich-server

Проблемы и их решения

Распространенные проблемы

Проблемы с производительностью:

  • Симптомы: медленная загрузка, долгая обработка фото
  • Решения:
    • Увеличьте RAM
    • Используйте SSD
    • Оптимизируйте Docker
    • Уменьшите количество одновременных задач

Проблемы с хранением:

  • Симптомы: ошибки при загрузке, нет места
  • Решения:
    • Расширьте дисковое пространство
    • Настройте дедупликацию
    • Используйте внешнее хранилище
    • Включите сжатие

Решение проблем с производительностью

Оптимизация конфигурации:

# В .env
MAX_WORKERS=4
THUMBNAIL_SIZE=144
VIDEO_CONCURRENCY=1
docker-compose down && docker-compose up -d

Очистка:

docker-compose exec immich-server npm run cleanup
docker-compose exec redis redis-cli FLUSHDB

Отладка

Просмотр логов:

docker-compose logs
docker-compose logs immich-server
docker-compose logs db

Диагностика базы данных:

docker-compose exec db pg_isready
docker-compose exec db psql -U postgres -d immich -c "SELECT schemaname, tablename, pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename)) AS size FROM pg_tables WHERE schemaname = 'public' ORDER BY pg_total_relation_size(schemaname||'.'||tablename) DESC;"

Альтернативы Immich и сравнение

Обзор альтернатив

ФункцияImmichPhotoPrismLycheePiwigoNextcloud Photos
Распознавание лиц✓✓✓✓✓
Геотеги✓✓✓✓✓
Временная шкала✓✓✓✓✓
Карты✓✓✓✓✓
Видео✓✓✓✓✓
Плагины✓✓-✓✓
API✓✓-✓✓
Мобильное приложение✓✓✓-✓
Требования к ресурсамСредниеВысокиеНизкиеСредниеВысокие

Выбор решения

Выбирайте Immich, если:

  • Нужен современный интерфейс
  • Есть умеренно мощное железо
  • Важна мобильная интеграция
  • Нужен функциональный API
  • Цените быструю разработку

Выбирайте PhotoPrism, если:

  • У вас мощный сервер
  • Нужна лучшая организация фото
  • Важна приватность
  • Готовы платить за премиум

Выбирайте Lychee, если:

  • Ограниченные ресурсы
  • Нужен простой и быстрый сервис
  • Маленькая коллекция фото
  • Предпочитаете минимализм

Заключение и будущее развитие

Итоги руководства

Immich предоставляет мощную платформу для самохостинга фотографий с современным интерфейсом и丰富的 функциональностью. В этом руководстве рассмотрены:

  • Установка и настройка различными методами
  • Базовые и продвинутые функции управления медиафайлами
  • Интеграция с другими сервисами
  • Оптимизация производительности и безопасность
  • Решение распространенных проблем
  • Сравнение с альтернативами

Immich предлагает отличное соотношение функциональности и требований к ресурсам, что делает его привлекательной альтернатив Google Photos.

Будущее развитие Immich

Ожидаемые улучшения:

  • Улучшенное распознавание объектов
  • Поддержка RAW-форматов
  • Дополнительные форматы видео
  • Расширенное редактирование
  • Оптимизация для больших коллекций
  • Улучшенный поиск
  • Расширенные интеграции

Сообщество и поддержка

Официальные ресурсы:

Immich - надежный выбор для самохостинга фотографий с активным сообществом и постоянным развитием.

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