speedtest-monitor
ghcr.io/greite/speedtest-monitor:latest
https://ghcr.io/greite/speedtest-monitor
bridge
sh
false
https://github.com/Greite/speedtest-monitor/issues
https://github.com/Greite/speedtest-monitor
Self-hosted internet speed monitor. Runs Cloudflare Speed Test on a configurable schedule, stores every measurement in SQLite, and serves a dashboard with live updates over WebSocket. Includes alerts (webhook, ntfy, Discord, Slack, SMTP), authentication (local accounts and OIDC), and role-based access (admin / viewer).
On first boot, set AUTH_SECRET (required) and BETTER_AUTH_URL (required when accessed behind a reverse proxy). Either set SPEEDTEST_ADMIN_EMAIL + SPEEDTEST_ADMIN_PASSWORD to seed the first admin, or visit /setup to create it from the UI. All other variables are optional.
Data is persisted to /data (mapped to /mnt/user/appdata/speedtest-monitor by default).
Network:Other Tools
http://[IP]:[PORT:3000]/
https://raw.githubusercontent.com/Greite/unraid-templates/main/speedtest-monitor/speedtest-monitor.xml
https://raw.githubusercontent.com/Greite/speedtest-monitor/main/public/brand/icon-256.png
https://raw.githubusercontent.com/Greite/speedtest-monitor/main/docs/screenshots/dashboard.png
Self-hosted internet speed monitor with a live dashboard, history charts, alerts, and authentication.
Features:
- Cloudflare Speed Test (HTTP-only, no browser, no Chromium dependency)
- Configurable schedule (1-1440 min), live-editable from the UI
- SQLite history with download / upload / latency / jitter / packet loss / bufferbloat
- Live updates over WebSocket (path: /ws)
- Alerts on degradation and recovery via webhook, ntfy, Discord, Slack, SMTP
- Local accounts + optional OIDC SSO (Authelia, Authentik, Keycloak, ...)
- admin / viewer roles
Setup notes:
- AUTH_SECRET is REQUIRED. Generate with: openssl rand -base64 32
- BETTER_AUTH_URL must be set to your public origin when running behind a reverse proxy (e.g. https://speedtest.example.com). Sign-in callbacks and OIDC redirects rely on it. Defaults to http://localhost:PORT, which only works for direct local access.
- For the first admin, set SPEEDTEST_ADMIN_EMAIL + SPEEDTEST_ADMIN_PASSWORD (idempotent seed) OR visit /setup on first boot.
- If you front this container with a reverse proxy (SWAG, NPM, Caddy, ...), forward the Upgrade header on /ws so the live dashboard works.
3000
/mnt/user/appdata/speedtest-monitor
15
10
8
/data/speedtest.db
3000
587
SSO
true