[recovery mode] Организация музыкального сопровождения торгового зала

Добрый день, вечер или ночь, все зависит от времени суток в который вам довелось прочитать мою статью.

В связи с открытием торгового зала была поставлена задача, организовать фоновую музыку в торговом зале, а именно:
 — Трансляция из главного офиса подготовленного музыкального сопровождения;
 — Управление только из центрального офиса, без доступа сотрудников торгового зала;
 — Периодическое воспроизведение рекламы (необходима ежедневная смена рекламных роликов;
 — Работа только в часы работы торгового зала;
 — Без покупки дополнительного оборудования и ПО.

Что мы имеем:
 — Контейнер LXC Ubuntu Server 16.04 (Память 1Gb, HDD 32 Gb);
 — VPN сеть с торговым залом;
 — Старый компьютер (Celeron 800, Память 256 Mb, WinXP):
 — Подготовлена аудиосистема торгового зала с усилителем (в аренде).

За основы были взяты статьи:
 — Интернет-радио своими руками;
 — Управление радиоэфиром через браузер;
 — Интернет-радио с множеством ведущих из разных городов и звонками в прямом эфире;
 — Интернет-радиостанция на Liquidsoap + IceCast.

Изначально планировалось всё сделать на основе AirTime, но так как Open source проект не заброшен вот уже 3 года и максимум на что можно было поставить на Ubuntu server 14.04 пришлось искать другой продукт, в этот момент поисковик и выдал fork AirTime, а именно LibreTime.

Процесс установки тривиален и требует минимум действий, а именно:
Скачиваем исходники и ставим:
git clone https://github.com/libretime/libretime.git
cd libretime
sudo ./install

Сразу о нюансах:
 — Пока готовых пакетов нет, но команда разработчиков планирует их выпуск;
 — При установке можно использовать ключи, тогда весь процесс пойдет без участия, ключи можно узнать по команде sudo ./install --help;
 — В интереактивном режиме обязательно вручную указывайте ключи y или n, регистр обязателен;
 — После первоначальной настройки, которая проводиться через web интерфейс, обязательно перегрузить linux иначе нельзя добавить файлы в медиатеку, точнее они загрузятся на сервер, но не будут отображаться;
 — Я использую 3 потока с разным битрейтом, для этого в icecast2 были увеличен лимит потоков sources, в файле icecast.xml.

Интерфейс довольно понятен, к тому же руссифицирован.
Главная страница (данные с тестового стенда, за место локальной библиотеки используется веб-поток, так же убран раздел входа в админку):
_klxdch5ju_jobkaygvm49tn_j4.jpeg

Страница авторизации:
bs4q4xdsermwsvcnlyvc2r-fmes.jpeg

Рабочий стол:
ak6jggdcmnwiequfdifkhukpara.jpeg

Мой пример настройки:
j_i5iizryxkyxr8yohva8nhf7sw.jpeg

В торговом зале компьютер подключен на усилителю и на нем через VLC запущена трансляция из центрального офиса. В перспективе заменить это дело на raspberry pi, и настроить так, чтобы в случае обрыва связи с центральным raspberry проигрывал заготовку, а после восстановления связи с сервером продолжал вещать готовую программу.

В итоге у нас:
 — Торговый зал с музыкальным сопровождением;
 — Персонал торгового зала не имеет доступа с музыке;
 — В центральном офисе через web интерфейс LibreTime настроены программы трансляции;
 — Ответственный человек может менять расписания.

В перспективе:
 — Замена старого компьютера на raspberry pi;
 — Авторизация пользователя на основе Active Directory (такая возможность в LibreTime предусмотрена).

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

P.S.2 У нас сервер расположен в DMZ зоне, доступ к web интерфейсу через nginx прокси, при этом доступ только с определенных подсетей.

© Habrahabr.ru