Linux internet radio server

Создаём простую, компактную и дешёвую интернет радиостанцию

Софтовой платформой будет Linux, для простоты лучше использовать что-то распространённое, с кучей информации в интернете, если вдруг что-то пойдёт не так. Железом для интернет радиостанции может быть что угодно, полноценный сервер с вашими проектами, какой-нибудь старый ноутбук, или нетбук, мы же хотим дёшево, а особой производительности от железа нам не требуется.

Если же под рукой ничего такого нет, или нам нужен совсем бесшумный сервер, почему бы не попробовать использовать мини компьютер?

Что-то типа Raspberry Pi 3?

Нет, мы же хотим дешевле, так что нам нужно что-то типа Orange Pi. У меня нашлась модель Orange Pi Pc Plus с 1GB DDR3 оперативной памяти и 8GB EMMC Flash.

UPD: Вчера все как-то слишком серьёзно восприняли статью, но на самом деле эксперимент был проведён ради фана, чтобы посмотреть получится или нет. Естественно ни о каком «промышленном» использовании речи не идёт, это всё равно что попытаться озвучить стадион обычным музыкальным центром.

Что нам может ещё понадобиться?

Я хочу попробовать настроить всё по простому, поэтому ещё понадобится витая пара до роутера и карта памяти Micro SD, так как на прямую на микро компьютер операционную систему установить не получится. Я нашёл у себя карту памяти на 8 гигабайт, этого объёма вполне хватит.

Итак, первым делом нужно записать образ операционной системы на карту памяти.
Для серверов я предпочитаю использовать проверенный временем Debian (да, более молодое поколение, вероятнее всего, предпочитает CentOS, но седобородые согласятся со мной, что Debian всё ещё очень хорош).

Вообще, для Orange Pi на www.orangepi.org/downloadresources существует огромное количество готовых образов, но я всё-таки схожу на www.armbian.com/download и скачаю с dl.armbian.com/orangepipcplus торрент файл с armbian (в моём случае Debian_stretch_next.7z).

У меня Orange Pi Pc Plus, у вас может быть любой другой мини компьютер, поэтому ищите соответствующий образ.

После закачки распаковываем архив и видим образ в формате img. Кто чем хочет, тем и заливает образ, лично я предпочитаю Etcher (https://etcher.io). Вставили карту памяти, выбрали её, если у вас подключено несколько носителей, нажали кнопку шить, ввели пароль если у вас на десктопе или ноутбуке тоже стоит линукс.

Карта с образом готова, можно начинать всё подключать.
Что же нам нужно, чтобы запустить и начать настраивать наш сервер?
Сам мини компьютер, интернет по Ethernet проводу и блок питания.
И всё.

Нет, конечно можно заморочиться, подключить монитор и клавиатуру и настраивать всё напрямую, но мне больше нравится клавиатура моего ноутбука, поэтому я буду настраивать свой мини компьютер удалённо, по SSH.

Итак, приступим, втыкаем кабель Ethernet, карту Micro SD с образом Armbian.
Осталось только подать питание на мини компьютер.

А вот с питанием на Orange Pi всё очень печально. Что есть на нормальном мини копьютере? Правильно, Micro-USB, а как можно запитать Orange Pi? Только 5V через штырьковый разьём, который покупается отдельно.

Адаптер питания с подходящим разьёмом стоит дороже, чем просто провод со стандартным USB на конце, поэтому можно взять его.

Если нет свободного блока питания с USB (а нам надо не абы какой, а на 2 ампера), то роемся в своём ящике с проводами, адаптерами и платами для компьютеров (у вас же есть такой ящик, правда?) и находим подходящий адаптер от какого-нибудь старого, давно разбитого ребёнком планшета, перепаиваем кабель и питание для нашего сервера готово.

Ну или просто берём зарядник от старого дискового mp3 плеера iRiver (он всего 4,7 вольта и 1,2 ампера но тоже работает).

Читайте также:  Пропадает wifi windows 10 через адаптер

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

Если вы, так же как и я, намереваетесь обойтись минимумом периферии, то нам нужно узнать какой IP адрес получил наш мини компьютер. Самым простым способом узнать его, это зайти на свой роутер и посмотреть какой IP адрес роутер дал нашему серверу (ваш роутер же умеет DHCP, правда?).

Теперь можно заходить по SSH на наш сервер. Кому какой SSH клиент удобен, тот тем и пользуется (мало ли у вас виндовс, а как там с SSH клиентами я вот вообще не в курсе).
В моём случае я просто забиваю в консоль ssh root@192.168.0.88, соглашаюсь на добавление ключа ECDSA, пароль по умолчанию для root установлен «1234», авторизовавшись мы оказываемся в консоли микрокомпьютера, который сразу же предлагает сменить пароль root.

После этого предлагается создать аккаунт непривилегированного пользователя, создаём.
По сравнению с предыдущими версиями ОС, текущая версия несколько упрощена в плане настроек и много чего уже настраивается автоматически.

У Armbian есть очень удобный инструмент настройки: armbian-config копируем команду в консоль и смотрим что нам может пригодиться.

Настройки системы нам пока что не нужны, но они могут понадобится позже, например для переноса настроенной системы с Micro SD на встроенную 8GB EMMC Flash память мини компьютера.

Нам будет полезен раздел Network, всё-таки неплохо бы иметь серверу статический IP адрес. Нашу интернет радиостанцию можно подключить к сети даже по Wi-Fi. Уровень извращённости каждый устанавливает себе сам, но если вы строите интернет радио чисто для себя и не планируется более 10 слушателей одновременно, то почему бы наш сервер и не подцепить всё-таки по Wi-Fi? В крайнем случае, воткнуть кабель Ethernet можно в любой момент.

Итак, мы определились с типом подключения, теперь нам нужно настроить статический IP адрес, для этого мы идём в настройки IP и выбираем нужный интерфейс сети, после чего мы говорим, что хотим статичный адрес, заводим его и сохраняем настройки. Менять маску и шлюз нет необходимости, так как они получены от вашего роутера по DHCP.

После того, как вы введёте новый IP адрес и нажмёте Enter, ваша SSH сессия тут же зависнет, так как сразу же у устройства появится новый IP адрес. Поэтому просто закрываем окно с терминалом и заходим на наш мини компьютер по SSH используя новый IP адрес.

Кстати, раз все функции у нас будут иметь административный характер, чтобы не писать постоянно перед каждой командой sudo, я просто авторизуюсь на мини компьютере под пользователем root.

Запустив armbian-config снова мы можем посмотреть что можно настроить ещё интересного? В разделе Personal мы можем настроить временную зону, локаль и имя хоста. Я добавил локаль ru_RU.UTF-8 UTF-8, вдруг пригодится.

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

Я использовал команду reboot, чтобы убедиться, что настройки сохранились и сервер с ними успешно стартует.

Базовая настройка сервера произведена и почему бы не установить работающую с MicroSD ОС на внутреннюю EMMC Flash память? Конечно, если ваш мини компьютер имеет на борту эту самую память.

Для этого заходим в armbian-config — System — Install, выбираем доступный накопитель, жмём Enter, получаем привет из прошлого, соглашаемся и выбираем тип файловой системы ext4.

Теперь мы можем откинуться на спинку кресла и дожидаться пока OS перенесётся на внутренний накопитель мини компьютера.

Читайте также:  Сканер сетей wifi mac os

После завершения копирования, выбираем отключить питание. Ждём пару секунд пока не погаснет светодиод на мини компьютере, выдёргиваем питание, вынимаем MicroSD карту, втыкаем питание обратно и включаем компьютер.

Да, если у вас нет внутренней памяти и вы не перенесли на неё операционную систему, вытащить MicroSD, вероятнее всего, будет не очень хорошей идеей.

После входа на наш мини компьютер по SSH и убедившись, что всё работает, можно начинать настраивать саму радиостанцию.

Первым делом обновляем информацию о пакетах, вбив apt update в консоль сервера.

Да, я люблю комфорт, поэтому устанавливаю mc командой apt install mc .
Я люблю всё делать из под mc, а если мне нужно увидеть консоль, я просто нажимаю ctrl+o.

Первым делом устанавливаем сам музыкальный плеер-демон: apt install mpd .
Вместе с ним установится куча зависимостей.

Перейдем к настройке. За конфигурацию демона отвечает файл /etc/mpd.conf, открываем его командой nano /etc/mpd.conf .

Имя моего пользователя без привилегий hzs, и мой конфигурационный файл выглядит примерно так:

Тут всё понятно и без особых комментариев.

Для работы нужно создать структуру директорий из верхней части настроек. Обратите внимание, хозяином для этих директорий должен быть непривилегированный пользователь, от которого будет всё работать, в моём случае hzs.

Из под root выполняем следующие команды:

chown -cR hzs:hzs /home/hzs/music
chown -cR hzs:hzs /home/hzs/.mpd

Пора заливать музыку, у нас на сервере есть SSH, так что мы можем законнектиться любимым FTP клиентом к нашему серверу.

IP адрес нам известен, порт 22, имя пользователя и пароль те, что вы задали при создании непривилегированного пользователя, тип соединения SSH. Заливаем немного музыки для теста в директорию для музыки, указанную в конфиге.

Сейчас проигрыватель запущен с неправильным конфигом, поэтому останавливаем демона и запускаем его снова:

service mpd stop
service mpd start

Для простейшего управления демоном мы поставим консольную утилиту mpc командой apt install mpc .

После установки немного сконфигурируем проигрыватель:

mpc random on
mpc repeat on

Сейчас нужно добавить треки а плейлист, в консоли это несколько гиморройно, но ничего не поделать.

Смотрим доступные нам файлы, которые мы можем добавить в плей лист:

Чтобы добавить файл в плейлист, в команде mpc add мы должны указать полное имя добавляемого файла, выбор по маске не работает:

mpc add «01 Lost in Your Eyes.mp3»

Смотрим получившийся плейлист:

Пора запускать нашу радиостанцию:

Попробуем послушать, для этого в любом аудиоплеере открываем аудио поток нашей радиостанции. Для этого вводим адрес потока http://ip:port , у меня это http://192.168.0.90:8000 .

Audacious играл с перебоями, была проблема с кешированием, а вот SMPlayer и VLC проблем не ощутили.

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

У меня есть несколько доменов, так что первым делом я в настройках DNS создаю «A» запись с testradio и статическим внешним IP адресом моего роутера дома. Вам этого делать необязательно.

Далее на своём роутере я настраиваю port forwarding.

Так как у меня уже есть своя радиостанция на большом сервере, я указываю внешний исходный порт 9000, а внутренний локальный 8000, таким образом из вне радиостанция будет вещать по http://внешний_ip:9000 .

Всё, теперь у нас получилась «настоящая» интернет радиостанция.

Если не хочется останавливаться на достигнутом, едем дальше.

Мы не выпускаем в эфир голос диджея, но при необходимости это можно реализовать, но вот что действительно нужно, так это удобный интерфейс управления плейлистом.

Читайте также:  Как сократить время загрузки windows

Существует куча консолей управления, некоторые можно посмотреть тут, но я буду использовать Pitchfork MPD Client.

Это полноценная web морда, и да, мы будем стрелять пушкой по воробьям и поднимем полноценный http сервер на мини компьютере с нашей радиостанцией:

apt install apache2

Так же нам понадобится PHP:

apt-get install php

apt install php7.0-xml

apt install php-pear

Создаём в домашней папке директорию /home/hzs/wwwroot/pf и распаковываем в неё предварительно загруженный по SSH Pitchfork MPD Client.

В конфигурационном файле веб сервера apache2 /etc/apache2/sites-available/000-default.conf
nano /etc/apache2/sites-available/000-default.conf
всё выкашиваем и пишем (не забывая поменять «hzs» на имя своего пользователя):

После чего перезагружаем http сервер

service apache2 restart

Зайдя по адресу своего сервера IP/pf (в моём случае: http://192.168.0.90/pf )

Мы увидим пульт управления:

Всё достаточно просто и интуитивно понятно.

Далее нажимем на иконку папки справа и вкладку Filesystem.

Для обновления списка файлов нажимам кнопку Update DB, после чего выбираем оставшиеся файлы, которые у нас до сих пор отсутствуют в плейлисте и нажимаем кнопку Add чуть ниже.

Обновляем страницу и видим, что все файлы у нас добавились в плейлист:

Если нужно спрятать управление проигрывателем под пароль, то можно отредактировать конфигурационный файл:

Там вполне понятная структура настроек.

Итак, у нас получился полноценный сервер интернет радиостанции размером 10*7*3 сантиметра. Конечно, используемый маломощный сервер не потянет сотни слушателей, но он как минимум не оставит вас без любимой музыки где бы вы ни были, если рядом найдётся интернет.

В принципе, можно не продолжать читать, но для особо упорных продолжаем дальше.
У нас же есть полноценный веб сервер, почему бы…
Ну вы уже поняли.

Создаём в корне нашего веб сервера директорию testradio, создаём в ней файл «index.php» :

Это простейший пример создания плеера для сайта, так же он умеет выводить название текущей композиции, обновляемое с помощью ajax каждые 5 секунд.

Внешний вид можно допилить по вкусу с помощью css.

В коде видно, что аудио поток уже идёт по адресу, указанному в DNS моего домена.
Не забываем закинуть в директорию файл jquery (в моём случае jquery-3.3.1.min.js). Вообще, конечно, jquery тут перебор и можно было бы сделать ajax запрос без него, но думать оказалось совсем лень и я использовал готовый кусок кода.

Далее создаём файл «trackname.php» :

Так же в корне веб сервера создаём директорию «mpc» а в ней файл «index.php» :

Зачем такие костыли могут спросить некоторые, дело в том, что в моей боевой радиостанции сервер плеера находится на одном сервере, а веб морда сайта, находится на физически другом веб сервере.

Так как опрашивать проигрываемый трек нужно непосредственно на сервере с проигрывателем, то директория веб сервера mpc должна быть на нём, а файл «trackname.php» находится на веб сервере самого сайта и подгружает файл с описанием трека с другого сервера по его IP адресу.

Сам плеер и сайт радиостанции могут находиться очень далеко друг от друга и общаться как по внешним IP адресам, так и по адресам, забитым в DNS. Чтобы всё работало, нужно всего лишь правильно пробросить порты.

Дорабатывать проект можно по своему вкусу, ну я а приятно провёл субботнюю половину дня.
Всем удачных экспериментов!

UPD2: Недельный эксперимент подошёл к своему логическому завершению и я отключаю свой мини сервер с радиостанцией.

Источник

Оцените статью