Сервер, безопасность и обновления
Диагностика сервера PrimeCast: службы API, MediaMTX и Caddy, сетевые порты, сертификаты и TLS, правила безопасности и регламент обновления платформы.
Серверная часть PrimeCast включает API платформы, медиареле MediaMTX и HTTPS-терминацию на Caddy. Раздел описывает диагностику сервера, работу с сертификатами, правила безопасности и регламент обновления.
Диагностика сервера
Основные production-службы
| Служба | Назначение |
|---|---|
primecast-api.service | API платформы |
primecast-relay.service | MediaMTX |
primecast-caddy.service | HTTPS и reverse proxy |
Проверка:
systemctl is-active primecast-api
systemctl is-active primecast-relay
systemctl is-active primecast-caddy
Журналы
sudo journalctl -u primecast-api -n 200 --no-pager
sudo journalctl -u primecast-relay -n 200 --no-pager
sudo journalctl -u primecast-caddy -n 200 --no-pager
Внутренняя схема
Internet :443
│
▼
Caddy
├── static UI
├── /api → 127.0.0.1:9090
└── /whep → 127.0.0.1:9090 → MediaMTX
Сетевые порты
| Порт | Протокол | Назначение | Доступ |
|---|---|---|---|
| 443 | TCP | HTTPS PrimeCast | Публичный/корпоративный |
| 8890 | UDP | SRT publish от устройств | Только необходимые источники |
| 8189 | UDP | WebRTC ICE | По схеме развёртывания |
| 9090 | TCP | PrimeCast API | Только localhost |
| 8889 | TCP/UDP | MediaMTX WebRTC/WHEP | Обычно через API/Caddy |
| 8888 | TCP | HLS | Обычно localhost |
| 9997 | TCP | MediaMTX Control API | Только localhost |
| 22 | TCP | SSH | Только административная сеть |
Фактические правила firewall должны соответствовать конкретному развёртыванию.
Проверка Caddy
sudo caddy validate \
--config /etc/primecast/Caddyfile \
--adapter caddyfile
Проверка MediaMTX
sudo /usr/local/bin/mediamtx \
/etc/primecast/mediamtx.yml
Эту команду нельзя запускать параллельно с действующей службой на тех же портах. Для проверки конфигурации используйте поддерживаемый текущей версией режим или тестовый узел.
Ограничение production API
В репозитории сохранён production-бинарник Go API для Linux x86-64, но исходный Go-проект отсутствует. Это означает:
- бинарник нельзя просто пересобрать под ARM;
- изменение API требует восстановления или новой реализации;
- перед обновлением обязательна проверка SHA-256;
- рабочий бинарник и конфигурации должны иметь резервную копию.
Сертификаты и TLS
Caddy завершает HTTPS. Android и Electron используют контролируемое доверие к корневому сертификату.
Что нельзя делать:
- глобально отключать проверку сертификатов;
- использовать
curl -kкак доказательство исправности; - принимать новый корень без проверки;
- хранить приватный ключ в Git;
- пересылать приватный ключ в тикете.
Ротация корня
При замене корневого CA:
- подготовить новый сертификат;
- обновить сервер;
- обновить публичный корень в Android;
- обновить закреплённый корень/отпечаток в Electron;
- пересобрать клиентов;
- протестировать параллельный переход;
- распространить новые версии;
- только затем вывести старый корень.
Безопасность
Секретные данные
К секретным относятся:
- пароль устройства;
- пароль аккаунта;
- SSH-пароль и приватный ключ;
auth.secret;- JWT-секреты;
- SRT passphrase;
- MediaMTX publish password;
- SMTP-пароль;
- API-ключи внешних сервисов;
- приватные TLS-ключи.
Логи перед отправкой
Удалите:
- пароли;
- токены;
- полные SRT URI;
- cookie;
- Authorization-заголовки;
- приватные IP, если политика компании требует;
- персональные сообщения.
Права файлов
sudo find /etc/primecast -maxdepth 1 -type f \
-printf '%M %u:%g %p\n'
Любой секрет, доступный на чтение всем пользователям, является инцидентом.
Запрещённые практики
- общий аккаунт администратора;
- один пароль на все модули;
- production-секреты в
.env.example; - скриншот пароля в общей группе;
- отключение firewall ради теста;
- запуск backend от root без необходимости;
- публикация runtime JSON и базы данных в GitLab.
Регламент обновления
Перед обновлением
- создать резервную копию;
- записать версии;
- проверить свободное место;
- проверить питание;
- предупредить пользователей;
- назначить окно работ;
- подготовить откат.
После обновления
- службы активны;
- экран работает;
- сеть определяется;
- HDMI определяется;
- ключ и пароль отображаются;
- стрим запускается и останавливается;
- просмотр работает в браузере;
- просмотр работает в целевом приложении;
- роли и группы не нарушены;
- в логах нет новых критических ошибок.
Критерий отката
Откатывайте версию, если:
- модуль перестал публиковать поток;
- OSD не запускается;
- данные доступа недоступны;
- появились массовые ошибки авторизации;
- сертификат перестал приниматься клиентами;
- повреждены роли или изоляция компаний.