Проблема

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

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

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

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


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

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

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

Комментарии (67)


  1. Tirarex
    07.08.2024 06:33
    +11

    Очень нравится immich, и пользуюсь им давно, но хочу предостеречь новичков от его установки.

    Продукт не просто в активной разработке, а в ее самой горящей фазе. Приложения обновляются постоянно как и сервер, обратной совместимости нет, поэтому можно однажды проснуться и окажется что фото за N Месяцев уже давно не синхронизируются. Сам immich очень часто имеет breking changes в своем докер файле, (3 ли 5 раз за последние пол года), отсюда любое обновление через pull и up -d может что то поломать и стоит каждый раз идти на гит и читать что они там изменили. От части проблема решается выкачиванием их докер файла при каждом обновлении, и соответственно использовании полностью стандартных настроек. Соответственно Watchtower на этот контейнер натравливать точно не стоит.

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

    Photoprism сильно топорнее но и стабильнее в плане обновлений.


    1. Ranger21
      07.08.2024 06:33

      Как photo prism настроить на индексирование новых фоток, чтобы он не сканил всю библиотеку заново?


    1. shibanovan
      07.08.2024 06:33

      А там разработка ради разработки или появляются какие-то интересные фичи?


      1. RomanKu
        07.08.2024 06:33

        Как по интерфейсу, так и по функционалу immich вдохновляется Google Photos, если интерфейс уже вполне готов, то функционал все еще отстает и автор активно его добавляет. Например, в последнем релизе добавилось базовое редактирование фотографий (обрезка), я жду еще в одном из следующих релизов возможность точечной настройки прав доступа (сейчас нельзя поделиться альбомом на просмотр)


        1. DragonZet
          07.08.2024 06:33

          Можно же. Я так с коллегами своим альбомом с фото поделился.


          1. RomanKu
            07.08.2024 06:33
            +2

            Внешним пользователям можно там шарить, но хочется именно в рамках immich, создать общий альбом и дать кому-то доступ на добавление фоток, а кому-то только на просмотр


    1. riky
      07.08.2024 06:33

      Если не ставить авто обновление оно тоже перестанет работать?


      1. Gamegen
        07.08.2024 06:33
        +1

        Всё работает. У меня нет никакого автообновления. Обновляюсь сам руками когда понимаю, что появилось что-то интересное или нужное.

        А так, ну появляется иногда уведомление о новой версии, да и ладно.


      1. Old_paranoid
        07.08.2024 06:33

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

        Также раз или два было полное изменение структуры хранимых данных на сервере, в результате на сервере в профиле болтаются старые фотографии, и непонятно, можно их удалить или нет.


  1. Yavanosta
    07.08.2024 06:33
    +1

    Удалось ли настроить автостарт докера после перезагрузки без необходимости логиниться в систему?


  1. shrimproller
    07.08.2024 06:33

    А для нубов кто нибудь может объяснить, как в этих докерах хранить данные вне контейнера, а в уже существующей директории или вообще на соседнем файлсервере (smb, nfs ИТП)??? Обгуглился уже но толком ничего не нашел



    1. riky
      07.08.2024 06:33

      Можно примонтировать любую локальную папку. В compose раздел volumes просто вместо названия раздела указать путь к папке. То есть до двоеточия


    1. Tirarex
      07.08.2024 06:33

      Докеру можно монтировать директории из хост системы, а эта директория в линуксе может быть как монтированная так и обычная на диске. https://forums.docker.com/t/docker-compose-mount-samba-volume/132407


    1. 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


  1. freebsdmry
    07.08.2024 06:33
    +1

    В список можно также докинуть легковесный PiGallery2

    https://github.com/bpatrik/pigallery2

    UPD А, он в той таблице уже есть.