Запускаем Logitech Media Server в контейнере Docker на сетевом накопителе QNAP

Несмотря на широкие возможности штатного программного обеспечения сетевых накопителей QNAP а также огромному набору предлагаемых дополнительных модулей, иногда возникает необходимость в реализации еще каких-нибудь специфических сервисов. Здесь может пригодиться реализованная в некоторых моделях среднего и верхнего сегментов поддержка систем виртуализации. В этой статье я расскажу о запуске на QNAP сервера Logitech Media Server, который является удобной и достаточно популярной альтернативой DLNA для обслуживания музыкальных коллекций уже на протяжении долгого времени и пользователи сервиса заинтересованы в продолжении работы с ним, в частности, из-за тщательно созданных и оформленных медиабиблиотек и плейлистов.

В реальности дело буквально на несколько минут, однако удобство работы с контейнерами «легкой виртуализации» Docker через Web-интерфейс и полнота документации по ним очень далеки от идеала. К сожалению, эта ситуация часто встречается в созданных индивидуальными разработчиками решениях, которые они делают «для себя». Так что привыкшим к окошкам Windows пользователям бывает очень непросто разобраться. К счастью, для рассматриваемого сценария все не так плохо.

Для написания заметки использовался достаточно специфический сетевой накопитель QNAP TBS-453A, о котором я уже рассказывал пару раз (см. Знакомство и Использование HDMI). Но схема будет работать и с другими моделями QNAP, в которых реализована поддержка Docker. Да и не только с ними, поскольку встроенный Docker сегодня встречается не только у этого производителя.

Стоит сказать пару слов об этой технологии. В определенном смысле этот сервис предлагает аналогичные традиционным виртуальным машинам возможности. Однако вместо реализации полноценной операционной системы он работает по комбинированной схеме – основой выступает штатная операционная система хоста (в нашем случае это Linux в QNAP QTS), а само приложение, выполненное в виде готового пакета-контейнера «интегрируется» в эту ОС и разделяет часть ее ресурсов. В частности это означает, что речь в данном случае может идти только о приложениях для Linux. Плюсом такого подхода является экономия ресурсов, поскольку все контейнеры используют одну ОС, а минусом будет снижение свободы/гибкости самого контейнера.

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

Первый подготовительный этап включает в себя установку на сетевой накопитель Container Station через App Center и создание папки для хранения рабочих файлов LMS. Последняя в общем случае может располагаться в любой директории сетевого накопителя, я просто сделал отдельный общий ресурс с именем lms. Если вы планируете использовать много контейнеров, возможно стоит сделать папку docker и уже в ней разместить все остальные. Установка каких-то специфических прав не требуется, но если хотите иметь доступ к ручному редактированию файлов конфигурации сервера, можете выделить себе права на эту папку.

Для хранения музыки создадим папку Music и запишем в нее несколько альбомов. Поскольку LMS работает в виртуальной среде, вам потребуется настраивать «проброс» папок с сетевого накопителя к нему. То есть удобнее хранить все музыкальные композиции в одном месте, но особых проблем с подключением нескольких папок к сервису конечно нет.

Далее заходим в Container Station и на странице «Создать контейнер» вводим в поле поиска слово Logitech. Эта операция осуществляется по официальному каталогу контейнеров Docker и результатов может быть много. В моем случае – целых две дюжины. Но остановимся на первом, который называется larsks/logitech-media-server/, где первое слово означает автора. Нажимаем кнопку «Установить» около него. Далее выбираем последнюю версию (latest) и внимательно читаем информацию о том, что пакет не является разработкой QNAP и компания за него (включая работоспособность, безопасность, поддержку и т.п.) не отвечает.

 

На следующем экране оставляем все как есть, потом прокручиваем ниже и выбираем «Дополнительные параметры».

Здесь идем на вкладку «Сеть» и меняем значение «Сетевой режим» на «Bridge». Если в вашей сети не используется автоматическая выдача IP-адресов роутером, то здесь же можно назначить постоянный адрес для сервера LMS. Выбор такого режима позволяет не устанавливать отдельные правила для портов и даже реализовать на одном сетевом накопителе работу сразу нескольких серверов. Ценой будет еще один потраченный IP-адрес, что обычно не проблема, и открытость всех портов контейнера, что в домашней локальной сети обычно также не критично с точки зрения безопасности. Кроме того, именно здесь стоит в параметре «Имя узла» указать желаемое имя сервера, которое будет показываться в плеере.

Теперь переходим на «Общие папки» и настраиваем в группе «Том из узла» две записи – для рабочих файлов /lms на /srv/squeezebox и для музыкальных записей от /Music на /srv/music. Права оставляем «Чтение/Запись». Если музыкальных каталогов в NAS у вас больше, то здесь нужно добавить их все. Например /MusicHRA на /srv/musichq. Обратите внимание, что все придуманные имена в пункте «Точка подключения» должны быть разные.

Теперь нажимаем кнопку «Создать» и смотрим статус выполняемых работ по значку в верхнем правом углу.

После завершения у вас в левом столбце будет новая запись. Щёлкнув на нее можно посмотреть статус работы сервиса.

Собственно на этом настройка самого сетевого накопителя закончена. Далее обращаемся к интерфейсу медиасервера LMS для последнего этапа. Поскольку мы выбрали режим Bridge для сетевого интерфейса, то он имеет собственный IP адрес, который нужно узнать (если его не назначали постоянным). Варианта здесь минимум два – можно просто пойти в сетевое окружение Windows и там в разделе Media Devices увидеть наш сервер, потом щелкнув на нем два раза попасть в его Web-интерфейс.

Второй вариант – на сетевом накопителе открыть контейнер (см. иллюстрацию выше), нажать кнопку «Терминал» в верхнем правом углу, в открывшемся окошке ввести команду ifconfig и посмотреть на вторую строку ответа – после inet addr будет указан нужный адрес. Далее открыть его в Web-браузере с указанием порта 9000, ссылка будет выглядеть так: http://192.168.1.8:9000, где вместо 192.168.1.8 ставите ваш адрес.

Поскольку подразумевается, что с настройкой LMS читатель знаком, то обратим внимание на единственный существенный в данной схеме параметр – выбор папки (папок) с музыкой. Напомним, что ранее мы создали соответствие с /Music на сетевом накопителе и /srv/music внутри контейнера. Как раз второй путь и нужно выбрать на странице «Основные настройки» в LMS (или во время прохождения мастера настройки).

Поскольку аппаратного плеера у меня нет, то используем программный вариант – SqueezePlay. После сканирования медиабиблиотеки сервером, она будет сразу же доступна в плеере.

Как мы видим, существенных сложностей для реализации описанной схемы музыкальных трансляций на базе Logitech Media Server и сетевого накопителя QNAP нет. Однако по собственному опыту с другими контейнерами могу сказать, что с LMS мне просто повезло. За формальной простотой инструкций вида «установить и запустить» скрывается много подводных камней. Для большинства, особенно для более сложных, проектов вам потребуется сначала внимательно разобраться с тем, какие порты использует сервис, в каких файлах сохраняется его конфигурация, какие и где программа создает рабочие или временные файлы, как она взаимодействует с другими внешними сервисами. По сравнению с готовыми пакетами QTS, работа с контейнерами Docker заметно более сложная. Зато их число практически неограниченно, а при наличии необходимости, опыта и времени вы можете создать и собственные модули.

+3 0 13356 8
Автор Kirill Kochetkov Рейтинг +4.84 Сила 11.18
Блог Блог им. Kirill Kochetkov 7 9 RSS

8 комментариев

ety
Lms оч крутая штука!!! Спасибо за интересный способ установки!!!!
У меня сейчас он на orangepi установлен. 
ety
Вау)) видимо qnap и lms оч популярны)))
Kirill Kochetkov
По отдельности — да, вместе уже сложнее :)
ety
Ну я когдато искал, на чем кроме компа запустить lms… может и этот вариант бы выбрал. Но нашел тогда вариант с апельсином.
ety
Да и сетевого накопитяля у меня пока нет нормальнго, используется  щас как сетевой винт в dune.
Kirill Kochetkov
О том и речь. LMS относительно мало ресурсов требует и хорошо подходит для недорогих микроПК, если кроме него там мало еще что работает. А NASы (особенно на x86) — это уже совсем другая история по производительности и стоимости. Они десяток-другой подобных сервисов могут потянуть.
Шамиль Джанболатов
Спасибо за новый опыт. Сетевые функции и устройства для меня темный лес. Недавно купил роутер, и с трудом его настроил, хотя интерфейс был максимально дружественным

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