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;"