Всем привет!!!
В этом материале я покажу как установить Immich в контейнер docker на Synology и TerraMaster, расскажу как загрузить фото и видео, как сделать резервную копию и как обновить Immich.
![](https://bafista.ru/wp-content/uploads/2024/03/immich-logo02-1024x574.jpg)
Оглавление
Введение
Immich – это популярное приложение для управления фотографиями, которое работает на собственном сервере. Оно представляет собой удобную альтернативу облачным сервисам, таким как Google Фото и использует мощный фреймворк машинного обучения Tensorflow для автоматического тегирования и категоризации фотографий.
Конечно Google Фото намного круче Immich, но тут дело в том что ваши фото только ваши и никто не сможет получить к ним доступ или закрыть вам доступ к ним. А Immich выполняет все базовые функции для такого сервиса и даже немного больше.
Ниже небольшая галерея веб интерфейса и пара скриншотов с мобильного телефона для затравки. Можно увеличивать нажатием.
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240302-jgsu-1024x690.jpeg)
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240302-rayj-1024x690.jpeg)
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240302-jhep-1024x690.jpeg)
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240302-riqr-1024x690.png)
![](https://bafista.ru/wp-content/uploads/2024/03/img_2160-472x1024.png)
![](https://bafista.ru/wp-content/uploads/2024/03/img_2162-472x1024.png)
Immich именно то приложение, которое я готов рекомендовать. Оно очень похоже на Synology Photos и поэтому для владельцев этой марки NAS может стать альтернативой, а для всех остальных это идеальный вариант на мой взгляд. Так как например у TerraMaster их приложение TerrPhoto очень далеко от идеала и далеко от Immich.
Несмотря на все плюсы Immich я буду пользоваться Synology Photos, но если бы у меня его не было, то я бы точно использовал бы Immich.
Плюсы
- Отличное мобильное приложение
- Просмотр на телефоне как локальных так и облачных данных
- Очень мощный поиск людей по лицу, даже с боку
- Возможность делиться альбомами
Минусы
- Веб интерфейс на ПК на английском языке
- Сложноват импорт существующей библиотеки и ее структуры
- Метки на английском языке, русский очень плох
- Нет просмотра папок, только временная шкала и метки
Случайно нашёл Русский язык для браузера в IMMICH.
Нужно перейти в настройки УЧЁТНОЙ записи.
Раскрыв первое меню настроек “App Settings” можно увидеть меню “Language”. Тут я выбрал Русский язык.
Андрей Петрович
Сами разработчики говорят следующее:
- ⚠️ Этот проект находится в очень активной разработке.
- ⚠️ Ожидайте ошибок и критических изменение.
- ⚠️ Не используйте это приложение для бекапа ваших фото и видео.
- ⚠️ Всегда следуйте 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 секунд. Это время в течении которого должен будет загрузиться файл на сервер. Если файл будет загружаться дольше, то выйдет неизвестная ошибка и файл не загрузится. Не стоит делать этот параметр слишком большим, это только заставит выделять дополнительные ресурсы сервера, а нужного результата может не дать.
![](https://bafista.ru/wp-content/uploads/2024/03/image-1024x956.png)
![](https://bafista.ru/wp-content/uploads/2024/03/image-1-1024x956.png)
![](https://bafista.ru/wp-content/uploads/2024/03/image-2-1024x956.png)
Установка Immich на TerraMaster
Для установки Immich я рекомендую в TerraMaster создать отдельную папку общего доступа с таким же именем, в которой и будут лежать все файлы. Единственно не рекомендую включать корзину и скрыть сетевое отображение.
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240302-qrss-1024x671.jpeg)
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240302-qrvz-1024x671.jpeg)
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240302-qryi-1024x671.jpeg)
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240302-qrzs-1024x671.jpeg)
Затем в каталоге Immich создайте такие пустые папки: library external cache redis dbdata
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240302-qszm-1024x671.jpeg)
Внутри папки external создайте пустые папки: user1 user2 user3
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240302-qtek-1024x671.jpeg)
Теперь откройте Docker Manager и создайте новый проект. Придумайте название, укажите путь до проекта и создайте YAML файл который вы подготовили из раздела docker-compose данной инструкции и нажмите проверить. Если ошибок не выдало то применить.
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240302-quic-1024x671.jpeg)
Начнется
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240302-quss-1024x671.jpeg)
Через какое-то время статус перейдет на запущено и можно переходить к пункту первоначальная настройка.
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240302-remd-1024x671.jpeg)
Установка Immich на Synology
Для установки Immich я рекомендую в Synology создать отдельную папку общего доступа с таким же именем, в которой и будут лежать все файлы. Единственно не рекомендую включать корзину и скрыть сетевое отображение. Так же можно включить контрольные суммы, что бы повысить надежность хранения файлов. Остальные параметры я не трогал, оставил по умолчанию.
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240303-jwxq-1024x693.jpeg)
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240303-jwzx-1024x693.jpeg)
Затем в каталоге Immich создайте такие пустые папки: library external cache redis dbdata
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240303-jyqc-1024x693.jpeg)
Внутри папки external создайте пустые папки: user1 user2 user3
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240303-jyze-1024x693.jpeg)
Теперь открываем Container Manager и создаем новый проект. Указываем его имя, путь и создать файл. В поле текста вставляем docker-compose текст и жмем везде далее.
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240303-jzly-1024x693.jpeg)
Если все сделали верно, то увидите exit code 0 и запущенные контейнеры в проекте. Не торопитесь переходить к пункту первоначальной настройки, дайте некоторое время контейнерам развернуться.
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240303-kagm-1024x693.jpeg)
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240303-kaid-1024x693.jpeg)
Разрешить сеть на файрволе
Про настройку Synology Firewall Брандмауэр у меня есть статья и видео
Если у вас на Synology включен файрвол, то необходимо сеть бриджа проекта Immich добавить в разрешающее правило. Для этого посмотрите какая сеть назначена вашему проекту. В моем случаи это 192.168.192.0 с маской 20, что равно 255.255.240.0
Каждый раз при создании проекта эта сеть меняется
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240310-rhjf-1024x416.jpeg)
Идем в настройки фаервола и добавляем нашу сеть выше запрещающего правила.
![](https://bafista.ru/wp-content/uploads/2024/03/image-9-1024x581.png)
Первоначальная настройка Immich
Для первоначальной настройки откройте новую вкладку в браузере и введите такой url http://IP-NAS:2283 либо введите доменное имя, которые вы сделали на этапе настройки обратного прокси https://immich.XXX.synology.me. Должно открыть такое окно
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240302-qydc-1024x690.jpeg)
Первым делом нужно придумать данные нового пользователя администратора. Указывайте реальный почтовый ящик и сложный пароль.
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240302-qykf-1024x690.jpeg)
Затем нужно осуществит mgthdsq d[jд под этим пользователем
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240302-qymw-1024x690.jpeg)
Встретит окно приветствия
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240302-qyol-1024x690.jpeg)
Можно выбрать тему оформления, потом это можно поменять.
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240302-qyqc-1024x690.jpeg)
На этом этапе я рекомендую активировать шаблон хранения файлов
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240302-qyrl-1024x690.jpeg)
Система предложит на выбор множество вариантов, я выбрал Год/месяц/файл
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240302-qyuy-1024x690.jpeg)
И вот теперь все готово и вы попали в веб интерфейс, где еще нет ни одной фотографии. Можно нажать кнопку Upload и загружать файлы, не папки, фотографий либо на телефоне в фирменном приложении. При авторизации на телефоне укажите такие же параметры сервера как и в браузере http://IP-NAS:2283 либо введите доменное имя, которые вы сделали на этапе настройки обратного прокси https://immich.XXX.synology.me
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240302-qyyn-1024x690.jpeg)
Внешняя библиотека
Для чего нужна внешняя библиотека? Дело в том, что по умолчанию в Immich нельзя загружать существующие медиа файлы с собственной структурой данных. Интерфейс Immich в веб или мобильном телефоне загружает только файлы и загружает их в папку библиотеки с заранее установленным шаблоном. Если у вас много папок с фото и видео, то придется через веб интерфейс каждую по отдельности загружать. Это долго и очень неудобно.
Выход есть: использовать внешние библиотеки, которые предусмотрел разработчик, но внятно нигде не написано как их добавлять. Это решит и еще одну проблему связанную с резервными копиями. Через внешнюю библиотеку можно без проблем восстанавливать Immich на новом сервере.
Для начала последовательность действий. Сначала администратор должен в настройках каждого пользователя указать его внешнею библиотеку. Путь у каждого пользователя к внешней библиотеке должен быть уникальный и такой, какой видит его контейнер, а не сервер. В данном случаи в файле docker-compose было подготовлено три пути:
- /usr/src/app/external/user1
- /usr/src/app/external/user2
- /usr/src/app/external/user3
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240302-qzaz-1024x690.jpeg)
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240302-qzem-1024x690.jpeg)
Затем пользователь должен перейти в свой профиль и в разделе библиотеки добавить внешнею библиотеку указав ей тот путь, который указал администратор на скринах выше. Не забудьте нажать кнопку сохранить.
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240302-qzgc-1024x690.jpeg)
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240302-qzip-1024x690.jpeg)
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240302-qzjx-1024x690.jpeg)
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240302-qzlr-1024x690.jpeg)
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240302-qznv-1024x690.jpeg)
После копирования файлов во внешнею библиотеку через проводник необходимо нажать кнопку сканирования всех библиотек. По умолчанию сканирование библиотек запланировано на 00:00 часов каждый день. Этот параметр можно изменить на чаще в настройках.
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240303-kmkt-1024x690.png)
Когда система начнет сканировать библиотеки, процессор очень сильно нагрузится, а в задачах будут видны активные процессы. Процесс сканирования может быть долгим, все зависит от количества файлов и производительности процессора.
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240302-rbos-1024x690.jpeg)
Сами фото и видео начнут отображаться в веб интерфейсе и мобильном приложении
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240302-rayj-1-1024x690.jpeg)
Мобильное приложение
Если веб интерфейс только на английском языке, то мобильное приложение полностью руссифицировано. Работает отлично. Отображает фото и видео как на телефоне, так и на сервере помечая специальным значком каждый файл. Сами файлы можно загружать как по отдельности так и делать это в фоновом режиме.
![](https://bafista.ru/wp-content/uploads/2024/03/img_2160-472x1024.jpeg)
![](https://bafista.ru/wp-content/uploads/2024/03/img_2161-472x1024.jpeg)
![](https://bafista.ru/wp-content/uploads/2024/03/img_2165-472x1024.jpeg)
![](https://bafista.ru/wp-content/uploads/2024/03/img_2162-472x1024.jpeg)
![](https://bafista.ru/wp-content/uploads/2024/03/img_2163-472x1024.jpeg)
![](https://bafista.ru/wp-content/uploads/2024/03/img_2164-472x1024.jpeg)
Обновление Immich
Как уже писалось выше разработчики активно развивают проект и он время от времени обновляется. Что бы его обновить в контейнере сделайте следующее:
Рекомендую сделать резервную копию библиотек
- Остановите проект
- Очистите проект
- Удалите образы проекта Immich
- Заново создайте проект. Во время создания будут скачены свежие образы.
- Готово, Immich в контейнере обновлен.
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240303-kptj-1024x693.jpeg)
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240303-kqql-1024x693.jpeg)
![](https://bafista.ru/wp-content/uploads/2024/03/scr-20240303-ktmk-1024x693.jpeg)
Резервное копирование
Для резервного копирования Immich нужно делать бекап всей папки Immich. Тут будут все файлы библиотек, база данных и файл docker-compose. Если нужно будет развернуть, то просто создайте новый проект с этим файлом, при этом папки так же должны быть на этих же местах, и все восстановится как было.
![](https://bafista.ru/wp-content/uploads/2024/03/image-3-1024x693.png)
Теперь вы знаете как установить Immich для просмотра и хранения личных фото и видео на ваш Synology или TerraMaster, но по аналогии можно поставить куда угодно главное поддержка docker и docker-compose.