Восстановление и развёртывание интернет-радио с нуля


Клиент

Сообщество авторских исполнителей с мобильным приложением и аудиторией в несколько десятков ежедневных слушателей


Задача

После потери арендованного VPS (вместе с действующей конфигурацией, сайтом и историей вещания) потребовалось полностью восстановить вещание двух интернет-радиостанций. На входе — только набор mp3-файлов. Требовалось развернуть новый сервер, настроить платформу автоматизированного вещания, воссоздать сайт-визитку с встроенным плеером и обеспечить стабильную работу 24/7.


Решение

1. Инфраструктура и контрольная панель
  • Аренда нового VPS и установка Hestia Control Panel как базового слоя управления сервером
  • Hestia обеспечивала: базовую защиту (fail2ban, firewall), автоматическое получение и обновление Let’s Encrypt сертификатов, управление доменами и резервное копирование веб-сайта
  • Создан отдельный домен в Hestia для AzuraCast — для получения SSL-сертификата; домен настроен как reverse proxy на порт AzuraCast
  • Nginx в составе Hestia выступал фронтенд-прокси: терминировал TLS и передавал трафик во внутренний сервис
2. AzuraCast — платформа вещания
  • Установка AzuraCast (self-hosted, Docker-вариант) с нуля на подготовленный сервер
  • Развёрнуты две независимые радиостанции в рамках одной инсталляции:
    • Станция 1 — медитативная и этническая музыка, длинные композиции (в том числе треки продолжительностью до 30 минут)
    • Станция 2 — авторская музыка частных исполнителей сообщества
  • Настроен стек вещания: Liquidsoap (автоматизация и ротация) + Icecast (стриминг-сервер для слушателей)
  • Загружена и каталогизирована вся медиатека из предоставленных mp3-файлов
3. Ротация и расписание вещания
  • Настроена умная ротация с учётом хронометража треков: длинные композиции (20–30 минут) вынесены в ночное расписание, чтобы не нарушать дневной listening experience
  • Дневной эфир составлен из коротких и средних треков с комфортным ритмом
  • Добавлены джинглы (отбивки) с интервалом каждые 30 минут — для создания радийного ощущения и брендинга станций
  • Настроены плейлисты с разными режимами ротации (sequential, shuffled, scheduled)
4. Статистика и мониторинг
  • Активирован встроенный модуль статистики AzuraCast (AzuraCast Analytics) на базе InfluxDB
  • Сбор данных: количество слушателей в реальном времени, история подключений, geography listeners, популярные треки, пиковые нагрузки
  • Данные позволили подтвердить аудиторию: 20–30 уникальных слушателей ежедневно, сессии по несколько часов, пик до 50 одновременных подключений
5. Форматы и потоки вещания
  • Настроено несколько Mount Points для каждой станции с разными битрейтами:
    • Высокое качество: MP3 320 kbps для десктопных клиентов
    • Среднее качество: MP3 128 kbps для мобильных устройств и встроенного плеера в приложении
    • AAC / OGG как альтернативные форматы
  • Настроены метаданные потока: название станции, текущий трек, обложка — всё транслируется в ICY metadata
6. Сайт-визитка на Joomla
  • На том же сервере (отдельный домен через Hestia) развёрнута Joomla CMS с двуязычной конфигурацией (ru / en)
  • В качестве фреймворка использован Helix3 Ultimate Framework + конструктор страниц SP Page Builder — позволили собрать лендинг без написания вёрстки вручную
  • Структура сайта: главная с описанием сообщества и радиостанций, встроенный HTML5-плеер от AzuraCast (iframe embed) для обеих станций, контактная информация
  • Сайт доступен по прямым ссылкам и служит точкой входа для слушателей вне мобильного приложения
7. Резервное копирование
  • Резервное копирование AzuraCast настроено по расписанию средствами встроенного скрипта: полный бэкап (конфигурация, база данных, медиатека) сохраняется локально
  • Настроена репликация бэкапов по SSH на удалённый сервер — для защиты от потери данных при отказе основного хоста (именно такой сценарий уже случался ранее)
  • Резервное копирование веб-сайта (Joomla) — через встроенный механизм Hestia

Технологии

Linux
Linux
Nginx
Nginx
Docker
Docker
Bash
Bash
Joomla
Joomla
Let's Encrypt
Let's Encrypt

Результаты

Восстановление: вещание возобновлено с нуля по единственным исходным данным — набору mp3-файлов
Две станции: независимые эфиры с разными форматами и расписаниями ротации
Аудитория: 20–30 ежедневных слушателей, сессии по несколько часов, пики до 50 одновременных подключений
Надёжность: работа 24/7, многоуровневое резервное копирование (локально + remote SSH)
Безопасность: SSL/TLS для всех точек входа, fail2ban, изолированные домены
Сопровождение: техническая поддержка в течение ~2 лет — обновления, добавление треков, правки сайта


Архитектура

graph TB A[Слушатели / Мобильное приложение] --> B[Nginx / Hestia :443] B --> C[AzuraCast Docker] C --> D[Liquidsoap — автоматизация] D --> E[Icecast — стриминг] E --> A B --> F[Joomla — сайт-визитка] F --> G[Встроенный плеер AzuraCast] C --> H[InfluxDB — статистика] C --> I[Локальный бэкап] I --> J[Удалённый сервер по SSH]

Длительность

2–3 дня (развёртывание + настройка + наполнение медиатеки)

+ 2 года технической поддержки


Стоимость

от 20 000 ₽