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

в 6:15, , рубрики: backup, cloud, docker, google drive, immich, photos, self-hosted

Проблема

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

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

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

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

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

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

В процессе поиска я рассмотрел несколько популярных открытых решений для 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.

  • В файле .env настройте следующие параметры:

    • UPLOAD_LOCATION=/путь к вашему директорию для загрузок

    • DB_DATA_LOCATION=/путь к данным вашей датабазы

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-аддрес сервера (моего ноутбука) что бы открыть архив. Мобильное приложение позволяет как скачивать, так и загружать и удалять фотографии из облака, в зависимости от роли пользователя, выданной администратором. Из интересных особенностей есть, например, наличие карты мира, которая будет заполняться в зависимости от геолокации в мета-данных фото.

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

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

Автор: theGoodWin

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js