Self-hosted IPTV platform · v1.1.0
Run your IPTV stack like infrastructure.¶
tunlx is a Go-based proxy and tunneling service for Xtream-compatible upstreams. Publish stable endpoints, route egress through WireGuard or Tailscale, build composite catalogs across providers, and run the whole thing from one operations dashboard.
Everything in one operator console¶
See every screen in the dashboard tour
What tunlx gives you¶
How requests flow¶
flowchart LR
classDef user fill:#0ea5e9,stroke:#0369a1,color:#fff
classDef tunlx fill:#6366f1,stroke:#4338ca,color:#fff
classDef mod fill:#1e293b,stroke:#334155,color:#e2e8f0
classDef egress fill:#0f766e,stroke:#0d9488,color:#fff
classDef src fill:#a855f7,stroke:#7e22ce,color:#fff
Client["IPTV / Xtream client"]:::user
Browser["Operator browser"]:::user
subgraph TUNLX["tunlx"]
direction TB
Dashboard["Dashboard<br/>+ Web Player"]:::tunlx
Standard["Standard proxy"]:::tunlx
Composite["Composite proxy"]:::tunlx
Xtreme["Xtream service"]:::tunlx
MediaFlow["MediaFlow bridge"]:::mod
EPG["EPG scheduler"]:::mod
Activity["Activity log"]:::mod
end
subgraph EGRESS["Egress modes"]
direction TB
System["System routing"]:::egress
VPN["WireGuard / Mullvad"]:::egress
Tsexit["Tailscale exit node"]:::egress
Direct["Direct (sourceIP)"]:::egress
end
Upstreams["Upstream IPTV providers"]:::src
IPTVOrg["iptv-org catalog"]:::src
Browser --> Dashboard
Client --> Standard
Client --> Composite
Client --> Xtreme
Standard --> MediaFlow
Composite --> Standard
Xtreme --> MediaFlow
Standard --> EGRESS
Xtreme --> EGRESS
MediaFlow --> EGRESS
EGRESS --> Upstreams
Xtreme --> IPTVOrg
Dashboard -. controls .-> Standard
Dashboard -. controls .-> Composite
Dashboard -. controls .-> Xtreme
Dashboard -. reads .-> Activity
Pick your starting point¶
Install tunlx One-line installer for Linux hosts, or a Docker Compose stack you control. Install now
Dashboard tour Every dialog and screen in the dashboard, shown and explained. See every screen
Architecture How proxies, composites, services, egress, and the dashboard fit together. System view
Production-ready by design¶
- Hardened HTTP layer — bcrypt admin auth, signed session cookies, CSP/HSTS headers, brute-force-resistant login rate limiting, and an opt-in
enforceHttpsredirect. - Per-proxy isolation — categories, credentials, EPG schedules, and verbose logging scope to a single proxy, so a misbehaving upstream doesn't take the platform down with it.
- Observability built in —
/metricsJSON, per-proxy bandwidth counters, EPG refresh status badges, and configurable Xtream API audit policies. - Honest about limits — every egress mode (
system,vpn,tsexit,direct) is explicit per proxy, and the dashboard surfaces which one is active.
Source & community¶
- Code: github.com/eyupio/tunlx
- Container image: ghcr.io/eyupio/tunlx
- Project site: tunlx.io
- License: MIT