Owncast на Ubuntu 24.04: пошаговая установка
Если вам нужен канал вещания, который не зависит от политики модерации сторонней платформы, бана по региону или внезапной блокировки монетизации — логичный шаг сделать свой стриминговый сервер. Owncast закрывает эту задачу одним бинарником: приём потока по RTMP, отдача зрителям через HLS, встроенный чат и админка без плясок с отдельными компонентами. Ниже — рабочая установка на чистый Ubuntu 24.04, с нюансами, которые обычно узнают уже после первого зависшего эфира.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Что такое Owncast и когда он нужен
Owncast — open source проект на Go, который поставляется единым бинарником: внутри уже RTMP-сервер для приёма потока от OBS или другого энкодера, конвертация в HLS для отдачи в браузер, WebSocket-чат и веб-панель администратора. Никаких сторонних сервисов — весь контент, зрители и логи остаются на вашем сервере.
Разумные сценарии использования:
- Закрытые трансляции для команды или клиентов (демо, внутренние вебинары), где публичная площадка избыточна или прямо нежелательна.
- Архив эфиров без модерационных рисков площадок — тема, формат, длительность на ваше усмотрение.
- Эксперимент с собственной стриминговой платформой перед тем, как вкладываться в более сложную инфраструктуру (несколько RTMP-точек, CDN, транскодинг-ферма).
Честно про ограничения: у Owncast нет встроенной аудитории и рекомендательного алгоритма — трафик на канал вам нужно приводить самостоятельно (соцсети, рассылка, встраивание плеера на сайт). Нет и «фирменных» мобильных приложений — зритель смотрит через браузер или любой HLS-плеер. Для 99% сценариев «свой стрим для своей аудитории» этого достаточно.
Требования к серверу и подготовка Ubuntu 24.04
Owncast лёгкий сам по себе — Go-бинарник почти не грузит CPU в режиме простого приёма-раздачи одного качества. Основной расход ресурсов появляется, если включить транскодинг в несколько качеств (адаптивный битрейт) — тогда каждая дополнительная копия потока — это отдельный проход ffmpeg.
| Сценарий | vCPU | RAM | Диск |
|---|---|---|---|
| 1 качество, без транскодинга, до ~20 зрителей | 1-2 | 1-2 ГБ | 20 ГБ SSD |
| 2-3 качества с транскодингом, до ~50 зрителей | 2-4 | 2-4 ГБ | 40 ГБ SSD |
| Активная запись VOD + несколько качеств | 4+ | 4-8 ГБ | от 80 ГБ SSD |
Это ориентир, а не измеренные цифры — реальная нагрузка зависит от битрейта, разрешения и того, сколько качеств вы транскодируете одновременно. Отдельно держите в голове исходящий трафик: если у вас 30 зрителей на битрейте 3000 кбит/с, это уже около 11 Мбит/с исходящего канала непрерывно — при выборе тарифа смотрите не только на CPU/RAM, но и на канал и лимиты трафика.
Порты, которые понадобятся:
1935/tcp— RTMP, сюда OBS пушит поток. Открыт наружу постоянно.8080/tcp— веб-интерфейс, админка и HLS по умолчанию. После настройки Nginx закроем наружу, оставим только для reverse-proxy на localhost.80/tcp,443/tcp— Nginx и Let's Encrypt.
Если сервер только что развёрнут, сначала сделайте базовую подготовку — SSH-ключи, отключение входа по паролю, обновления — это описано в статье про первичную настройку и безопасность Ubuntu 24.04. Дальше — установка зависимостей:
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl unzip ffmpeg ca-certificates
Владелец процесса Owncast не должен быть root — создаём системного пользователя:
sudo useradd --system --create-home --home-dir /opt/owncast --shell /usr/sbin/nologin owncast
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверУстановка Owncast и systemd-сервис
Официальный установочный скрипт скачивает актуальный релиз и разворачивает его в текущей директории. Запускаем от имени пользователя owncast, в его домашней папке:
sudo -u owncast bash -c "cd /opt/owncast && curl -s https://owncast.online/install.sh | bash"
Скрипт создаст поддиректорию /opt/owncast/owncast/ с бинарником owncast, статикой веб-интерфейса и папкой data/ под конфиг и БД (SQLite). Проверьте, что бинарник исполняемый и запускается вручную перед тем, как заворачивать в systemd:
sudo -u owncast /opt/owncast/owncast/owncast --help
Дальше — юнит для systemd, чтобы сервис поднимался при загрузке и перезапускался при падении:
sudo nano /etc/systemd/system/owncast.service
[Unit]
Description=Owncast streaming server
After=network.target
[Service]
Type=simple
User=owncast
Group=owncast
WorkingDirectory=/opt/owncast/owncast
ExecStart=/opt/owncast/owncast/owncast
Restart=on-failure
RestartSec=5
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now owncast
sudo systemctl status owncast
Если всё поднялось, curl -I http://127.0.0.1:8080 должен вернуть 200 OK. Логи смотрите через journalctl -u owncast -f — там же будут видны ошибки RTMP-подключений, если что-то пойдёт не так на этапе OBS.
Nginx как reverse-proxy и SSL для веб-интерфейса
Отдавать 8080 напрямую в интернет без TLS — плохая идея: в админке хранится пароль и стрим-ключ. Ставим Nginx перед Owncast и закрываем 8080 снаружи.
sudo apt install -y nginx certbot python3-certbot-nginx
Конфиг (важно: WebSocket для чата и proxy_buffering off, иначе плеер и чат будут «тормозить» из-за буферизации на стороне Nginx):
sudo nano /etc/nginx/sites-available/owncast
server {
listen 80;
server_name stream.example.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off;
}
}
sudo ln -s /etc/nginx/sites-available/owncast /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
Домен предварительно должен указывать A-записью на IP сервера — если ещё не настраивали DNS, см. настройку домена и DNS с нуля. Затем выпускаем сертификат:
sudo certbot --nginx -d stream.example.com
Certbot сам пропишет редирект на HTTPS и настроит автопродление. После того как убедились, что сайт открывается по https://stream.example.com, закройте прямой доступ к 8080 снаружи — правило firewall нужно ставить точечно, детали и типовые ошибки разобраны в статье про настройку UFW на Ubuntu 24.04 и в общем разборе Nginx как reverse-proxy:
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 1935/tcp comment 'Owncast RTMP'
sudo ufw enable
sudo ufw status verbose
Порт 8080 в этот список сознательно не включён — снаружи он не нужен, всё идёт через Nginx на 443.
Настройка вещания: OBS, стрим-ключ, качество
Первый заход в админку — https://stream.example.com/admin. Логин по умолчанию admin, пароль abc123 — это стандартный дефолт Owncast, и его нужно сменить в первую же минуту: Configuration → Server Setup → Change Password.
Стрим-ключ смотрите там же, в Server Setup → Stream Key — по умолчанию генерируется случайная строка, но лучше сгенерировать новый через кнопку в интерфейсе и никому его не показывать: это фактически пароль на вещание от вашего имени.
Настройка в OBS Studio (Settings → Stream):
- Service: Custom
- Server:
rtmp://stream.example.com:1935/live - Stream Key: значение из админки
Битрейт под качество (ориентировочные диапазоны, у вас может отличаться в зависимости от контента и канала):
| Разрешение | FPS | Примерный битрейт |
|---|---|---|
| 720p | 30 | 2500–4000 кбит/с |
| 720p | 60 | 3500–5000 кбит/с |
| 1080p | 30 | 4500–6000 кбит/с |
| 1080p | 60 | 6000–8000 кбит/с |
В админке Owncast, в разделе Video, можно добавить несколько выходных качеств (адаптивный битрейт) — плеер зрителя сам подстроится под его канал. Каждое дополнительное качество — это дополнительный проход ffmpeg внутри Owncast, так что для 2-3 качеств одновременно закладывайте запас CPU из таблицы требований выше.
Хранилище, ресурсы и запись эфиров
По умолчанию Owncast хранит HLS-сегменты только пока идёт трансляция — сегменты пишутся в рабочую директорию (data/ внутри папки Owncast) и вычищаются по мере устаревания, а после окончания эфира их retention-политика тоже подчищает. Иными словами: «из коробки» это не архив, а именно живое вещание.
Если нужна запись эфиров (VOD), два рабочих варианта:
- Внешнее S3-совместимое хранилище — настраивается в админке, раздел Storage: адрес endpoint, bucket, ключи доступа. Owncast сам будет складывать сегменты туда, и они переживут окончание трансляции. Подходит любое S3-совместимое хранилище, не обязательно AWS.
- Отдельный процесс записи — например,
ffmpegилиrclone, который параллельно подключается к тому же RTMP-потоку (или к исходнику до Owncast через локальный сплит) и пишет файл на диск или в облако. Более гибко, но требует своей настройки и мониторинга.
Для локального хранения без внешнего S3 просто закладывайте диск с запасом — SSD с высокой скоростью записи важнее объёма, если качество несколько и они пишутся параллельно. Отдельно учитывайте исходящий трафик: стриминг — это постоянная нагрузка на канал, пропорциональная числу зрителей и битрейту, а не разовый всплеск, как у обычного веб-сайта — при выборе VPS смотрите на условия по трафику, а не только на диск и CPU.
Про безопасность стрим-ключа: если он утёк (засветился в публичном OBS-профиле, скриншоте настроек, логах) — сразу перегенерируйте его в админке. Кто-то с вашим ключом может начать вещание от имени вашего канала, и Owncast это никак не проверяет, кроме самого ключа.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
Сколько зрителей выдержит один VPS?
Точную цифру дать нельзя без вашего битрейта и канала — прикидочно считайте по формуле «число зрителей × битрейт качества» и сравнивайте с исходящим каналом тарифа. Узкое место обычно не CPU, а именно сеть.
Можно ли стримить не из OBS?
Да, подходит любой RTMP-энкодер — ffmpeg, GStreamer, мобильные приложения с поддержкой RTMP-push. Owncast не привязан к конкретному клиенту.
Можно ли вести несколько трансляций одновременно с одного сервера?
Нет, один процесс Owncast принимает одну активную трансляцию. Для параллельных эфиров нужно поднимать отдельные инстансы на разных портах или разных серверах.
Что будет, если сервер уйдёт в оффлайн во время эфира?
OBS попытается переподключиться по таймауту, зрители получат разрыв в HLS-потоке. Само вещание нужно будет возобновить со стороны OBS — Owncast не «доигрывает» пропущенный кусок.
Нужен ли отдельный домен?
Не обязательно, но сильно удобнее: SSL-сертификат, постоянная ссылка для зрителей, не завязанная на IP. Поддомен вида stream.вашдомен.ru вполне подходит.
Чат для зрителей включается отдельно?
Нет, встроен по умолчанию и работает через WebSocket — важно только не забыть проксировать Upgrade/Connection заголовки в Nginx, иначе чат просто не подключится.
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →