Repository navigation
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.
| 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 |
- 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
studiowith the reader password when prompted.
The dashboard supports a legacy clipboard fallback because private HTTP pages do not always receive the modern Clipboard API.
The page refreshes /api/status every two seconds without reloading. It shows:
- Media-server availability
- Feed state
- Shared signal state (
STARTET,EMPFÄNGT DATENorKEINE 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.
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.
The dashboard reports:
- Total free space
- Used percentage
- Number of
.mp4and.tsrecordings - 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.
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.
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.
Home · Quick start · Troubleshooting · Repository · Releases · License
Tailnet IRL Server · Developed by Nik Pottbecker