Skip to content

Настройка Reverse Proxy (Nginx, Caddy, Traefik) ​

Размещение RUSEON Core за обратным прокси-сервером позволяет централизованно управлять SSL/TLS сертификатами (Let's Encrypt), настраивать маршрутизацию доменов и интегрировать видеосервер в существующую инфраструктуру.


1. Caddy (Рекомендуемый вариант) ​

Веб-сервер Caddy автоматически выпускает и обновляет сертификаты Let's Encrypt и "из коробки" поддерживает протоколы HTTP/2, HTTP/3 и WebSocket:

caddy
video.example.com {
    reverse_proxy 127.0.0.1:8080 {
        # Отключение буферизации ответов для мгновенной доставки HLS и WHEP
        flush_interval -1
    }
}

2. Nginx Production Конфигурация ​

При использовании Nginx обязательно настройте проксирование WebSocket и отключите буферизацию для стриминга:

nginx
server {
    listen 80;
    server_name ruseon.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name ruseon.example.com;

    ssl_certificate /etc/letsencrypt/live/ruseon.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/ruseon.example.com/privkey.pem;

    # Максимальный размер загрузки
    client_max_body_size 50M;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_http_version 1.1;

        # Заголовки WebSocket
        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;

        # Отключение буферизации для HLS и WHEP
        proxy_buffering off;
        proxy_read_timeout 86400s;
        proxy_send_timeout 86400s;
    }
}

3. Traefik (Интеграция с Docker Compose) ​

При использовании Traefik в качестве Ingress-контроллера:

yaml
services:
  ruseon:
    image: ghcr.io/rusegal/ruseon-core:latest
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.ruseon.rule=Host(`ruseon.example.com`)"
      - "traefik.http.routers.ruseon.entrypoints=websecure"
      - "traefik.http.routers.ruseon.tls.certresolver=letsencrypt"
      - "traefik.http.services.ruseon.loadbalancer.server.port=8080"

Важное замечание по WebRTC трафику ​

Reverse Proxy обрабатывает HTTPS сигнализацию (WHEP) и HLS видеопотоки. Сам медиапоток WebRTC передаётся напрямую по протоколу UDP:

  • Убедитесь, что диапазон UDP-портов (50000-50100) открыт в фаерволе и направлен на сервер RUSEON.
  • Укажите публичный IP-адрес сервера в параметре webrtc.public_ip в config.yaml, чтобы браузерные клиенты получали корректные ICE-кандидаты.

Связанная документация ​

Released under the MIT License.