Skip to content

Dashboard Tour

A visual reference for every screen in the tunlx dashboard. If you are looking for "what does that dialog do?", it is on this page.

All screenshots are from a live instance running two standard proxies, one composite catalog and one Xtream service. Addresses shown are RFC 5737 documentation values.


Signing in

The tunlx sign-in screen

Session cookies are signed with sessionSecret. The login endpoint is rate limited hard on purpose — roughly one attempt every two seconds — so brute-forcing the dashboard is not practical. Repeated failures simply queue.


The overview

The dashboard overview and proxy list

Two bands of cards sit above the proxy list:

  • Counts — active, inactive and total proxies, plus aggregate bandwidth. A proxy is marked inactive when it has moved no data recently; that is normal for an idle lineup and is not an error.
  • Host health — CPU, memory and outbound bandwidth for the machine tunlx is running on, each with a trend chip.

Below that, the proxy list has filter tabs (All / Active / Inactive / MediaFlow) and a search box bound to the / key.

Simple and Advanced modes

The dashboard in Simple mode

Simple mode drops the composite cards, Xtream service editing, the config editor, import/export and the MediaFlow filter, while keeping Standard proxies, Xtream service cards, and the Regional IPTV Wizard. It is the right default for a host that runs a couple of standard proxies. Everything hidden is still configured and still running — only the controls are hidden. See Dashboard Modes.

Dark mode

The dashboard in dark mode

The theme toggle lives in the navbar and persists per browser.

Expanded proxy cards

All four proxy cards expanded

Cards expand independently. Each type exposes a different action set — a composite proxy has Categories but no upstream account, an Xtream service has Categories and Users but no target server.

An expanded standard proxy card

Host, target, egress route, EPG state, per-proxy logging, the collapsible upstream account and connection panels, and live bandwidth and RPS.

An expanded Xtream service card

Category and channel counts, active viewers, a content-type summary, and the Categories and Users managers in place of an upstream account.


Creating and editing proxies

Choosing a blueprint

The Select Proxy Blueprint dialog

Add Proxy always starts here. See Step 3 of Getting Started for how to choose.

Standard proxy

The standard proxy dialog

Target server, bind host and port, upstream Xtream credentials, egress route, MediaFlow, EPG schedule and the anti-block options. The Auto-fill button parses a pasted M3U URL and fills the fields it can infer.

Composite proxy

The composite proxy dialog

A composite proxy has no target of its own — it borrows categories from proxies you already have, behind one set of client credentials. categoryPrefix labels merged categories so viewers can tell sources apart.

Xtream service

The Xtream service dialog

Identity, bind port, and delivery options — including Remux HLS streams to MPEG-TS, which uses ffmpeg to copy (not re-encode) .m3u8 sources into transport-stream segments for legacy devices.


Managing content

Categories

The category manager for an Xtream service

Categories are split by content type — Live, Movies, Series — each with its own count. The overflow menu on each tab offers Import M3U, Import from iptv-org and a bulk delete.

Category and channel IDs must be numeric

The Xtream Codes API represents category_id and stream_id as numbers. tunlx assigns numeric IDs automatically when you create things through the dashboard, but if you hand-edit config.json and give a group an ID like grp-news, that group is silently skipped from the API — clients see an empty category list while the dashboard still shows it. A warning is logged. Stick to numeric IDs when editing JSON directly.

Channels

The channel manager

Per-channel: enable toggle, edit, delete, and a drag handle that sets the order players see. The All / Enabled / Disabled filter carries live counts. Reordering is disabled while a filter is active, since a partial list cannot express a full ordering.

Viewers

The viewer manager

Each viewer of an Xtream service gets their own login, expiry date and connection limit. Passwords are bcrypt-hashed. Deactivating a viewer keeps the record but refuses their logins.

Composite category selection

Picking categories for a composite catalog

Pick which categories from which source proxies make up the merged catalog.


Importing channels

From iptv-org

Importing from the iptv-org catalog

Search the public iptv-org catalog by name, country and category, then import a selection straight into one of your categories. The catalog is cached in memory with a visible refresh timestamp.

From an M3U playlist

Importing an M3U playlist

Paste a URL or upload a file. tunlx parses #EXTINF metadata — channel name, logo, tvg-id and group — and maps it onto its own channel model.


Networking

Inbound and outbound

The global Networking dialog

Sets both directions globally, with the current WireGuard and Tailscale status shown inline. Per-proxy route overrides the outbound choice.

WireGuard

WireGuard configuration

Two modes. Manual takes a WireGuard config you paste or point at on disk. Provider mode drives Mullvad directly: tunlx fetches the server list, keeps it refreshed on a schedule, and can filter by country, city or hostname. See WireGuard / VPN.

Tailscale

Tailscale configuration

tunlx embeds a tsnet node, so it joins your tailnet as its own device without needing Tailscale installed on the host. It can also select an exit node for outbound traffic. See Tailscale Access.


Operations

Stream health tests

The stream health test runner

Probes channels asynchronously across HLS, MPEG-TS, MP4 and Matroska.

These are shallow probes

A test fetches metadata from the head of the stream (up to 512 KB). It proves the upstream answers and looks like the media it claims to be. It does not walk every segment, so a pass is not a guarantee that the whole stream is intact. See Stream Health Tests.

Activity and telemetry

Activity and telemetry

Request-by-request activity per proxy and per viewer, filterable and exportable to CSV. Which actions get recorded is governed by userActivityPolicies, so you can log stream starts without logging every guide poll. See Activity & Telemetry.

The OpenAPI explorer

The built-in OpenAPI explorer

Every proxy publishes a Swagger UI describing its own Xtream endpoints, with that proxy's real base URL already filled in — useful for checking exactly what a client will receive. See the Xtream API reference.


Configuration

The config editor

The in-dashboard configuration editor

Advanced mode only. Edits config.json in place, with Validate JSON to check before saving.

Viewing the effective config

Read-only configuration JSON

A read-only view of the running configuration, handy for support and for copying a proxy definition between hosts.

Secrets are encrypted at rest

sessionSecret and other sensitive fields are AES-256 encrypted in config.json with the enc:v1: prefix, using a key auto-generated at config.key in the same directory as the config file. Back up config.key alongside config.json and never commit either — a config without its key cannot be decrypted.


Wizards

The dashboard setup wizard

The setup wizard is reachable any time from the navbar, not just on first run. It links out to the WireGuard, Tailscale and routing dialogs, and can hand off to the friendly service builder.

The guided TV-helper service builder

The TV-helper flow builds a working Xtream service from the iptv-org catalog — pick a country and some categories and it creates the categories, channels and a demo viewer for you. Full walkthrough in Setup Wizards.


The web player

The built-in web player

Browse by content type and category, then play in the browser. It is the fastest way to answer "is this a tunlx problem or a client problem?" — if a stream plays here, tunlx is serving it correctly.

The player's viewer login prompt

Xtream services prompt for one of their viewer logins first; standard and composite proxies open straight into the browser. The full walkthrough — entry points, playback controls, EPG timeline, mobile layout — is in Web Player.