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

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

Не указано

Введение в 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;"