Создание аналога Google Photos на собственном сервере

Проблема

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

Изучение теории self-hosting фото-хранения

Для начала нужно понять, какие возможности предоставляет self-hosting для фото-хранения. Self-hosting позволяет хранить данные на собственном оборудовании, управлять ими самостоятельно и избежать зависимости от сторонних облачных сервисов. Это даёт значительные преимущества в плане конфиденциальности, сохраняя удобство использования.

Одной из основных задач было найти подходящее программное обеспечение для управления фотографиями. Я решил изучить существующие open-source решения в Интернете. Удивительно, но на ютубе не так много материала связанного с этой темой. Из действительно полезной информации я нашел на гитхабе большую таблицу с плюсами и минусами самых известных программ для управления фото архива, а также изучил это видео для понимания примерного хода работы по запуску такого сервера.

fa7e532d5abd308f7ed5169554aa642b.png


Основным критерием выбора софта являлось наличие умных алгоритмов (определение по лицам, вычисление дубликатов, умная сортировка), наличие большого количества возможностей модерировать архив самому и, пожалуй, главное — наличие мобильного приложения для доступа к архиву, имеющее весь функционал, просто в использовании и доступное для установки из официальных маркетов.

В процессе поиска я рассмотрел несколько популярных открытых решений для self-hosting фото-хранения:

  • Nextcloud — универсальная и популярная эко для синхронизации и совместного использования файлов, также предлагает управление фотографиями. Не подошел, так как Nextcloud требует множества сторонних плагинов для полноценного менеджинга фото и обладает плохой оптимизацией (в том числе для мобильного приложения).

  • Piwigo — платформа для управления фотографиями, изначально создавалась для фотоблогов. Не подошла из-за неудобства в использовании и малонужного мобильного приложения.

  • Lychee — новый менеджер фото в активной фазе разработки. Не подошел из-за отсутствия мобильного приложения.

  • PhotoPrism — мощный инструмент для управления фотографиями с поддержкой поиска по изображениям, распознавания лиц и многого другого. PhotoPrism оказался хорошим вариантом, но не подошел из-за отсутствия мобильного приложения.

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

Установка

В качестве тестового сервера можно использовать любой компьютер, подключенный к сети. В моем случае это был обычный ноутбук с Windows 11 в качестве основной ОС. Для установки и запуска Immich нам потребуется установить Docker и настроить окружение WSL 2 с Ubuntu.

1. Установка Docker

Docker позволяет запускать приложения в изолированных контейнерах. Это упрощает установку и управление программным обеспечением, обеспечивая его стабильную работу.

  1. Сначала установим Docker Desktop для Windows:

  2. Включите поддержку WSL 2 в настройкахDocker Desktop:

2. Настройка Ubuntu через WSL 2

Windows Subsystem for Linux (WSL) позволяет запускать Linux-приложения на Windows. Мы установим Ubuntu для упрощения установки и управления Docker.

  1. Установите WSL 2, выполнив команду в PowerShell с правами администратора:

    wsl --install
  2. Установите Ubuntu (есть официальная версия из Microsoft Store)

  3. Откройте терминал Ubuntu и перейдите в директорию, где вы хотите разместить репозиторий:

    cd immich
  4. Клонируйте репозиторий Immich:

    it clone https://github.com/immich-app/immich.git
    cd immich

3. Настройка переменных окружения

Для корректной работы Immich нужно указать, где будут храниться загруженные файлы и данные базы данных. Мы настроим необходимые пути и параметры в файле .env.

4. Запуск Immich с помощью Docker Compose

Docker Compose позволяет запускать все необходимые сервисы Immich (сервер, база данных, Redis) с помощью одного файла конфигурации docker-compose.yml. Значения в нем можно редактировать для тонкой настройки сервиса.

  1. Убедитесь, что вы находитесь в директории с файлом docker-compose.yml:

    cd immich
  2. Запустите Docker Compose для запуска всех сервисов:

    docker-compose up -d

Доступ к серверу

После запуска Immich доступ к серверу осуществляется через веб-интерфейс. Я настроил локальный IP-адрес, чтобы получить доступ к серверу с мобильных устройств в одной сети.

  1. Откройте браузер на любом устройстве в вашей локальной сети и введите:

    http://ваш ip-аддрес
  2. Чтобы подключиться через мобильное приложение, используйте тот же IP-адрес.

Итог

Запуская сервер появляется приятно выглядящая веб страница с интерфейсом схожим на Google Photo. На главной странице загруженные медиа показываются в сортировке по дате, что можно поменять в настройках. Когда сервер активен, в мобильном приложении достаточно ввести имя пользователя и ip-аддрес сервера (моего ноутбука) что бы открыть архив. Мобильное приложение позволяет как скачивать, так и загружать и удалять фотографии из облака, в зависимости от роли пользователя, выданной администратором. Из интересных особенностей есть, например, наличие карты мира, которая будет заполняться в зависимости от геолокации в мета-данных фото.

a3f51016c9cccc7b702c0af612879fa5.png

Создание собственного фото-хранилища с помощью Immich — это эффективное решение для управления большими архивами фотографий с сохранением конфиденциальности данных. Это позволяет отказаться от сторонних облачных сервисов и управлять своими данными самостоятельно.

© Habrahabr.ru