Immich для просмотра и хранения личных фото и видео

Всем привет!!!

В этом материале я покажу как установить Immich в контейнер docker на Synology и TerraMaster, расскажу как загрузить фото и видео, как сделать резервную копию и как обновить Immich.

Введение

Immich – это популярное приложение для управления фотографиями, которое работает на собственном сервере. Оно представляет собой удобную альтернативу облачным сервисам, таким как Google Фото и использует мощный фреймворк машинного обучения Tensorflow для автоматического тегирования и категоризации фотографий.

Конечно Google Фото намного круче Immich, но тут дело в том что ваши фото только ваши и никто не сможет получить к ним доступ или закрыть вам доступ к ним. А Immich выполняет все базовые функции для такого сервиса и даже немного больше.

Ниже небольшая галерея веб интерфейса и пара скриншотов с мобильного телефона для затравки. Можно увеличивать нажатием.

Immich именно то приложение, которое я готов рекомендовать. Оно очень похоже на Synology Photos и поэтому для владельцев этой марки NAS может стать альтернативой, а для всех остальных это идеальный вариант на мой взгляд. Так как например у TerraMaster их приложение TerrPhoto очень далеко от идеала и далеко от Immich.

Несмотря на все плюсы Immich я буду пользоваться Synology Photos, но если бы у меня его не было, то я бы точно использовал бы Immich.

Плюсы

  • Отличное мобильное приложение
  • Просмотр на телефоне как локальных так и облачных данных
  • Очень мощный поиск людей по лицу, даже с боку
  • Возможность делиться альбомами

Минусы

  • Веб интерфейс на ПК на английском языке
  • Сложноват импорт существующей библиотеки и ее структуры
  • Метки на английском языке, русский очень плох
  • Нет просмотра папок, только временная шкала и метки

Сами разработчики говорят следующее:

  • ⚠️ Этот проект находится в очень активной разработке.
  • ⚠️ Ожидайте ошибок и критических изменение.
  • ⚠️ Не используйте это приложение для бекапа ваших фото и видео.
  • ⚠️ Всегда следуйте 3-2-1 плану резервного копирования ваших драгоценных фото и видео!

Я поясню почему так. На самом деле они просто предостерегают, так как занимаются этим приложением в свободное от работы время и активно внедряют различные новшества и решения. Поэтому они не хотят брать на себя ответственность за ваши личные данные. На самом деле такое можно написать про все проекты с открытым исходным кодом и бесплатным распространением. При этом мы все пользуемся этими решениями.

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

Системные требования

  • Поддержа Docker и docker-compose
  • ОЗУ не менее 4ГБ, предпочтительно 6ГБ
  • Процессор х86 с минимум 2 ядра, предпочтительно 4
  • Если Synology, то DSM 7.2 и новее
  • Если TerraMaster, то TOS 5.1 и новее

Видео ролик

Файл docker-compose

Нужно пояснить про файл docker-compose для проекта Immich. Дело в том, что этот файл придуман мной на основе официального файла разработчиков, но оптимизирован для работы в Synology и TerraMaster, хотя по факту этот файл можно применять практически где угодно, например в Portainer. Но некоторые особенности пояснить нужно.

Проект состоит из 4-х контейнеров:

  • immich_server – это контейнер предоставляющий веб интерфейс
  • immich_microservices – это основной контейнер, который обрабатывает и анализирует медиа файлы при их добавлении
  • immich_machine_learning – это контейнер с ИИ, который благодаря нейросети изучает фото и извлекает метки
  • immich_redis – это контейнер для кеширования и ускорения работы
  • immich_postgres – это контейнер с базой данных

Внутренний порт службы Immich 3001 менять нельзя, а внешний 2283 можно. Именно 2283 вы будите указывать в браузере или в телефоне для подключения к интерфейсу Immich, но я рекомендую использовать для этого обратный прокси и SSL сертификат, о чем расскажу ниже.

В папке library будет лежать все файлы загруженные через веб интерфейс или через мобильное приложения. Они будут отсортированы по годам и месяцам. Каталоги external/userХ я предусмотрел для трех пользователей, если у вас их больше добавьте самостоятельно. Эти каталоги нужны для импорта уже существующей коллекции фото и видео с вашей собственной структурой. Нужно будет просто скопировать в эти папки ваши данные и отсканировать.

Для владельцев не Synology очень важно закомментировать или удалить настройку user: 1024:101, так как если этого не сделать работать может не предсказуемо плохо или вообще не заработает.

version: "3.8"

services:
  immich-server:
    container_name: immich_server
    image: ghcr.io/immich-app/immich-server:release
    command: [ "start.sh", "immich" ]
    volumes:
      - ./library:/usr/src/app/upload # Основная папка с фото и видео материалами
      # Дополнительные папки для внешних библиотек. Создайте столько сколько будет у вас пользователей.
      - ./external/user1:/usr/src/app/external/user1
      - ./external/user2:/usr/src/app/external/user2
      - ./external/user3:/usr/src/app/external/user3
      # - /etc/localtime:/etc/localtime:ro
    user: 1024:101 # Этот параметр только для Synology DSM, установите решетку в начале строки для других ОС
    environment:
      - DB_PASSWORD=immich_postgres
      - DB_HOSTNAME=immich_postgres
      - DB_USERNAME=immich
      - DB_DATABASE_NAME=immich
      - REDIS_HOSTNAME=immich_redis
      - POSTGRES_PASSWORD=immich_postgres
      - POSTGRES_DB=immich
      - POSTGRES_USER=immich
    ports:
      - 2283:3001
    depends_on:
      - immich_redis
      - immich_postgres
    restart: always

  immich-microservices:
    container_name: immich_microservices
    image: ghcr.io/immich-app/immich-server:release
    command: [ "start.sh", "microservices" ]
    user: 1024:101 # Этот параметр только для Synology DSM, установите решетку в начале строки для других ОС
    environment:
      - DB_PASSWORD=immich_postgres
      - DB_HOSTNAME=immich_postgres
      - DB_USERNAME=immich
      - DB_DATABASE_NAME=immich
      - REDIS_HOSTNAME=immich_redis
      - POSTGRES_PASSWORD=immich_postgres
      - POSTGRES_DB=immich
      - POSTGRES_USER=immich
    volumes:
      - ./library:/usr/src/app/upload # Основная папка с фото и видео материалами
      # Дополнительные папки для внешних библиотек. Создайте столько сколько будет у вас пользователей.
      - ./external/user1:/usr/src/app/external/user1
      - ./external/user2:/usr/src/app/external/user2
      - ./external/user3:/usr/src/app/external/user3
      # - /etc/localtime:/etc/localtime:ro
    depends_on:
      - immich_redis
      - immich_postgres
    restart: always

  immich-machine-learning:
    container_name: immich_machine_learning
    image: ghcr.io/immich-app/immich-machine-learning:release
    user: 1024:101 # Этот параметр только для Synology DSM, установите решетку в начале строки для других ОС
    environment:
      - DB_PASSWORD=immich_postgres
      - DB_HOSTNAME=immich_postgres
      - DB_USERNAME=immich
      - DB_DATABASE_NAME=immich
      - REDIS_HOSTNAME=immich_redis
      - POSTGRES_PASSWORD=immich_postgres
      - POSTGRES_DB=immich
      - POSTGRES_USER=immich
    volumes:
      - ./library:/usr/src/app/upload # Основная папка с фото и видео материалами
      # Дополнительные папки для внешних библиотек. Создайте столько сколько будет у вас пользователей.
      - ./external/user1:/usr/src/app/external/user1
      - ./external/user2:/usr/src/app/external/user2
      - ./external/user3:/usr/src/app/external/user3
      - ./cache:/cache
    restart: always

  immich_redis:
    container_name: immich_redis
    image: redis
    user: 1024:101 # Этот параметр только для Synology DSM, установите решетку в начале строки для других ОС
    volumes:
      - ./redis:/data
    restart: always

  immich_postgres:
    container_name: immich_postgres
    image: tensorchord/pgvecto-rs:pg16-v0.2.0
    environment:
      - DB_PASSWORD=immich_postgres
      - DB_HOSTNAME=immich_postgres
      - DB_USERNAME=immich
      - DB_DATABASE_NAME=immich
      - REDIS_HOSTNAME=immich_redis
      - POSTGRES_PASSWORD=immich_postgres
      - POSTGRES_DB=immich
      - POSTGRES_USER=immich
    volumes:
      - ./dbdata:/var/lib/postgresql/data
    restart: always

volumes:
  dbdata:
  cache:
  library:

networks:
  immich:
    external: false

Обратный прокси

TerraMaster

В операционной системе TOS от TerraMaster нет функционала обратного прокси, а так же нет возможности получать и продлевать бесплатные SSL сертификаты. Поэтому вам придется сначала выполнить установку Nginx Proxy Manager на TerraMaster и там настроить обратный прокси для Immich. В данной инструкции я не буду рассматривать эти настройки. Но по аналогии они один в один, как и у Synology.

Synology

В Synology DSM есть все необходимые компоненты. Открываете панель управления, портал для входа, дополнительно и обратный прокси. Тут создаете правило как показано на картинке ниже. Источник соединение https, имя домена, порт 443, назначение http, localhost и порт 2283 или тот что был у вас в yml файле. Затем на вкладке пользовательский заголовок нужно добавить WebSocket. В дополнительных настройках обязательно увеличить время от 600 до 3600 секунд. Это время в течении которого должен будет загрузиться файл на сервер. Если файл будет загружаться дольше, то выйдет неизвестная ошибка и файл не загрузится. Не стоит делать этот параметр слишком большим, это только заставит выделять дополнительные ресурсы сервера, а нужного результата может не дать.

Установка Immich на TerraMaster

Для установки Immich я рекомендую в TerraMaster создать отдельную папку общего доступа с таким же именем, в которой и будут лежать все файлы. Единственно не рекомендую включать корзину и скрыть сетевое отображение.

Затем в каталоге Immich создайте такие пустые папки: library external cache redis dbdata

Внутри папки external создайте пустые папки: user1 user2 user3

Теперь откройте Docker Manager и создайте новый проект. Придумайте название, укажите путь до проекта и создайте YAML файл который вы подготовили из раздела docker-compose данной инструкции и нажмите проверить. Если ошибок не выдало то применить.

Начнется

Через какое-то время статус перейдет на запущено и можно переходить к пункту первоначальная настройка.

Установка Immich на Synology

Для установки Immich я рекомендую в Synology создать отдельную папку общего доступа с таким же именем, в которой и будут лежать все файлы. Единственно не рекомендую включать корзину и скрыть сетевое отображение. Так же можно включить контрольные суммы, что бы повысить надежность хранения файлов. Остальные параметры я не трогал, оставил по умолчанию.

Затем в каталоге Immich создайте такие пустые папки: library external cache redis dbdata

Внутри папки external создайте пустые папки: user1 user2 user3

Теперь открываем Container Manager и создаем новый проект. Указываем его имя, путь и создать файл. В поле текста вставляем docker-compose текст и жмем везде далее.

Если все сделали верно, то увидите exit code 0 и запущенные контейнеры в проекте. Не торопитесь переходить к пункту первоначальной настройки, дайте некоторое время контейнерам развернуться.

Разрешить сеть на файрволе

Про настройку Synology Firewall Брандмауэр у меня есть статья и видео

Если у вас на Synology включен файрвол, то необходимо сеть бриджа проекта Immich добавить в разрешающее правило. Для этого посмотрите какая сеть назначена вашему проекту. В моем случаи это 192.168.192.0 с маской 20, что равно 255.255.240.0

Каждый раз при создании проекта эта сеть меняется

Идем в настройки фаервола и добавляем нашу сеть выше запрещающего правила.

Первоначальная настройка Immich

Для первоначальной настройки откройте новую вкладку в браузере и введите такой url http://IP-NAS:2283 либо введите доменное имя, которые вы сделали на этапе настройки обратного прокси https://immich.XXX.synology.me. Должно открыть такое окно

Первым делом нужно придумать данные нового пользователя администратора. Указывайте реальный почтовый ящик и сложный пароль.

Затем нужно осуществит mgthdsq d[jд под этим пользователем

Встретит окно приветствия

Можно выбрать тему оформления, потом это можно поменять.

На этом этапе я рекомендую активировать шаблон хранения файлов

Система предложит на выбор множество вариантов, я выбрал Год/месяц/файл

И вот теперь все готово и вы попали в веб интерфейс, где еще нет ни одной фотографии. Можно нажать кнопку Upload и загружать файлы, не папки, фотографий либо на телефоне в фирменном приложении. При авторизации на телефоне укажите такие же параметры сервера как и в браузере http://IP-NAS:2283 либо введите доменное имя, которые вы сделали на этапе настройки обратного прокси https://immich.XXX.synology.me

Внешняя библиотека

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

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

Для начала последовательность действий. Сначала администратор должен в настройках каждого пользователя указать его внешнею библиотеку. Путь у каждого пользователя к внешней библиотеке должен быть уникальный и такой, какой видит его контейнер, а не сервер. В данном случаи в файле docker-compose было подготовлено три пути:

  • /usr/src/app/external/user1
  • /usr/src/app/external/user2
  • /usr/src/app/external/user3

Затем пользователь должен перейти в свой профиль и в разделе библиотеки добавить внешнею библиотеку указав ей тот путь, который указал администратор на скринах выше. Не забудьте нажать кнопку сохранить.

После копирования файлов во внешнею библиотеку через проводник необходимо нажать кнопку сканирования всех библиотек. По умолчанию сканирование библиотек запланировано на 00:00 часов каждый день. Этот параметр можно изменить на чаще в настройках.

Когда система начнет сканировать библиотеки, процессор очень сильно нагрузится, а в задачах будут видны активные процессы. Процесс сканирования может быть долгим, все зависит от количества файлов и производительности процессора.

Сами фото и видео начнут отображаться в веб интерфейсе и мобильном приложении

Мобильное приложение

Если веб интерфейс только на английском языке, то мобильное приложение полностью руссифицировано. Работает отлично. Отображает фото и видео как на телефоне, так и на сервере помечая специальным значком каждый файл. Сами файлы можно загружать как по отдельности так и делать это в фоновом режиме.

Обновление Immich

Как уже писалось выше разработчики активно развивают проект и он время от времени обновляется. Что бы его обновить в контейнере сделайте следующее:

Рекомендую сделать резервную копию библиотек

  1. Остановите проект
  2. Очистите проект
  3. Удалите образы проекта Immich
  4. Заново создайте проект. Во время создания будут скачены свежие образы.
  5. Готово, Immich в контейнере обновлен.

Резервное копирование

Для резервного копирования Immich нужно делать бекап всей папки Immich. Тут будут все файлы библиотек, база данных и файл docker-compose. Если нужно будет развернуть, то просто создайте новый проект с этим файлом, при этом папки так же должны быть на этих же местах, и все восстановится как было.

Теперь вы знаете как установить Immich для просмотра и хранения личных фото и видео на ваш Synology или TerraMaster, но по аналогии можно поставить куда угодно главное поддержка docker и docker-compose.

Подписаться
Уведомить о
guest
8 Комментарий
Старые
Новые
Межтекстовые Отзывы
Посмотреть все комментарии