Самостоятельно хостимые сервисы предоставляют полный контроль над данными, но накладывают на пользователя обязанности по их настройке и обслуживанию. Immich, популярная альтернатива Google Photos, долгое время требовала от энтузиастов написания собственных скриптов для автоматизации повседневных задач. С выходом версии 3.0 в июле текущего года ситуация изменилась: в приложении появился предварительный функционал Workflows, заменяющий многие внешние решения.

Отказ от внешних скриптов в пользу встроенных функций
До внедрения Workflows единственным способом автоматизации работы с Immich оставалось использование API и CLI, что приводило к созданию громоздких и хрупких конфигураций. Ранее для поддержания порядка в медиабиблиотеке требовался отдельный скрипт-сортировщик, запускаемый через cron каждые 15 минут. Программа анализировала имена файлов и на основе регулярных выражений распределяла изображения и видео по соответствующим папкам. Этот процесс не был мгновенным, а ошибки в шаблонах имен могли приводить к неверному распределению файлов.
Аналогичная ситуация складывалась с автоматическим тегированием: скрипт считывал EXIF-данные и метаинформацию о типе устройства, чтобы корректно категоризировать контент. Эти решения требовали ручного обновления при изменениях в API, создавая лишнюю нагрузку на пользователя.
Принципы работы системы Workflows
Новый инструментарий Workflows, доступный в разделе Utilities веб-интерфейса, опирается на стандартную логику автоматизации: триггеры, фильтры и действия. Процесс создания рабочего процесса начинается с выбора события, например AssetCreate, которое активируется в момент загрузки нового файла. Далее последовательность шагов определяет условия (фильтры) и последующие изменения (действия).
Пользователи могут легко настроить автоматическую сортировку по альбомам или присвоение меток на основе пути к файлу. Важным дополнением стала поддержка фильтров по метаданным EXIF, что позволило перенести логику тегирования камер непосредственно в интерфейс Immich, полностью отказавшись от написания кода для этих задач.

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

- Очистка медиатеки от «мусорных» файлов и видео, которые часто сохраняются из социальных сетей.
- Восстановление или определение дат съемки для файлов, в которых отсутствуют соответствующие EXIF-поля.
На текущий момент скрипты для этих сценариев остаются необходимыми. Однако возможность экспорта настроек Workflows в формате JSON упрощает обмен опытом между пользователями. Нативная автоматизация в Immich делает эксплуатацию платформы более надежной и предсказуемой, постепенно сводя к минимуму необходимость в поддержке стороннего программного обеспечения.
Почему Workflows — это качественный скачок для самостоятельного хостинга
Для многих пользователей самостоятельный хостинг — это палка о двух концах. С одной стороны, он дарует полный суверенитет над собственными цифровыми данными, избавляя от зависимости от корпоративных облачных сервисов. С другой — перекладывает всё бремя настройки и обслуживания инфраструктуры на плечи владельца. До появления версии 3.0 Immich был ярким примером этой проблемы: это был великолепный инструмент для управления медиа, но для поддержания порядка в библиотеке пользователю приходилось «обвешивать» его костылями — кастомными скриптами, которые нужно было настраивать на запуск по определенным событиям.

Мои старые скрипты, хоть и справлялись с задачей поддержания библиотеки в актуальном состоянии, всегда вызывали у меня опасения при необходимости их модификации. Самым хрупким узлом был сортировщик альбомов, работающий через cron каждые 15 минут. Он «вытягивал» последние активы через API и распределял их по папкам на основе регулярных выражений. Из-за этого снимки экрана, видео и сканы попадали в свои директории с задержкой, а странные шаблоны имен файлов иногда приводили к тому, что фото оказывались совсем не там, где должны были. Скрипт для тегирования был не лучше: он работал по аналогичной схеме, пытаясь определить источник контента по именам файлов и EXIF-данным. Использование API и CLI было единственным доступным методом, но такой подход требовал постоянной ручной корректировки кода при каждом обновлении API, превращая хостинг в рутину.
Интуитивная автоматизация внутри приложения
С появлением Workflows вся логика автоматизации переместилась внутрь Immich. Интерфейс выполнен в интуитивно понятном стиле, заимствуя общепринятые конвенции и терминологию, которые пользователи привыкли видеть в других популярных инструментах автоматизации. Это значительно снизило порог вхождения: вместо написания и отладки кода достаточно прописать последовательность действий, которая запускается мгновенно после загрузки нового фото. Например, для сортировщика альбомов я просто задал триггер AssetCreate, добавил фильтр по имени файла и выбрал действие «добавить в альбом». Это работает куда стабильнее, чем мой старый «cron-скрипт», так как реакция системы происходит в момент появления файла, а не с 15-минутной задержкой.

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

Дальнейшие шаги и потенциал системы
Конечно, предпросмотровая версия Workflows еще не заменила абсолютно всё. На данном этапе набор доступных триггеров, фильтров и действий всё ещё ограничен. В моей практике пока остаются два сценария, требующие внешних решений:
- Очистка от «цифрового мусора»: у меня до сих пор работает скрипт, который сканирует медиапотоки членов семьи на наличие видео из социальных сетей. Он ориентируется на специфическую шестнадцатеричную структуру имен файлов, которые мессенджеры и соцсети присваивают контенту при сохранении, и удаляет их, так как никто не планирует хранить или бэкапить этот контент.
- Восстановление дат съемки: некоторые файлы приходят без EXIF-тегов, и я использую внешний скрипт для попытки «угадать» дату съемки. В текущих Workflows такой функциональности пока нет.
Тем не менее, направление развития радует. Главное преимущество нынешнего подхода заключается в том, что Workflows экспортируются в формате JSON. Это позволяет сообществу легко делиться удачными конфигурациями и примерами использования в сети. Я с нетерпением жду обновлений, которые сделают этот инструмент более мощным, чтобы я мог окончательно избавиться от оставшихся внешних скриптов и перевести всю логику управления библиотекой непосредственно в Immich.






