- Home »

Как настроить видеосервер с помощью Nginx RTMP на Ubuntu 24.04
В этой статье разберёмся, как быстро и без боли развернуть свой видеосервер на Ubuntu 24.04 с помощью Nginx и модуля RTMP. Если ты когда-нибудь хотел стримить с OBS на свой сервер, делать restream на YouTube/Twitch, организовать внутренний видеохостинг или просто поиграться с live-видео — этот гайд для тебя. Я расскажу, как всё устроено, почему Nginx RTMP — это не только просто, но и гибко, и как избежать типовых граблей. Будет много практики, примеры конфигов, сравнения с альтернативами и даже немного гиковских лайфхаков. Погнали!
Как это работает: немного магии под капотом
Nginx RTMP — это модуль для популярного веб-сервера Nginx, который добавляет поддержку протокола RTMP (Real-Time Messaging Protocol). RTMP — старый, но до сих пор крайне живой стандарт для передачи аудио/видео в реальном времени. Его любят стримеры, видеохостинги и даже некоторые системы видеонаблюдения. Суть проста: клиент (например, OBS Studio) отправляет поток на сервер, а сервер уже раздаёт его дальше — зрителям, другим сервисам, или пишет в файл.
- Входящий поток: обычно это RTMP, иногда HLS или даже WebRTC (но это уже отдельная песня).
- Обработка: Nginx RTMP может ретранслировать, записывать, делать restream, защищать доступ.
- Выход: зрители могут смотреть поток через RTMP, HLS (HTTP Live Streaming), или DASH.
Всё это работает на обычном сервере — хоть на VPS, хоть на выделенном. Кстати, если нужен сервер под такие задачи — VPS или dedicated — отличный вариант.
Почему Nginx RTMP? Сравнение с альтернативами
Решение | Плюсы | Минусы | Когда использовать |
---|---|---|---|
Nginx RTMP |
|
|
Стриминг, restream, запись, тесты, DIY-видеохостинг |
Media Server (Wowza, Nimble, Ant Media) |
|
|
Промышленные проекты, большие нагрузки, сложные сценарии |
FFmpeg (как сервер) |
|
|
Трансляция одного потока, автоматизация, обработка видео |
Nginx RTMP — идеальный выбор для тех, кто хочет быстро и без лишних заморочек поднять свой видеосервер, не заморачиваясь лицензиями и сложной настройкой.
Быстрая установка Nginx RTMP на Ubuntu 24.04
Ubuntu 24.04 — свежая, стабильная, и отлично подходит для серверных задач. Но в стандартных репозиториях Nginx RTMP обычно нет, поэтому ставим из исходников или используем готовые сборки.
Вариант 1: Сборка из исходников (рекомендую для максимальной гибкости)
sudo apt update
sudo apt install -y build-essential libpcre3 libpcre3-dev libssl-dev zlib1g-dev git
cd /usr/local/src
sudo git clone https://github.com/arut/nginx-rtmp-module.git
sudo wget http://nginx.org/download/nginx-1.24.0.tar.gz
sudo tar -zxvf nginx-1.24.0.tar.gz
cd nginx-1.24.0
sudo ./configure --with-http_ssl_module --add-module=../nginx-rtmp-module
sudo make
sudo make install
После этого Nginx с RTMP будет лежать в /usr/local/nginx/
. Для удобства можно добавить его в systemd или запускать вручную.
Вариант 2: Готовые пакеты (если не хочется собирать)
Есть сторонние PPA, например teward/nginx-rtmp, но они не всегда поддерживают самые свежие версии Ubuntu. Проверяй актуальность!
Базовая настройка: минимальный рабочий конфиг
Открываем /usr/local/nginx/conf/nginx.conf
(или /etc/nginx/nginx.conf
— если ставил из пакета) и добавляем RTMP-блок:
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
record off;
}
}
}
Это минималка: сервер слушает порт 1935 (стандартный RTMP), принимает потоки в приложение live
. Можно стримить с OBS или ffmpeg на rtmp://your-server-ip/live/stream
.
Добавляем HLS (чтобы смотреть через браузер)
RTMP хорош, но современные браузеры его не поддерживают. Для этого нужен HLS (Apple HTTP Live Streaming). Добавляем в nginx.conf
:
application live {
live on;
record off;
hls on;
hls_path /tmp/hls;
hls_fragment 3;
hls_playlist_length 60;
}
И в http-блоке (чтобы раздавать HLS через HTTP):
http {
...
server {
listen 8080;
location /hls {
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /tmp;
add_header Cache-Control no-cache;
}
}
}
Теперь можно смотреть поток через http://your-server-ip:8080/hls/stream.m3u8
в VLC, плеерах типа Video.js или даже прямо в браузере.
Практические советы и кейсы
- Restream на несколько платформ: Добавь в
application
секциюpush
:
push rtmp://a.rtmp.youtube.com/live2/YOUR_KEY;
push rtmp://live.twitch.tv/app/YOUR_KEY;
Теперь твой сервер будет одновременно принимать поток и ретранслировать его на YouTube/Twitch. - Запись стримов: Включи
record all;
и укажиrecord_path /var/streams;
— все трансляции будут сохраняться на диск. - Ограничение доступа: Используй
on_publish
иon_play
для авторизации через скрипты (например, на Python или bash). - Автоматизация: Скрипты для старта/остановки стримов, мониторинг через nginx-rtmp-stat, интеграция с Telegram-ботами для уведомлений.
Типовые ошибки и как их решать
Ошибка | Причина | Решение |
---|---|---|
OBS не может подключиться | Порт 1935 закрыт, неправильный URL, firewall | Открой порт: sudo ufw allow 1935/tcp , проверь URL, логи Nginx |
HLS не работает | Нет доступа к /tmp/hls, не настроен http-блок | Проверь права на папку, настрой http-сервер, смотри логи |
Поток лагает | Недостаточно ресурсов, слабый сервер, плохой интернет | Проверь нагрузку: htop , iftop , попробуй уменьшить битрейт |
Альтернативные решения и утилиты
- SRS (Simple Realtime Server) — современный RTMP/HLS/WebRTC сервер, больше фич, но чуть сложнее в настройке.
- rtsp-simple-server — если нужен RTSP, HLS, WebRTC в одном флаконе.
- FFmpeg — для transcoding, записи, автоматизации.
- OBS Studio — лучший бесплатный софт для стриминга.
Интересные факты и нестандартные сценарии
- Можно использовать Nginx RTMP для видеонаблюдения: IP-камера шлёт RTMP на сервер, а ты смотришь через HLS где угодно.
- Автоматизация: скрипты на bash/python для старта/остановки стримов, автоархивация записей, интеграция с Telegram/Slack.
- Внутренний корпоративный YouTube: сотрудники стримят презентации, а остальные смотрят через браузер.
- Мультистриминг: один поток — десятки платформ (YouTube, VK, Twitch, Trovo и т.д.) через push.
- Тестирование видеокодеков: можно быстро запускать разные варианты потоков для сравнения качества/нагрузки.
Автоматизация и новые возможности
Nginx RTMP отлично дружит с автоматизацией. Можно:
- Писать скрипты для управления потоками (например, через
on_publish
иon_play
события). - Интегрировать с CI/CD — например, автоматический запуск стримов после деплоя.
- Мониторить состояние потоков через HTTP API (
stat.xsl
), строить графики, отправлять алерты. - Использовать в Docker-контейнерах для быстрого масштабирования.
Это открывает кучу сценариев для DevOps, автоматизации видеотрансляций, интеграции с внешними сервисами.
Статистика и сравнение производительности
- Nginx RTMP спокойно держит десятки одновременных потоков на VPS с 2 ГБ RAM и 2 vCPU.
- HLS-потоки требуют больше диска и CPU, чем чистый RTMP.
- Для 100+ зрителей лучше использовать CDN или балансировщик, либо рассмотреть SRS.
- Wowza и Ant Media дают больше фич, но требуют больше ресурсов и денег.
Выводы и рекомендации
Nginx RTMP — это быстрый, бесплатный и гибкий способ развернуть свой видеосервер на Ubuntu 24.04. Он отлично подходит для стриминга, restream, записи, тестов и даже небольших видеохостингов. Если нужно больше фич (WebRTC, transcoding, масштабирование) — смотри в сторону SRS или коммерческих решений. Но для большинства задач Nginx RTMP — идеальный старт: просто, надёжно, понятно.
- Используй Nginx RTMP для личных и корпоративных стримов, restream, записи трансляций.
- Не забывай про безопасность: ограничивай доступ, обновляй сервер, мониторь логи.
- Для больших нагрузок — масштабируй через Docker или используй CDN.
- Если нужен сервер под такие задачи — VPS или dedicated — отличный выбор.
Официальная документация и исходники: https://github.com/arut/nginx-rtmp-module
Экспериментируй, автоматизируй, делись опытом — и пусть твои стримы всегда будут в онлайне!
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.