Как self-host Photoprism: Полное руководство по развертыванию фоторезидента
Подробный гайд по установке Photoprism на ваш Homelab. Сравнение Docker и Proxmox, настройка Nginx Proxy Manager, интеграция с MinIO/S3 и оптимизация ИИ-распознавания.
Установка Docker и Docker Compose
Обновите систему и установите необходимые пакеты для работы Docker.
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
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
newgrp docker
Установка Docker Compose
Скачайте и установите бинарный файл Docker Compose.
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Создание директории и файла конфигурации
Создайте папку для проекта и файл docker-compose.yml с конфигурацией Photoprism и базы данных MariaDB.
mkdir ~/photoprism && cd ~/photoprism
Настройка docker-compose.yml
Создайте файл docker-compose.yml с настройками контейнеров Photoprism и MariaDB. Укажите пароли и пути к папкам с фотографиями.
version: '3.8'
services:
photoprism:
image: photoprism/photoprism:latest
container_name: photoprism
restart: unless-stopped
ports:
- "2342:2342"
environment:
PHOTOPRISM_ADMIN_PASSWORD: "ВашСложныйПароль123!"
PHOTOPRISM_AUTH_MODE: "password"
PHOTOPRISM_SITE_URL: "https://photos.example.com"
PHOTOPRISM_SITE_TITLE: "Моя Фототека"
PHOTOPRISM_DATABASE_DRIVER: "mysql"
PHOTOPRISM_DATABASE_SERVER: "db:3306"
PHOTOPRISM_DATABASE_NAME: "photoprism"
PHOTOPRISM_DATABASE_USER: "photoprism"
PHOTOPRISM_DATABASE_PASSWORD: "DBPassword123!"
PHOTOPRISM_EXIF_BRUTEFORCE: "true"
PHOTOPRISM_FFMPEG: "true"
volumes:
- ./photoprism/storage:/photoprism/storage
- /путь/к/вашим/фото:/photoprism/import
- /путь/к/вашим/фото:/photoprism/originals
depends_on:
- db
networks:
- photoprism-net
db:
image: mariadb:10.11
container_name: photoprism-db
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: "RootDBPassword123!"
MYSQL_DATABASE: "photoprism"
MYSQL_USER: "photoprism"
MYSQL_PASSWORD: "DBPassword123!"
volumes:
- ./mariadb:/var/lib/mysql
networks:
- photoprism-net
networks:
photoprism-net:
driver: bridge
Запуск контейнеров
Запустите контейнеры Photoprism и MariaDB в фоновом режиме.
docker-compose up -d
Первоначальная настройка
Проверьте логи на наличие ошибок, затем откройте веб-интерфейс по адресу http://IP_сервера:2342. Войдите с логином 'admin' и паролем, указанным в конфиге. Перейдите в Settings -> Library и нажмите 'Start Indexing' для сканирования фотографий.
docker-compose logs -f photoprism
Настройка доступа через Nginx Proxy Manager
Для безопасного доступа из интернета добавьте Nginx Proxy Manager в docker-compose.yml. Запустите его, зайдите на порт 81, настройте Proxy Host на ваш домен,指向 на photoprism:2342, и получите SSL сертификат Let's Encrypt.
nginx-proxy-manager:
image: jc21/nginx-proxy-manager:latest
container_name: npm
restart: unless-stopped
ports:
- "80:80"
- "81:81"
- "443:443"
volumes:
- ./npm/data:/data
- ./npm/letsencrypt:/etc/letsencrypt
networks:
- photoprism-net
Интеграция с внешним хранилищем (MinIO/S3)
Добавьте сервис MinIO в docker-compose.yml для использования S3-совместимого хранилища. После запуска создайте бакет и настройте переменные окружения Photoprism (PHOTOPRISM_S3_ENDPOINT, PHOTOPRISM_S3_ACCESS_KEY и др.) для подключения к нему.
minio:
image: minio/minio:latest
container_name: minio
restart: unless-stopped
ports:
- "9000:9000"
- "9001:9001"
environment:
MINIO_ROOT_USER: "minioadmin"
MINIO_ROOT_PASSWORD: "minioadmin123!"
volumes:
- ./minio/data:/data
command: server /data --console-address ":9001"
networks:
- photoprism-net
Активация AI-распознавания
Включите TensorFlow и распознавание лиц в файле docker-compose.yml, добавив соответствующие переменные окружения. Перезапустите контейнер для применения изменений.
PHOTOPRISM_TENSORFLOW: "true"
PHOTOPRISM_TENSORFLOW_MODELS: "/photoprism/storage/models"
PHOTOPRISM_FACE_RECOGNITION: "true"
Настройка автоматического бэкапа
Создайте скрипт backup.sh для резервного копирования данных Photoprism и базы данных MariaDB. Добавьте выполнение скрипта в cron для регулярного создания бэкапов.
#!/bin/bash
BACKUP_DIR="/backup/photoprism-$(date +%Y%m%d)"
mkdir -p $BACKUP_DIR
# Бэкап данных Photoprism
docker run --rm -v ~/photoprism/photoprism/storage:/data -v $BACKUP_DIR:/backup alpine tar czf /backup/photoprism-storage.tar.gz -C /data .
# Бэкап MariaDB
docker exec photoprism-db mysqldump -u photoprism -pDBPassword123! photoprism > $BACKUP_DIR/photoprism.sql
tar czf $BACKUP_DIR.tar.gz $BACKUP_DIR
rm -rf $BACKUP_DIR
echo "Backup created: $BACKUP_DIR.tar.gz"