Проблема
При владении большим архивов фотографий и видео есть риск его потери. Хранение в облаке кажется удобным вариантом, однако страдает конфиденциальность. Хранение на жестком диске сохраняет приватность, но это неудобный в использовании метод. Золотая середина - хранение фото на собственном сервере, с установленным софтом, автоматически сортирующим большое количество медиа.
Изучение теории self-hosting фото-хранения
Для начала нужно понять, какие возможности предоставляет self-hosting для фото-хранения. Self-hosting позволяет хранить данные на собственном оборудовании, управлять ими самостоятельно и избежать зависимости от сторонних облачных сервисов. Это даёт значительные преимущества в плане конфиденциальности, сохраняя удобство использования.
Одной из основных задач было найти подходящее программное обеспечение для управления фотографиями. Я решил изучить существующие open-source решения в Интернете. Удивительно, но на ютубе не так много материала связанного с этой темой. Из действительно полезной информации я нашел на гитхабе большую таблицу с плюсами и минусами самых известных программ для управления фото архива, а также изучил это видео для понимания примерного хода работы по запуску такого сервера.
![](https://habrastorage.org/getpro/habr/upload_files/fa7/e53/2d5/fa7e532d5abd308f7ed5169554aa642b.png)
Основным критерием выбора софта являлось наличие умных алгоритмов (определение по лицам, вычисление дубликатов, умная сортировка), наличие большого количества возможностей модерировать архив самому и, пожалуй, главное - наличие мобильного приложения для доступа к архиву, имеющее весь функционал, просто в использовании и доступное для установки из официальных маркетов.
В процессе поиска я рассмотрел несколько популярных открытых решений для self-hosting фото-хранения:
Nextcloud - универсальная и популярная эко для синхронизации и совместного использования файлов, также предлагает управление фотографиями. Не подошел, так как Nextcloud требует множества сторонних плагинов для полноценного менеджинга фото и обладает плохой оптимизацией (в том числе для мобильного приложения).
Piwigo - платформа для управления фотографиями, изначально создавалась для фотоблогов. Не подошла из-за неудобства в использовании и малонужного мобильного приложения.
Lychee - новый менеджер фото в активной фазе разработки. Не подошел из-за отсутствия мобильного приложения.
PhotoPrism - мощный инструмент для управления фотографиями с поддержкой поиска по изображениям, распознавания лиц и многого другого. PhotoPrism оказался хорошим вариантом, но не подошел из-за отсутствия мобильного приложения.
В итоге, я остановился на Immich. Это давно развивающееся решение, специально созданное для управления большими архивами фотографий. У Immich удобный интерфейс, функциональное мобильное приложение и умная автоматическая сортировка фотографий.
Установка
В качестве тестового сервера можно использовать любой компьютер, подключенный к сети. В моем случае это был обычный ноутбук с Windows 11 в качестве основной ОС. Для установки и запуска Immich нам потребуется установить Docker и настроить окружение WSL 2 с Ubuntu.
1. Установка Docker
Docker позволяет запускать приложения в изолированных контейнерах. Это упрощает установку и управление программным обеспечением, обеспечивая его стабильную работу.
Сначала установим Docker Desktop для Windows:
Включите поддержку WSL 2 в настройкахDocker Desktop:
2. Настройка Ubuntu через WSL 2
Windows Subsystem for Linux (WSL) позволяет запускать Linux-приложения на Windows. Мы установим Ubuntu для упрощения установки и управления Docker.
-
Установите WSL 2, выполнив команду в PowerShell с правами администратора:
wsl --install
Установите Ubuntu (есть официальная версия из Microsoft Store)
-
Откройте терминал Ubuntu и перейдите в директорию, где вы хотите разместить репозиторий:
cd immich
-
Клонируйте репозиторий Immich:
it clone https://github.com/immich-app/immich.git cd immich
3. Настройка переменных окружения
Для корректной работы Immich нужно указать, где будут храниться загруженные файлы и данные базы данных. Мы настроим необходимые пути и параметры в файле .env
.
-
В файле
.env
настройте следующие параметры:UPLOAD_LOCATION=/путь к вашему директорию для загрузок
DB_DATA_LOCATION=/путь к данным вашей датабазы
4. Запуск Immich с помощью Docker Compose
Docker Compose позволяет запускать все необходимые сервисы Immich (сервер, база данных, Redis) с помощью одного файла конфигурации docker-compose.yml
. Значения в нем можно редактировать для тонкой настройки сервиса.
-
Убедитесь, что вы находитесь в директории с файлом
docker-compose.yml
:cd immich
-
Запустите Docker Compose для запуска всех сервисов:
docker-compose up -d
Доступ к серверу
После запуска Immich доступ к серверу осуществляется через веб-интерфейс. Я настроил локальный IP-адрес, чтобы получить доступ к серверу с мобильных устройств в одной сети.
-
Откройте браузер на любом устройстве в вашей локальной сети и введите:
http://ваш ip-аддрес
Чтобы подключиться через мобильное приложение, используйте тот же IP-адрес.
Итог
Запуская сервер появляется приятно выглядящая веб страница с интерфейсом схожим на Google Photo. На главной странице загруженные медиа показываются в сортировке по дате, что можно поменять в настройках. Когда сервер активен, в мобильном приложении достаточно ввести имя пользователя и ip-аддрес сервера (моего ноутбука) что бы открыть архив. Мобильное приложение позволяет как скачивать, так и загружать и удалять фотографии из облака, в зависимости от роли пользователя, выданной администратором. Из интересных особенностей есть, например, наличие карты мира, которая будет заполняться в зависимости от геолокации в мета-данных фото.
![](https://habrastorage.org/getpro/habr/upload_files/a3f/510/16c/a3f51016c9cccc7b702c0af612879fa5.png)
Создание собственного фото-хранилища с помощью Immich - это эффективное решение для управления большими архивами фотографий с сохранением конфиденциальности данных. Это позволяет отказаться от сторонних облачных сервисов и управлять своими данными самостоятельно.
Комментарии (67)
Yavanosta
07.08.2024 06:33+1Удалось ли настроить автостарт докера после перезагрузки без необходимости логиниться в систему?
shrimproller
07.08.2024 06:33А для нубов кто нибудь может объяснить, как в этих докерах хранить данные вне контейнера, а в уже существующей директории или вообще на соседнем файлсервере (smb, nfs ИТП)??? Обгуглился уже но толком ничего не нашел
riky
07.08.2024 06:33Можно примонтировать любую локальную папку. В compose раздел volumes просто вместо названия раздела указать путь к папке. То есть до двоеточия
Tirarex
07.08.2024 06:33Докеру можно монтировать директории из хост системы, а эта директория в линуксе может быть как монтированная так и обычная на диске. https://forums.docker.com/t/docker-compose-mount-samba-volume/132407
darkdiman
07.08.2024 06:33Например, с помощью параметра volumes из docker-compose.yml https://stackoverflow.com/questions/40905761/how-do-i-mount-a-host-directory-as-a-volume-in-docker-compose
freebsdmry
07.08.2024 06:33+1В список можно также докинуть легковесный PiGallery2
https://github.com/bpatrik/pigallery2
UPD А, он в той таблице уже есть.
Tirarex
Очень нравится immich, и пользуюсь им давно, но хочу предостеречь новичков от его установки.
Продукт не просто в активной разработке, а в ее самой горящей фазе. Приложения обновляются постоянно как и сервер, обратной совместимости нет, поэтому можно однажды проснуться и окажется что фото за N Месяцев уже давно не синхронизируются. Сам immich очень часто имеет breking changes в своем докер файле, (3 ли 5 раз за последние пол года), отсюда любое обновление через pull и up -d может что то поломать и стоит каждый раз идти на гит и читать что они там изменили. От части проблема решается выкачиванием их докер файла при каждом обновлении, и соответственно использовании полностью стандартных настроек. Соответственно Watchtower на этот контейнер натравливать точно не стоит.
А обновления иммича частые, в среднем раз в неделю но иногда они выпускают мажорную версию и 2-4 фикса в следующие пару дней. В итоге тот кто хочет реально пользоваться этим сервисом со всеми фишками включая приложения, будет обречен на периодическое тех обслуживание.
Photoprism сильно топорнее но и стабильнее в плане обновлений.
Ranger21
Как photo prism настроить на индексирование новых фоток, чтобы он не сканил всю библиотеку заново?
shibanovan
А там разработка ради разработки или появляются какие-то интересные фичи?
RomanKu
Как по интерфейсу, так и по функционалу immich вдохновляется Google Photos, если интерфейс уже вполне готов, то функционал все еще отстает и автор активно его добавляет. Например, в последнем релизе добавилось базовое редактирование фотографий (обрезка), я жду еще в одном из следующих релизов возможность точечной настройки прав доступа (сейчас нельзя поделиться альбомом на просмотр)
DragonZet
Можно же. Я так с коллегами своим альбомом с фото поделился.
RomanKu
Внешним пользователям можно там шарить, но хочется именно в рамках immich, создать общий альбом и дать кому-то доступ на добавление фоток, а кому-то только на просмотр
riky
Если не ставить авто обновление оно тоже перестанет работать?
Gamegen
Всё работает. У меня нет никакого автообновления. Обновляюсь сам руками когда понимаю, что появилось что-то интересное или нужное.
А так, ну появляется иногда уведомление о новой версии, да и ладно.
Old_paranoid
Автообновление нужно отключать и клиента и сервера - пару раз описанная ситуация случалась, когда на телефоне обновлял приложение, и оно переставало коннектится с сервером старой версии. За этим стоит проследить, если завели учетки на всю семью, а не только на себя.
Также раз или два было полное изменение структуры хранимых данных на сервере, в результате на сервере в профиле болтаются старые фотографии, и непонятно, можно их удалить или нет.