Установка и запуск PhotoPrism на Raspberry Pi
Что такое кратко (одно предложение)
- Docker: контейнеризация приложений для изоляции и простого развёртывания.
- docker-compose: инструмент для запуска нескольких контейнеров из одного файла конфигурации.
- SSH: безопасный удалённый доступ к системе.
- WebDav: протокол доступа к файлам по HTTP, используется для интеграции с Nextcloud.
- Certbot: клиент для получения сертификатов от Let’s Encrypt.
Почему PhotoPrism на Raspberry Pi — хороший выбор
PhotoPrism предлагает поиск, распознавание лиц, генерацию тегов на основе ML и карту мест съёмки. Всё это можно иметь под своим контролем без облачных сервисов. На Raspberry Pi вы получаете дешёвый и энергоэффективный сервер для личной медиатеки.
Важно: для комфортной работы рекомендован Raspberry Pi 4 с 4 ГБ ОЗУ или больше. Модели с 1–2 ГБ будут часто «сыпаться» при анализе больших коллекций.
Подготовка Raspberry Pi
- Установите Raspberry Pi OS (рекомендуется 64‑битная версия для Pi 4). Обновите систему:
ssh pi@your.pi.local.ip
sudo apt update
sudo apt upgrade -y- Установите Docker и docker-compose (если ещё не установлены). Быстрая команда от официального скрипта Docker подойдет для большинства пользователей:
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker pi
sudo apt install -y docker-compose- Если оперативной памяти меньше 4 ГБ, настройте swap на SSD (если вы грузитесь с microSD — учтите риск скорого износа):
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstabЗаметка: swap помогает, но влияет на срок жизни microSD. Лучше использовать SSD.
Загрузка и правка docker-compose.yml
PhotoPrism проектируется для запуска через docker-compose. Скачайте файл и отредактируйте его:
wget https://dl.photoprism.app/docker/docker-compose.yml
nano docker-compose.ymlВ файле измените пароли по умолчанию и пути к хранилищу. По умолчанию PhotoPrism смотрит в /home/pi/Pictures. Если нужно, укажите другой каталог в секции volumes. Сохраните изменения: Ctrl+O, Enter, Ctrl+X.
Пример наиболее важных переменных (вставьте в раздел environment в docker-compose.yml):
environment:
PHOTOPRISM_ADMIN_PASSWORD: your_secure_password_here
PHOTOPRISM_HTTP_PORT: 2342
PHOTOPRISM_STORAGE_PATH: "/photoprism/storage"
PHOTOPRISM_ORIGINALS_PATH: "/photoprism/originals"Совет: используйте длинные случайные пароли и храните их в менеджере паролей.
Запуск контейнеров
Подтяните образы и запустите контейнеры в фоновом режиме:
docker-compose pull
docker-compose up -d
docker-compose psПроверьте логи при ошибках:
docker-compose logs -f photoprismПосле старта интерфейс доступен по http://your.pi.local.ip:2342. Имя пользователя: admin, пароль — указан в docker-compose.yml.
Доступ к PhotoPrism извне сети — вариант через Apache и Let’s Encrypt
Если вы хотите доступ из интернета, можно использовать Apache как обратный прокси и Certbot для HTTPS.
- В панели регистратора создайте A‑запись на ваш публичный IP.
- Создайте файл конфигурации Apache:
cd /etc/apache2/sites-available/
sudo nano photos.confВставьте (отредактируйте доменное имя и локальный IP):
ServerName your-domain-name.tld
ProxyPass /api/v1/ws ws://your.pi.local.ip:2342/api/v1/ws
ProxyPassReverse /api/v1/ws ws://your.pi.local.ip:2342/api/v1/ws
ProxyPass / http://your.pi.local.ip:2342/
ProxyPassReverse / http://your.pi.local.ip:2342/
ProxyRequests off
Включите сайт и перезапустите Apache:
sudo a2ensite photos.conf
sudo service apache2 restart- Получите сертификат через Certbot:
sudo certbot --apacheСледуйте подсказкам, введите email, выберите домен. После этого сайт будет доступен по https://your-domain-name.tld.
Важно: альтернативой является настройка VPN (WireGuard) или туннеля (Tailscale), чтобы не открывать публично порты и полностью сохранить приватность.
Добавление фотографий
По умолчанию PhotoPrism ищет фото в /home/pi/Pictures. Копируйте файлы с локальной машины с помощью scp:
scp -r /path/to/your/images/* pi@your.pi.local.ip:/home/pi/Pictures/В интерфейсе нажмите значок киноплёнки, отметьте “Complete rescan” и нажмите Start. Индексация может занять много времени — это зависит от количества и от доступной памяти.
PhotoPrism использует TensorFlow для генерации тегов. Это удобно, но модель иногда ошибается; проверяйте важные метки вручную.
Сканирование создаст миниатюры, теги, распознавание лиц и карту мест съёмки (если в файлах есть геоданные).
Синхронизация с мобильных устройств и альтернативы
- PhotoSync (Android/iOS) — рекомендуемый производителями клиент для синхронизации фотографий на телефон с сервером PhotoPrism.
- Syncthing — хорошо подходит для автоматической синхронизации папок между устройствами.
- Nextcloud + WebDav — если у вас уже есть Nextcloud, добавьте его как сервер в настройках PhotoPrism → Sync → Add server.
Настройка WebDav в PhotoPrism позволяет проверять новые файлы по расписанию (ежечасно, ежедневно, еженедельно).
Советы по отладке и когда всё идёт не так
- Если контейнер падает с ошибкой OOM, увеличьте swap или используйте Pi с большим объёмом RAM.
- Проверьте логи MariaDB при проблемах с базой: docker-compose logs db
- Таймауты и ошибки прокси проверяйте в логах Apache и Photoprism.
- Если карты не показывают метки, убедитесь, что у фотографий есть GPS в EXIF.
Безопасность и конфиденциальность
- Всегда используйте HTTPS при открытии доступа извне.
- Ограничьте доступ по фаерволу: откройте только 80/443 для Apache, блокируйте прямой доступ к 2342 извне.
- Запускайте обновления безопасности для ОС и контейнеров регулярно.
- Используйте fail2ban или аналог для защиты SSH.
- Делайте регулярные резервные копии базы данных MariaDB и каталога originals.
Пример простой команды для резервного дампа MariaDB из контейнера:
docker exec -t mysqldump -u root -pYOURPASSWORD photoprism > photoprism_dump.sql Критерии приёмки
- Веб‑интерфейс PhotoPrism доступен по HTTPS на вашем домене.
- Полная переиндексация проходит без падений контейнеров.
- Поиск возвращает релевантные результаты по дате, локации и тегам.
- Резервная копия базы создана и может быть восстановлена.
Рекомендации по производительности
- Минимум 4 ГБ ОЗУ для плавной индексации; лучше 8 ГБ для больших коллекций.
- Храните оригиналы на SSD, если планируете частые операции с файлами.
- Для больших коллекций рассмотрите отдельный сервер для базы данных и отдельный — для обработки ML задач.
Таблица совместимости по моделям Raspberry Pi
- Raspberry Pi 4 (4 ГБ и 8 ГБ): рекомендуется для нормальной работы.
- Raspberry Pi 3: возможно, будет работать, но индексация и распознавание изображений будут медленными и небезопасны из‑за ограничений по памяти.
- Raspberry Pi Zero: не подходит для PhotoPrism.
Риски и варианты обхода
- Проблема: малая оперативная память → Риск падений при индексации. Обход: увеличить swap на SSD или использовать внешнюю машину для индексирования.
- Проблема: публичный доступ без HTTPS → утечка данных. Обход: использовать VPN или Tailscale вместо прямого проброса портов.
Миграция с другой системы (коротко)
- Экспортируйте оригиналы и метаданные из старой системы.
- Скопируйте файлы в каталог originals, запустите Complete rescan.
- При необходимости импортируйте теги вручную или с помощью API PhotoPrism.
Контрольный чеклист для администратора
- Pi обновлён и перезагружён после установки Docker
- docker-compose.yml отредактирован: пароли, пути
- Сертификат HTTPS получен (Certbot) или настроен VPN
- Регулярный backup настроен и проверен
- Политика доступа к портам реализована в фаерволе
Тесты и приёмочные сценарии
- Тест 1: зайти на главную страницу и авторизоваться под admin.
- Тест 2: загрузить 100 фотографий и дождаться завершения полного сканирования.
- Тест 3: поиск по году и по геопозиции → ожидается нахождение соответствующих фото.
- Тест 4: восстановление БД из резервной копии.
Примеры альтернатив и когда PhotoPrism не подходит
- Нужно реальное облачное хранение с автоматическим распределением и доступом для множества пользователей — рассмотрите коммерческие облака. PhotoPrism больше ориентирован на личное и семейное использование.
- Огромные коллекции (сотни тысяч снимков) могут выйти за пределы возможностей одного Raspberry Pi; лучше выбрать сервер с большим объёмом RAM и дискового пространства.
Быстрые команды-образцы и шпаргалка
- Запустить обновление контейнеров:
docker-compose pull && docker-compose up -d- Просмотр логов:
docker-compose logs -f photoprism- Остановка и удаление контейнеров:
docker-compose downНебольшая методология: как поддерживать проект в рабочем состоянии
- Еженедельно проверять логи на ошибки и обновления образов.
- Раз в месяц проверять целостность резервных копий.
- Обновлять систему и контейнеры в окне обслуживания, когда у пользователей минимальная активность.
“Короткая мысль эксперта”: Поддерживайте изоляцию сервисов: БД, приложение и обратный прокси — это простая, но эффективная архитектура для безопасности и масштабирования.
Короткое резюме
PhotoPrism на Raspberry Pi — отличное решение для домашнего фотосервера: относительно простая установка через docker-compose, мощный поиск и картирование фотографий. Главное — обеспечить достаточный объём памяти, использовать HTTPS и продумать резервное копирование.
Важно: придерживайтесь политики приватности и не открывайте доступ в интернет без явной необходимости. Регулярно обновляйте систему и храните пароли в надёжном месте.
Похожие материалы
RDP: полный гид по настройке и безопасности
Android как клавиатура и трекпад для Windows
Советы и приёмы для работы с PDF
Calibration в Lightroom Classic: как и когда использовать
Отключить Siri Suggestions на iPhone