Adds a template for Oryx (formerly SRS Stack), an all-in-one open-source video streaming server built on SRS, with a web console for managing streams, recording, forwarding, transcoding and virtual live streaming.
Image: ossrs/oryx:5.15.20 (latest stable release on Docker Hub)
Web console (port 2022) is routed through the Traefik domain
State persisted in the oryx-data volume (/data)
instructions.md covers the first-login password setup and the RTMP/SRT/WebRTC publish URLs
Port decision
RTMP, SRT and WebRTC are not HTTP protocols, so Traefik cannot route them through the domain. Following the precedent set by the poste.io template (which publishes its mail ports the same way), the streaming ports are published directly on the host, with a comment in the compose file explaining why:
1935:1935 — RTMP ingest/playback (TCP)
8000:8000/udp — WebRTC media transport (UDP)
10080:10080/udp — SRT ingest/playback (UDP)
Users publish streams against the server IP on these ports; HLS/HTTP-FLV playback and the console go through the HTTPS domain. This is documented in instructions.md.
Test evidence
Deployed on a Dokploy instance from this exact blueprint:
Deploy: done (123s), container running
GET / via the assigned domain → HTTP 200, <title>Oryx</title> (management console)
GET /terraform/v1/mgmt/init → {"code":0,"data":{"init":false}} (first-run admin setup ready)
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.
## 📋 Pull Request Information
**Original PR:** https://github.com/Dokploy/templates/pull/1027
**Author:** [@Siumauricio](https://github.com/Siumauricio)
**Created:** 7/14/2026
**Status:** 🔄 Open
**Base:** `canary` ← **Head:** `feat/oryx`
---
### 📝 Commits (1)
- [`af8b535`](https://github.com/Dokploy/templates/commit/af8b535d34fd030f576dc7cf15dad8f03afdbed7) feat: add Oryx (SRS) media streaming template
### 📊 Changes
**5 files changed** (+129 additions, -0 deletions)
<details>
<summary>View changed files</summary>
➕ `blueprints/oryx/docker-compose.yml` (+18 -0)
➕ `blueprints/oryx/instructions.md` (+29 -0)
➕ `blueprints/oryx/logo.svg` (+52 -0)
➕ `blueprints/oryx/meta.json` (+22 -0)
➕ `blueprints/oryx/template.toml` (+8 -0)
</details>
### 📄 Description
## Summary
Adds a template for [Oryx](https://github.com/ossrs/oryx) (formerly SRS Stack), an all-in-one open-source video streaming server built on SRS, with a web console for managing streams, recording, forwarding, transcoding and virtual live streaming.
- Image: `ossrs/oryx:5.15.20` (latest stable release on Docker Hub)
- Web console (port 2022) is routed through the Traefik domain
- State persisted in the `oryx-data` volume (`/data`)
- `instructions.md` covers the first-login password setup and the RTMP/SRT/WebRTC publish URLs
## Port decision
RTMP, SRT and WebRTC are not HTTP protocols, so Traefik cannot route them through the domain. Following the precedent set by the `poste.io` template (which publishes its mail ports the same way), the streaming ports are published directly on the host, with a comment in the compose file explaining why:
- `1935:1935` — RTMP ingest/playback (TCP)
- `8000:8000/udp` — WebRTC media transport (UDP)
- `10080:10080/udp` — SRT ingest/playback (UDP)
Users publish streams against the server IP on these ports; HLS/HTTP-FLV playback and the console go through the HTTPS domain. This is documented in `instructions.md`.
## Test evidence
Deployed on a Dokploy instance from this exact blueprint:
- Deploy: `done` (123s), container running
- `GET /` via the assigned domain → **HTTP 200**, `<title>Oryx</title>` (management console)
- `GET /terraform/v1/mgmt/init` → `{"code":0,"data":{"init":false}}` (first-run admin setup ready)
- Host port check: `nc -vz SERVER_IP 1935` → connection succeeded (RTMP reachable)
- `node build-scripts/generate-meta.js --check` → 481 templates validated
Closes #300
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---
<sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
📋 Pull Request Information
Original PR: https://github.com/Dokploy/templates/pull/1027
Author: @Siumauricio
Created: 7/14/2026
Status: 🔄 Open
Base:
canary← Head:feat/oryx📝 Commits (1)
af8b535feat: add Oryx (SRS) media streaming template📊 Changes
5 files changed (+129 additions, -0 deletions)
View changed files
➕
blueprints/oryx/docker-compose.yml(+18 -0)➕
blueprints/oryx/instructions.md(+29 -0)➕
blueprints/oryx/logo.svg(+52 -0)➕
blueprints/oryx/meta.json(+22 -0)➕
blueprints/oryx/template.toml(+8 -0)📄 Description
Summary
Adds a template for Oryx (formerly SRS Stack), an all-in-one open-source video streaming server built on SRS, with a web console for managing streams, recording, forwarding, transcoding and virtual live streaming.
ossrs/oryx:5.15.20(latest stable release on Docker Hub)oryx-datavolume (/data)instructions.mdcovers the first-login password setup and the RTMP/SRT/WebRTC publish URLsPort decision
RTMP, SRT and WebRTC are not HTTP protocols, so Traefik cannot route them through the domain. Following the precedent set by the
poste.iotemplate (which publishes its mail ports the same way), the streaming ports are published directly on the host, with a comment in the compose file explaining why:1935:1935— RTMP ingest/playback (TCP)8000:8000/udp— WebRTC media transport (UDP)10080:10080/udp— SRT ingest/playback (UDP)Users publish streams against the server IP on these ports; HLS/HTTP-FLV playback and the console go through the HTTPS domain. This is documented in
instructions.md.Test evidence
Deployed on a Dokploy instance from this exact blueprint:
done(123s), container runningGET /via the assigned domain → HTTP 200,<title>Oryx</title>(management console)GET /terraform/v1/mgmt/init→{"code":0,"data":{"init":false}}(first-run admin setup ready)nc -vz SERVER_IP 1935→ connection succeeded (RTMP reachable)node build-scripts/generate-meta.js --check→ 481 templates validatedCloses #300
🤖 Generated with Claude Code
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.