Сетевой дневник одного программиста

Персональный блог Константина Огородова

Интеграция приложений Transmmission, Jackett, Radarr, Sonarr, Plex

Я уже описывал ранее установку и настройку Plex — замечательного приложения позволяющего превратить сетевое хранилище ещё и в мультимедиа сервер. Plex предоставляет возможности по удобному отображению библиотек мультимедиа, а также непосредственно по просмотру файлов мультимедиа практически на любом устройстве. Однако задача по наполнению библиотеки мультимедиа должна быть решена сторонними средствами. Какими именно — это индивидуальный вопрос. В данной статье я буду описывать решение, которое чаще других упоминается в вопросах о построении эффективного и удобного домашнего мультимедиа сервера (Хфбр, 2, 3). Речь пойдёт о связке таких приложений как Transmmission, Jackett, Radarr, Sonarr, Plex. И раз уж речь зашла о Торрентах, использование которых Роскомнадзор всячески пытается ограничить, то сразу оговоримся, что в данной статье я делаю обзор технологических решений для обмена публичным мультимедиа содержимым, и ни в коем случае не призываю к нарушению авторских прав, поскольку это деяние влечёт к привлечению к гражданской, административной или уголовной ответственности. Кстати, на тему авторских прав есть совершенно замечательное видео Олега Комолова на YouTube’е.

Также отмечу, что на момент написания статьи команда TrueCharts считает приложения для TrueNAS-SCALE-21.02-ALPHA.1 устаревшими и вовсю готовиться к версии TrueNAS SCALE 21.04 ALPHA. Для меня это означает, что в списке моих приложений остались только 4 официальных приложения от ix-systems, а для получения доступа к community приложениям, мне нужно добавить репозиторий legacy_21.02ALPHA. Я решил не заморачиваться с этим, а использовать образы с docker hub’а.

Перейдём непосредственно к установке приложений и начнём с Transmmission — простого и очень не требовательного к ресурсам BitTorrent-клиента. Вот страница с описанием образа, на которой говориться, что образу нужны 3 тома на внешней файловой системе: /config, /watch и /downloads. Набор данных /downloads — это основное место, куда будут загружаться мультимедиа файлы и в последующем с этими файлами нужно будет производить какие-то действия, и возможно даже понадобиться доступ по сети. Однако для достижения наилучших результатов я не буду создавать отдельный набор данных, а создам каталог в наборе данных media. Более подробное объяснение причин такого расположения будет далее по тексту. Набор данных для watch я создам на SSD — Transmmission будет периодически поглядывать на этот набор данных и если обнаружит там torrent-файл, то добавит его в очередь загрузки. Имя пусть будет torrent-black-hole. Набор данных для конфигурации отдельно создавать не буду — пусть за меня это сделает TrueNAS. После создания необходимых наборов данных можно нажать на кнопку Launch Docker Image и указать следующие параметры:

  • Application Name = transmission
  • Image Repository = ghcr.io/linuxserver/transmission
  • Container Environment Variables:
    • TZ = Asia/Tomsk (к примеру)
    • TRANSMISSION_WEB_HOME = /transmission-web-control/ не обязательный параметр определяющий внешний вид клиента.
  • Host Network = true потому что не используется обратный прокси
  • Host Path Volumes:
    • Host Path = /mnt/hdd/media/downloads, Mount Path = /downloads
    • Host Path = /mnt/ssd/torrent-black-hole, Mount Path = /watch
  • Volumes:
    • Dataset Name = config, Mount Path = /config

После запуска интерфейс приложения будет доступен на порту 9091. Интерфейс transmission-web-control наиболее информативен и предоставляет наибольшее число настроек, в том числе и возможность проверки открытости\закрытости порта на маршрутизаторе.

Далее переходим к Jackett. Это приложение по сути является агрегатором индексаторов. Не очень понятное определение, поэтому копнём чуть глубже: индексатор — это абстракция позволяющая предоставить доступ к трекеру посредством API. Таким образом стороннее программное обеспечение может отправлять поисковые запросы к Jackett, а он в свою очередь отправит запрос на все индексаторы (трекеры), преобразует результат из html в XML и в таком виде вернёт результат. Таким образом можно производить поиск мультимедиа сразу по нескольким трекерам и выбирать необходимую раздачу из результатов. Список поддерживаемых трекеров впечатляет, хотя конечно лишь не многие из списка адаптированы для русскоязычного сообщества.
Страница с документацией к образу, настройки следующие:

  • Application Name = jackett
  • Image Repository = ghcr.io/linuxserver/jackett
  • Container Environment Variables:
    • TZ = Asia/Tomsk (к примеру)
    • AUTO_UPDATE = false
  • Host Network = true потому что не используется обратный прокси
  • Host Path Volumes:
    • Host Path = /mnt/ssd/torrent-black-hole, Mount Path = /downloads
  • Volumes:
    • Dataset Name = config, Mount Path = /config

Обратите внимание что каталог /downloads Jackett’а и каталог /watch Transmmission это одно и то же место. Идея в том, что после поиска Jackett поместит torrent файл в локальный каталог torrent-black-hole, а Transmmission через некоторое время подхватит этот торрент и поставит в очередь для загрузки. Остаётся только проверить работоспособность и для этого необходимо открыть интерфейс приложения на порту 9117. Кнопка Add indexer позволяет увидеть полный список поддерживаемых трекеров, а упорядочивание по языку позволит отобразить группу для русскоязычной целевой аудитории. Что ж список действительно впечатляющий, но большую часть из этого списка Роскомнадзор заблокировал. А знаете сколько порно-трекеров из этого списка заблокировано? — 0! Я специально ткнул с десяток разных ссылок и они все бодренько открылись, причём на большинстве из них прямо на главной странице красовались картинки о-о-о-очень откровенного содержания + не требовалось никакой регистрации для загрузки torrent-файлов, а кое-где предлагался просмотр в плеере через сайт без загрузки. Не поймите меня не правильно — я вовсе не какой-нить ханжа и не являюсь противником порно, но раз уж я отец двух несовершеннолетних детей, то считаю, что всему своё время. Т.е. порнография должна быть доступна взрослым и в то же время не быть так легко доступна несовершеннолетним, о чём даже есть соответствующий закон. Хорошо было бы принять хоть какие-то меры по ограничению несовершеннолетних детей от подобных материалов, например регистрацию для просмотра. Но о чём я говорю, если на территории России круглосуточно, без регистрации и в режиме online доступен самый крупный и популярный источник порно — PornHub.
В контексте вышеизложенного меня беспокоит вот какой вопрос: почему Роскомнадзор в первую очередь блокирует сайты с нелегальными копиями фильмов и сериалов и в то же время не блокирует или снимает блокировку с сайтов предлагающих порнографические материалы публично? Может быть распространители роликов с «клубничкой» не заявляют о нарушении авторских прав, или данные материалы рассматриваются как методические пособия к учебнику «Биология 8-й класс. Половая система человека» ? На ум приходят слова классика «Не все благополучно в Датском королевстве«.

Однако я отвлёкся. Чтобы Jackett заработал так сказать в полную силу понадобиться ещё один образ. Подробно останавливаться не буду, т.к. там и настраивать-то нечего. После установки и запуска останется лишь в UI Jackett прописать соответствующие настройки.

Далее переходим к Radarr. Это приложение позволяет организовать т.н. «список фильмов для просмотра» в удобном и наглядном формате вместе с постером, описанием, рейтингом и т.п. Помимо ручного добавления фильмов предусмотрена интеграция с другими сервисами, такими как TMBD и IMDB посредством списков. Вне зависимости от того, каким образом был сформирован «список для просмотра» в конечном итоге для каждого фильма из списка можно отправить запрос к Jackett и получить список доступных раздач, если таковые имеются. Это процесс может быть выполнен как в автоматическом режиме, так и в интерактивном предлагая чуть больше контроля. Автоматический режим имеет смысл использовать после тщательной настройки параметров приложения и отладки всего процесса.
Помимо интеграции с агрегатором индексаторов (Jackett) и клиентом загрузки (Transmission и др.), Radarr также интегрируется с множеством других приложений для автоматизации и предоставления удобства конечному пользователю. Например можно настроить отправку уведомлений через Telegram, Slack или Twitter, а также отправку уведомлений сервису Plex о необходимости обновить библиотеку мультимедиа. Это особенно удобно при автоматическом режиме работы Radarr — по мере появления новых раздач с улучшенным качеством файлы будут автоматически добавляться в очередь загрузки с информированием пользователя на всех этапах.
Однако прежде чем перейти к установке необходимо остановиться вот ещё на каком моменте: несмотря на красивый фасад в виде web UI, интеграции со сторонними сервисами и автоматизации, в основе решения лежит использование торрент-трекеров, некоторые из которых для каждого пользователя учитывают т.н. рейтинг (ratio) — отношение отданного к скачанному. Т.е. предполагается, что после скачивания файл мультимедиа ещё некоторое время должен находиться в раздаче в каталоге клиента загрузок. И в то же время конечный пользователь заинтересован для скорейшего перемещения файла в каталог Plex’а и добавления в соответствующую библиотеку, для чего файл должен быть определённым образом переименован. Противоречивые задачи — как быть? — Radarr решает эту проблему и предлагает 2 варианта: копирование файла или создание жёсткой ссылки. Второй вариант предпочтительней, поскольку позволяет иметь лишь одну копию данных, но ссылаться на данные можно по 2-м разным именам. Для использования этого решения необходимо выполнить условие: жёсткие ссылки могут быть созданы только в рамках одной файловой системы, т.е. в рамках одного набора данных (DataSet), а также в рамках единой точки монтирования контейнера. Таким образом Radarr должен иметь единую точку монтирования для доступа как к каталогу загрузок, так и к каталогу мультимедиа Plex. Об этом упоминается на странице образа в секции «Application Setup».
Перейдём к установке и конфигурированию образа:

  • Application Name = radarr
  • Image Repository = ghcr.io/linuxserver/radarr
  • Container Environment Variables:
    • TZ = Asia/Tomsk (к примеру)
  • Host Network = true потому что не используется обратный прокси
  • Host Path Volumes:
    • Host Path = /mnt/hdd/media, Mount Path = /media
  • Volumes:
    • Dataset Name = config, Mount Path = /config

Далее нужно настроить Radarr перейдя в UI на порту 7878:

  1. выставить настройки в UI для языка, даты и времени.
  2. добавить индексатор (indexer) из Jakett согласно инструкции на главной странице Jakett.
  3. добавить Transmission в качестве клиента загрузки. Для удобства можно указать отдельную категорию для Radarr.
    После добавления необходимо выполнить сопоставление удалённого пути: Удаленный путь = /downloads, Локальный путь = /media/downloads/
  4. Добавить одну или несколько корневых папок на вкладке Настройки -> Управление медиа.
  5. Подключить Plex,

В процессе настройки возможны некоторые проблемы из-за отсутствия необходимых разрешений, о чём можно почитать в логе, доступ к которому организован прямо из UI. Тестировать корректность конфигурации рекомендую на файлах малого объёма.
Проверить используются ли жёсткие ссылки или нет можно с помощью команды ls с ключом -l, которая отображает кол-во ссылок для файла во второй колонке.

Последнее приложение из списка — Sonarr, Назначение и функции у этого приложения точно такие же как у Radarr, но только в контексте сериалов. Страничка образа и настройки аналогичные Radarr’у. Интерфейс доступен на порту 8989. Далее необходимо настроить Sonarr аналогично Radarr’у.
Правда дальше не всё так гладко, как хотелось бы:

  1. отсутствует русский язык для UI — это как бы мелочи.
  2. загрузка метаданных только на английском языке — вот это уже печально. Описание сериалов и название серий только на английском, также как и название корневого каталога для сериала, что в свою очередь приведёт к загрузке метаданных Plex’ом также на английском. Чтобы это обойти нужно при добавлении сериала исправить имя корневого каталога на русский вариант, для чего зайти на TheTVDB и уточнить название. При этом конечно же названия отдельных файлов будут на английском, но Plex подгрузит названия по номерам сезонов и серий, так что этот обходной вариант можно считать рабочим. Хотя если очень хочется, то можно и названия эпизодов перевести на русский при помощи FileBot (образ), но тогда нужно будет делать привязку повторно для Sonarr.
  3. Из-за разницы в языках нужный сериал может быть не обнаружен на трекере. В этом случае придётся вручную загрузить сериал в каталог sonarr и если sonarr сможет распознать название сериала и сезон, то весь дальнейший процесс добавления пройдёт автоматически. Если распознать не удастся — придётся импортировать вручную.
  4. проблема с распознаванием эпизодов. Это скорее проблема с именованием в самой раздаче, но упомянуть об этом нужно. Решается также через ручной импорт.

В общем из-за отсутствия поддержки языков кроме английского есть некоторое неудобство, но в целом решение можно назвать приемлемым.

Напоследок стоит упомянуть ещё одно приложение Ombi. Через это приложение пользователи Plex с доступом к локальному серверу смогут отправлять запросы на загрузку фильмов и сериалов, т.е. актуально для многопользовательского режима с доступом извне. Интегрируется с Sonarr, Radarr и Lidarr.

Интеграция приложений Transmmission, Jackett, Radarr, Sonarr, Plex

Один комментарий к “Интеграция приложений Transmmission, Jackett, Radarr, Sonarr, Plex

  1. Сделайте пожалуйста инструкцию по установке aria2 на truenas scale. Вечный deploying (( не могу разобраться в чем дело(

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Пролистать наверх