Skip to content

Dashboard

Nik Pottbecker edited this page Oct 12, 2026 · 2 revisions

Dashboard

The dashboard is the operational center of an installed server. It listens on the server's Tailscale IPv4 address at TCP port 8090.

http://TAILSCALE_IP:8090

It is intentionally plain HTTP inside the encrypted Tailnet. Do not expose it through a public tunnel or router port forwarding.

Status badge

Badge Meaning Action
LIVE MediaMTX is receiving the live path Normal streaming state
STREAM HÄNGT The publisher path is ready, but no new media bytes arrived for at least eight seconds Check Moblin connectivity and uplink stability
WARTET AUF HANDY Services are healthy; no publisher is active Start Moblin when ready
SERVER NICHT ERREICHBAR The dashboard cannot read the local MediaMTX API Check services and logs

Connection controls

  • In Moblin öffnen creates a Moblin deep link with the configured profile and authenticated SRT publisher URL.
  • OBS-Link kopieren copies the authenticated SRT reader URL.
  • RTMP-Link kopieren copies the fallback publisher URL.
  • RTSP-Link kopieren copies an authenticated reader URL for VLC or FFmpeg.
  • LL-HLS öffnen and WebRTC öffnen launch browser previews. Sign in as studio with the reader password when prompted.

The dashboard supports a legacy clipboard fallback because private HTTP pages do not always receive the modern Clipboard API.

Live telemetry

The page refreshes /api/status every two seconds without reloading. It shows:

  • Media-server availability
  • Feed state
  • Shared signal state (STARTET, EMPFÄNGT DATEN or KEINE DATEN)
  • Recording configuration state
  • Approximate current inbound bitrate
  • Current live duration
  • Number of readers
  • Inbound and outbound byte totals
  • Detected media tracks

Bitrate and stall detection are calculated once on the server from MediaMTX inbound-byte samples taken every two seconds. Dashboard, API and CLI therefore report the same signal state, even when no browser is open. When bytes resume after a stall, the state automatically returns to EMPFÄNGT DATEN; no service restart is required.

The eight-second threshold is long enough to avoid treating a single delayed sample as a failure.

Connection history

The dashboard retains up to 200 state transitions for 30 days:

  • Stream started
  • Stream ended or was interrupted
  • Media server became unavailable
  • Media server recovered

Completed stream events include the observed duration. The summary shows the most recent live start and the number of stream endings during the last 24 hours.

History is stored in the private state directory as connection-history.json. It contains timestamps, event types and durations only — never credentials, URLs, media content or recording names.

Storage guard

The dashboard reports:

  • Total free space
  • Used percentage
  • Number of .mp4 and .ts recordings
  • Aggregate recording size
State Rule
OK Above warning thresholds
KNAPP Below 10% free, or below 5 GiB on a disk of at least 50 GiB
KRITISCH Below 3% free or below 1 GiB
NICHT VERFÜGBAR Filesystem usage could not be read

Storage scans are cached for 30 seconds. Only aggregate counts are returned by the API; names and paths stay local.

Install as an app

The dashboard includes a web app manifest and scalable icon. On iPhone, use Safari's Share menu and Add to Home Screen for quick access. The installed PWA still requires an active Tailscale connection.

Security note

The dashboard has no second web login because the Tailnet is the primary trust boundary. Anyone who can reach it can view working connection URLs. Use Tailscale grants or ACLs to limit TCP 8090 to production devices. See Security.

Clone this wiki locally