Dokploy

Oryx

Oryx (formerly SRS Stack) is an all-in-one, open-source video streaming server with a web console. It ingests RTMP, WebRTC (WHIP) and SRT streams and plays them back over HLS, HTTP-FLV and WebRTC (WHEP), with built-in recording, forwarding, transcoding and virtual live streaming.

Oryx logo

Configuration

version: "3.8"
services:
  oryx:
    image: ossrs/oryx:5.15.20
    restart: unless-stopped
    ports:
      # RTMP, WebRTC and SRT are not HTTP protocols, so Traefik cannot route
      # them through the domain. They must be published directly on the host
      # (same approach as the poste.io template with its mail ports). Use the
      # server IP (not the domain) for these protocols.
      - "1935:1935" # RTMP ingest/playback (TCP)
      - "8000:8000/udp" # WebRTC media transport (UDP)
      - "10080:10080/udp" # SRT ingest/playback (UDP)
    volumes:
      - oryx-data:/data

volumes:
  oryx-data: {}
[variables]
main_domain = "${domain}"

[config]
[[config.domains]]
serviceName = "oryx"
port = 2022
host = "${main_domain}"

Base64

To import this template in Dokploy: create a Compose service → AdvancedBase64 import and paste the content below:

ewogICJjb21wb3NlIjogInZlcnNpb246IFwiMy44XCJcbnNlcnZpY2VzOlxuICBvcnl4OlxuICAgIGltYWdlOiBvc3Nycy9vcnl4OjUuMTUuMjBcbiAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZFxuICAgIHBvcnRzOlxuICAgICAgIyBSVE1QLCBXZWJSVEMgYW5kIFNSVCBhcmUgbm90IEhUVFAgcHJvdG9jb2xzLCBzbyBUcmFlZmlrIGNhbm5vdCByb3V0ZVxuICAgICAgIyB0aGVtIHRocm91Z2ggdGhlIGRvbWFpbi4gVGhleSBtdXN0IGJlIHB1Ymxpc2hlZCBkaXJlY3RseSBvbiB0aGUgaG9zdFxuICAgICAgIyAoc2FtZSBhcHByb2FjaCBhcyB0aGUgcG9zdGUuaW8gdGVtcGxhdGUgd2l0aCBpdHMgbWFpbCBwb3J0cykuIFVzZSB0aGVcbiAgICAgICMgc2VydmVyIElQIChub3QgdGhlIGRvbWFpbikgZm9yIHRoZXNlIHByb3RvY29scy5cbiAgICAgIC0gXCIxOTM1OjE5MzVcIiAjIFJUTVAgaW5nZXN0L3BsYXliYWNrIChUQ1ApXG4gICAgICAtIFwiODAwMDo4MDAwL3VkcFwiICMgV2ViUlRDIG1lZGlhIHRyYW5zcG9ydCAoVURQKVxuICAgICAgLSBcIjEwMDgwOjEwMDgwL3VkcFwiICMgU1JUIGluZ2VzdC9wbGF5YmFjayAoVURQKVxuICAgIHZvbHVtZXM6XG4gICAgICAtIG9yeXgtZGF0YTovZGF0YVxuXG52b2x1bWVzOlxuICBvcnl4LWRhdGE6IHt9XG4iLAogICJjb25maWciOiAiW3ZhcmlhYmxlc11cbm1haW5fZG9tYWluID0gXCIke2RvbWFpbn1cIlxuXG5bY29uZmlnXVxuW1tjb25maWcuZG9tYWluc11dXG5zZXJ2aWNlTmFtZSA9IFwib3J5eFwiXG5wb3J0ID0gMjAyMlxuaG9zdCA9IFwiJHttYWluX2RvbWFpbn1cIlxuIgp9

Instructions

Oryx (SRS Stack)

Oryx is an all-in-one video streaming server built on SRS, with a web console for managing streams, recording, forwarding, transcoding and virtual live streaming.

First login

Open the domain assigned to this service. On the first visit Oryx asks you to create the admin password — set it right away, since anyone who reaches the page first can claim the instance. The password (and all other state) is stored in the oryx-data volume, so it survives restarts and upgrades.

Publishing streams

The web console (Scenarios > Streaming) shows ready-to-copy URLs that include your stream secret. The streaming protocols are not HTTP, so Traefik cannot route them through your domain — they are published directly on the server's host ports instead. Use the server IP address (not the domain) for these:

ProtocolURL formatHost port
RTMP (OBS, ffmpeg)rtmp://SERVER_IP/live/livestream?secret=xxx1935/tcp
SRTsrt://SERVER_IP:10080?streamid=#!::r=live/livestream,secret=xxx,m=publish10080/udp
WebRTC (WHIP)https://your-domain/rtc/v1/whip/?app=live&stream=livestream&secret=xxxsignaling via domain, media via 8000/udp

Make sure your server firewall / cloud security group allows 1935/tcp, 8000/udp and 10080/udp. Because these are fixed host ports, only one Oryx instance can run per server.

Playback

HTTP-based playback goes through your domain (HTTPS via Traefik):

  • HLS: https://your-domain/live/livestream.m3u8
  • HTTP-FLV: https://your-domain/live/livestream.flv
  • WebRTC (WHEP): available from the console's preview page; media flows over 8000/udp.

If WebRTC playback or publishing connects but produces no media, verify that UDP port 8000 is reachable from the client — WebRTC media bypasses the reverse proxy entirely.

Tags

streaming, video, rtmp, webrtc, srt, hls, media-server


Version: 5.15.20

On this page