Самостоятельное размещение Immich: частное фотооблако

Ваши фотографии на самоуправляемом AI-облаке

Содержимое страницы

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

Так же, как Управление личными знаниями помогает вам организовывать и сохранять свои мысли и информацию, Immich помогает вам организовывать и сохранять ваши визуальные воспоминания.

immich

Что такое Immich?

Immich — это открытое программное обеспечение с открытым исходным кодом, альтернатива коммерческим облачным сервисам для фотографий, таким как Google Photos и iCloud. Созданное с использованием современных технологий, включая TypeScript, PostgreSQL и машинное обучение, Immich предлагает функциональную платформу для резервного копирования, организации и просмотра вашей коллекции фотографий и видео.

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

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

Автоматическое резервное копирование с мобильных устройств: Нативные приложения для iOS и Android обеспечивают автоматическое резервное копирование в фоновом режиме, аналогичное Google Photos. Ваши фотографии защищены моментально после их съемки.

Поиск с использованием ИИ: Используя модели машинного обучения, включая CLIP и распознавание лиц, Immich позволяет выполнять семантический поиск. Ищите “закат на пляже”, “собака играет” или конкретных людей без ручного тегирования.

Распознавание лиц: Автоматическое обнаружение и группировка лиц на ваших фотографиях. Immich идентифицирует людей по всей вашей библиотеке, что облегчает поиск фотографий конкретных людей.

Современный веб-интерфейс: Красивый, адаптивный веб-интерфейс для просмотра, организации и совместного использования ваших фотографий с любого устройства с браузером.

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

Поддержка Live Photos: Полная поддержка Live Photos для iOS и Motion Photos для Android, сохраняющая как статическое изображение, так и видеокомпонент.

Сохранение метаданных: EXIF-данные, включая местоположение, настройки камеры и временные метки, сохраняются. Просматривайте свои фотографии на карте на основе GPS-координат.

Поддержка внешних библиотек: Импортируйте существующие фотобиблиотеки из внешнего хранилища без копирования файлов, экономя место на диске. Подобно тому, как инструменты вроде Obsidian помогают управлять и организовывать текстовые знания, Immich предоставляет мощные возможности организации для визуальных медиа.

Почему стоит размещать фотографии на собственном сервере?

Полный контроль над конфиденциальностью

При использовании коммерческих облачных сервисов ваши фотографии хранятся на серверах, которые вы не контролируете. Их могут анализировать для рекламы, включать в обучающие наборы данных для машинного обучения или предоставлять третьим лицам. С Immich ваши фотографии никогда не покидают ваш сервер, если вы не решите их явно поделиться.

Нет ограничений на хранение

Облачные сервисы взимают плату за уровни хранения. При самостоятельном хостинге ваш единственный предел — это емкость вашего оборудования. Жесткий диск на 10 ТБ стоит дешевле, чем два года премиум-облачного хранилища.

Экономическая эффективность

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

Долговечность данных

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

Возможность обучения

Самостоятельный хостинг Immich предоставляет практический опыт работы с Docker, обратными прокси, сертификатами SSL, управлением базами данных и администрированием серверов — ценные навыки для любого разработчика или специалиста по DevOps.

Обзор архитектуры

Immich использует микросервисную архитектуру с несколькими компонентами:

Immich Server: Основной API-сервер, обрабатывающий аутентификацию, загрузку фотографий и операции с базой данных. Создан с использованием Node.js и TypeScript.

Immich Machine Learning: Отдельная служба на Python, выполняющая модели TensorFlow для распознавания лиц, обнаружения объектов и семантического поиска на основе CLIP.

Immich Web: Веб-интерфейс на основе React, предоставляющий пользовательское приложение.

PostgreSQL: Реляционная база данных, хранящая метаданные, информацию о пользователях и связи между фотографиями, людьми и альбомами.

Redis: Кэш в оперативной памяти для управления сессиями и координации очереди задач.

TypeSense (опционально): Поисковая система для улучшения возможностей и производительности поиска.

Все компоненты работают как Docker-контейнеры, оркестрируемые с помощью Docker Compose для упрощенной развертывания и управления.

Требования к оборудованию

Минимальные спецификации

  • CPU: 2 ядра (x86_64 или ARM64)
  • Оперативная память: 4 ГБ (рекомендуется 8 ГБ)
  • Хранилище: 10 ГБ для приложения + размер фотобиблиотеки
  • Сеть: 100 Мбит/с для локального доступа

Рекомендуемые спецификации

  • CPU: 4+ ядра с хорошей производительностью в одном потоке
  • Оперативная память: 8-16 ГБ (больше для больших библиотек)
  • Хранилище: SSD для базы данных и приложения, HDD для хранения фотографий
  • GPU: Необязательно, но значительно ускоряет задачи машинного обучения (NVIDIA с поддержкой CUDA)

Рассмотрения по хранению

Планируйте примерно 1.15 раза больше вашего текущего размера фотобиблиотеки, чтобы учесть миниатюры и несколько разрешений. Используйте SSD-хранилище для базы данных PostgreSQL для лучшей производительности.

Для больших библиотек (100 000+ фотографий) рассмотрите:

  • NAS с RAID для избыточности данных
  • Отдельный SSD для базы данных
  • Кэш-уровень NVMe для часто используемых фотографий

Руководство по установке

Предварительные требования

Перед установкой Immich убедитесь, что у вас есть:

  1. Сервер на Linux: Рекомендуется Ubuntu 22.04 LTS или Debian 12 (см. наше подробное руководство по Как установить Ubuntu 24.04 и полезные инструменты для подробных инструкций по настройке)
  2. Docker: Версия 20.10 или новее
  3. Docker Compose: Версия 2.0 или новее
  4. Доменное имя: Необязательно, но рекомендуется для внешнего доступа
  5. Обратный прокси: Nginx или Caddy для завершения SSL

Пошаговая установка

1. Установка Docker и Docker Compose

# Обновление системных пакетов
sudo apt update && sudo apt upgrade -y

# Установка Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# Добавление пользователя в группу docker
sudo usermod -aG docker $USER

# Установка Docker Compose
sudo apt install docker-compose-plugin

Для получения дополнительной информации о командах curl и их параметрах, ознакомьтесь с нашим Справочником по cURL. Если вы новичок в Docker, наш Справочник по Docker предоставляет основные команды и концепции.

2. Создание структуры каталогов Immich

# Создание каталога приложения
mkdir -p ~/immich/{library,database,machine-learning}
cd ~/immich

# Загрузка docker-compose.yml
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

Если вы новичок в скриптах bash и командной строке, наш Справочник по Bash предоставляет полезные ссылки для общих команд и операций с каталогами.

3. Настройка переменных окружения

Отредактируйте файл .env с вашими настройками:

# Настройка базы данных
DB_PASSWORD=ваш_безопасный_пароль_здесь
DB_DATABASE_NAME=immich
DB_USERNAME=postgres

# Расположение загрузки
UPLOAD_LOCATION=./library

# Машинное обучение
MACHINE_LEARNING_ENABLED=true

# Часовой пояс
TZ=America/New_York

# Публичный URL (для внешнего доступа)
IMMICH_SERVER_URL=https://photos.yourdomain.com

Важно: Сгенерируйте надежный случайный пароль для DB_PASSWORD:

openssl rand -base64 32

4. Запуск Immich

# Запуск всех сервисов
docker compose up -d

# Проверка статуса сервиса
docker compose ps

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

Это лишь основы - для полного справочника по командам и операциям Docker Compose см. наш Справочник по Docker Compose.

5. Доступ к веб-интерфейсу

Перейдите по адресу http://ваш-ip-сервера:2283 и создайте свою административную учетную запись. Этот первый аккаунт становится системным администратором.

Настройка внешнего доступа

Для безопасного внешнего доступа настройте обратный прокси:

Пример конфигурации Nginx

server {
    listen 443 ssl http2;
    server_name photos.yourdomain.com;

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

    client_max_body_size 50000M;

    location / {
        proxy_pass http://localhost:2283;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_read_timeout 600s;
        proxy_send_timeout 600s;
    }
}

Пример конфигурации Caddy (Проще с автоматическим HTTPS)

photos.yourdomain.com {
    reverse_proxy localhost:2283

    @uploads {
        path /api/upload/*
    }
    request_body @uploads {
        max_size 50GB
    }
}

Настройка мобильного приложения

iOS

  1. Скачайте Immich из App Store
  2. Введите URL вашего сервера (https://photos.yourdomain.com)
  3. Войдите с помощью своих учетных данных
  4. Включите автоматическое резервное копирование в Настройках
  5. Выберите, какие альбомы резервировать (или все фотографии)
  6. Настройте параметры резервного копирования (только по WiFi, только при зарядке и т.д.)

Android

  1. Скачайте Immich из Google Play Store или F-Droid
  2. Введите URL сервера и учетные данные
  3. Предоставьте разрешения на доступ к фото/видео
  4. Настройте параметры автоматического резервного копирования
  5. Включите фоновую службу для надежного резервного копирования в фоновом режиме

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

  • Только по WiFi: Включите, чтобы избежать платы за мобильный интернет
  • Только при зарядке: Предотвращает разряд батареи при больших загрузках
  • Включить видео: Видео занимают значительное место и пропускную способность
  • Обновление приложения в фоновом режиме: Включите на iOS для надежной синхронизации
  • Фоновая служба: Включите на Android для последовательного резервного копирования

Машинное обучение: функции

Распознавание лиц

Автоматическое распознавание лиц в Immich обнаруживает и группирует лица по всей вашей библиотеке:

  1. Первоначальная обработка: После загрузки сервис машинного обучения анализирует каждое фото на наличие лиц
  2. Группировка лиц: Похожие лица объединяются в группы
  3. Ручное назначение: Проверьте группы и присвойте имена людям
  4. Непрерывное обучение: По мере добавления меток к фото точность улучшается

Настройки конфигурации:

# В docker-compose.yml, переменные окружения сервиса ML
MACHINE_LEARNING_MODEL_CACHE=/cache
MACHINE_LEARNING_WORKERS=1  # Увеличьте при наличии большего количества ядер CPU

Обнаружение объектов и поиск с помощью CLIP

Immich использует CLIP (Contrastive Language-Image Pre-training) для семантического поиска:

  • Поиск по концепциям без тегов: “горный пейзаж”, “день рождения торт”, “красная машина”
  • Поисковые запросы на естественном языке понимают контекст и отношения
  • Работает на разных языках (хотя английский обычно дает лучшие результаты)

Ускорение с помощью GPU

Для значительно более быстрой обработки машинного обучения включите поддержку GPU:

NVIDIA GPU с CUDA

# В docker-compose.yml, сервис ML
services:
  immich-machine-learning:
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]

Убедитесь, что установлен NVIDIA Container Toolkit:

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
    sudo tee /etc/apt/sources.list.d/nvidia-docker.list

sudo apt update
sudo apt install -y nvidia-container-toolkit
sudo systemctl restart docker

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

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

Что резервировать

  1. Фотобиблиотека: Директория UPLOAD_LOCATION, содержащая оригинальные фотографии
  2. База данных: PostgreSQL с метаданными и связями
  3. Конфигурация: Файл .env и docker-compose.yml

Резервное копирование базы данных

Автоматизированный скрипт ежедневного резервного копирования

#!/bin/bash
# Сохраните как ~/immich/backup.sh

BACKUP_DIR=~/immich-backups
DATE=$(date +%Y%m%d_%H%M%S)

# Создание директории резервного копирования
mkdir -p $BACKUP_DIR

# Резервное копирование PostgreSQL базы данных
docker exec -t immich-postgres pg_dumpall -c -U postgres | \
    gzip > $BACKUP_DIR/immich_db_$DATE.sql.gz

# Сохраняем только последние 30 дней резервных копий
find $BACKUP_DIR -name "immich_db_*.sql.gz" -mtime +30 -delete

echo "Резервное копирование завершено: $BACKUP_DIR/immich_db_$DATE.sql.gz"

Сделайте скрипт исполняемым и настройте cron:

chmod +x ~/immich/backup.sh
crontab -e
# Добавьте строку: 0 2 * * * ~/immich/backup.sh

Для получения дополнительной информации о bash-скриптах, автоматизации и cron-задачах, обратитесь к нашей подробной Шпаргалке по Bash.

Резервное копирование фотобиблиотеки

Ваша фотобиблиотека должна резервироваться отдельно в другом месте:

Вариант 1: Rsync на NAS

rsync -avz --delete ~/immich/library/ nas:/backups/immich-photos/

Вариант 2: Облачное резервное копирование (зашифрованное)

# Использование rclone с шифрованием
rclone sync ~/immich/library/ remote:immich-backup-encrypted/ --encrypt

Вариант 3: Локальный внешний диск

rsync -avz --delete ~/immich/library/ /mnt/backup-drive/immich/

Обслуживание и обновления

Регулярные задачи обслуживания

Мониторинг свободного места на диске

# Проверка использования диска
df -h ~/immich/library
df -h ~/immich/database

# Проверка Docker-томов
docker system df

Мониторинг производительности

# Просмотр использования ресурсов
docker stats

# Проверка логов конкретного сервиса
docker compose logs immich-server --tail=100
docker compose logs immich-machine-learning --tail=100

Обновление Immich

Immich часто обновляется с новыми функциями и исправлениями ошибок. Обновляйтесь регулярно:

cd ~/immich

# Создайте резервную копию базы данных перед обновлением
docker exec -t immich-postgres pg_dumpall -c -U postgres > backup_pre_update.sql

# Загрузите последние образы
docker compose pull

# Остановите и удалите старые контейнеры
docker compose down

# Запустите с новыми образами
docker compose up -d

# Проверьте логи на наличие проблем
docker compose logs -f

Обслуживание базы данных

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

# Vacuum и анализ базы данных
docker exec -it immich-postgres psql -U postgres -d immich -c "VACUUM ANALYZE;"

# Проверка размера базы данных
docker exec -it immich-postgres psql -U postgres -d immich -c \
    "SELECT pg_size_pretty(pg_database_size('immich'));"

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

Оптимизация хранения

Используйте SSD для базы данных: PostgreSQL значительно выигрывает от хранения на SSD. Рассмотрите:

volumes:
  pgdata:
    driver: local
    driver_opts:
      type: none
      o: bind
      device: /mnt/ssd/immich-db

Отдельное хранилище фотографий: Храните большие фотобиблиотеки на HDD, в то время как база данных остается на SSD:

UPLOAD_LOCATION=/mnt/hdd/immich-photos

Настройка производительности базы данных

Для библиотек с 50 000+ фотографиями настройте PostgreSQL:

# В docker-compose.yml, переменные окружения сервиса postgres
POSTGRES_SHARED_BUFFERS=256MB
POSTGRES_EFFECTIVE_CACHE_SIZE=1GB
POSTGRES_MAINTENANCE_WORK_MEM=64MB
POSTGRES_CHECKPOINT_COMPLETION_TARGET=0.9
POSTGRES_WAL_BUFFERS=16MB
POSTGRES_DEFAULT_STATISTICS_TARGET=100

Производительность машинного обучения

Пакетная обработка: Обрабатывайте несколько фотографий одновременно:

MACHINE_LEARNING_WORKERS=4  # Соответствует количеству ядер CPU

Ускорение с помощью GPU: Как упоминалось ранее, ускорение с помощью GPU обеспечивает 5-10-кратное увеличение скорости для задач машинного обучения.

Лучшие практики безопасности

Аутентификация и контроль доступа

  1. Сложные пароли: Используйте менеджер паролей для создания и хранения сложных паролей
  2. Двухфакторная аутентификация: Включите 2FA для административного аккаунта (если поддерживается в вашей версии)
  3. Регулярные проверки доступа: Периодически проверяйте учетные записи пользователей и удаляйте неиспользуемые

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

Обратный прокси с SSL: Никогда не открывайте Immich напрямую в интернет без HTTPS:

# Используйте Let's Encrypt для бесплатных SSL-сертификатов
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d photos.yourdomain.com

Настройка брандмауэра:

# Разрешите только необходимые порты
sudo ufw allow 22/tcp    # SSH
sudo ufw allow 80/tcp    # HTTP (перенаправление на HTTPS)
sudo ufw allow 443/tcp   # HTTPS
sudo ufw enable

VPN или Tailscale: Для максимальной безопасности получайте доступ к Immich через VPN:

  • Установите Tailscale на ваш сервер и устройства
  • Получайте доступ через IP Tailscale (100.x.x.x)
  • Нет портов, открытых в публичный интернет

Безопасность контейнеров

Регулярные обновления: Держите Docker-образы обновленными для устранения уязвимостей безопасности

Запуск в безротовом режиме: Настройте безротовой режим Docker для дополнительной изоляции

Ограничение ресурсов: Предотвратите атаки типа DoS, ограничив ресурсы контейнеров:

services:
  immich-server:
    deploy:
      resources:
        limits:
          cpus: '2'
          memory: 4G

Устранение распространенных проблем

Неудачные загрузки

Симптом: Фотографии не загружаются из мобильного приложения

Решения:

  • Проверьте свободное место на сервере: df -h
  • Убедитесь, что в настройках обратного прокси установлено client_max_body_size
  • Проверьте логи сервера: docker compose logs immich-server
  • Убедитесь, что мобильное приложение имеет последнюю версию

Машинное обучение не обрабатывает данные

Симптом: Распознавание лиц или поиск не работает

Решения:

  • Проверьте статус контейнера ML: docker compose ps immich-machine-learning
  • Просмотрите логи ML: docker compose logs immich-machine-learning
  • Перезапустите сервис ML: docker compose restart immich-machine-learning
  • Убедитесь, что файлы моделей загружены: ls ~/immich/machine-learning/cache/

Ошибки подключения к базе данных

Симптом: Веб-интерфейс показывает ошибки подключения к базе данных

Решения:

  • Убедитесь, что контейнер PostgreSQL работает: docker compose ps immich-postgres
  • Проверьте логи базы данных: docker compose logs immich-postgres
  • Убедитесь, что правильный пароль в файле .env
  • Проверьте подключение: docker exec -it immich-postgres psql -U postgres

Медленная производительность

Симптом: Веб-интерфейс или поиск работают медленно

Решения:

  • Проверьте системные ресурсы: CPU, RAM, ввод-вывод диска
  • Запустите вакуум базы данных: VACUUM ANALYZE;
  • Перезапустите сервисы: docker compose restart
  • Проверьте настройки производительности PostgreSQL
  • Рассмотрите апгрейд оборудования (SSD, больше RAM)

Мобильное приложение не синхронизируется

Симптом: Фотографии не резервируются с мобильного устройства

Решения:

  • Убедитесь, что включено обновление в фоне (iOS)
  • Включите фоновый сервис (Android)
  • Проверьте настройки только по WiFi, если вы на мобильных данных
  • Убедитесь, что URL сервера доступен из мобильной сети
  • Проверьте разрешения приложения на доступ к фото
  • Очистите кеш приложения и войдите снова

Миграция с других сервисов

Из Google Фото

Экспорт данных:

  1. Перейдите в Google Takeout (takeout.google.com)
  2. Выберите Google Фото
  3. Выберите формат и размер экспорта
  4. Скачайте архивы

Импорт в Immich:

  1. Распакуйте скачанные архивы
  2. Используйте инструмент CLI Immich или веб-загрузку
  3. Метаданные сохраняются из JSON-файлов sidecar
# Использование Immich CLI (установите из релизов)
immich upload --recursive /path/to/google-photos-export/

Из iCloud Фото

Экспорт:

  1. Посетите iCloud.com
  2. Выберите фотографии для загрузки
  3. Или используйте экспорт через iCloud для Windows/Photos приложение

Импорт: Аналогично Google Фото, загрузите через веб-интерфейс или инструмент CLI

Из локального хранилища

Функция внешней библиотеки: Вместо загрузки укажите Immich на существующую директорию с фотографиями:

  1. Перейдите в Администрирование > Внешние библиотеки
  2. Добавьте путь к библиотеке (должен быть доступен из Docker-контейнера)
  3. Immich сканирует и индексирует без копирования файлов
  4. Экономит значительное место на диске и время
# В docker-compose.yml, добавьте монтирование тома
volumes:
  - /mnt/existing-photos:/mnt/external-library:ro

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

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

Вклад в проект

Immich - это проект с открытым исходным кодом, который приветствует вклад:

  • Сообщения об ошибках: Отправляйте подробные отчеты об ошибках на GitHub
  • Запросы функций: Обсуждайте на Discord или GitHub Discussions
  • Вклад в код: Отправляйте pull requests, следуя руководству по вкладу
  • Документация: Улучшайте документацию для лучшего пользовательского опыта
  • Переводы: Помогите локализовать Immich на ваш язык

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

Если Immich не соответствует вашим потребностям, рассмотрите:

  • PhotoPrism: Более зрелый, функционально богатый, другая архитектура
  • Piwigo: Традиционный интерфейс галереи
  • Nextcloud Photos: Часть более крупной экосистемы Nextcloud
  • Photoview: Проще, легковесная альтернатива
  • LibrePhotos: Еще одна альтернатива Google Фото с функциями ИИ

Заключение

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

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

Начните с небольшого домашнего сервера или VPS, протестируйте с частью вашей фототеки и постепенно мигрируйте по мере освоения системы. Активное сообщество и частые обновления гарантируют, что Immich будет продолжать улучшаться и добавлять новые функции.

Ваши воспоминания бесценны — возьмите над ними контроль с помощью Immich.

Полезные ссылки