Live tunnel status
Uptime, ingress count, container PID, memory, version. Polled every 5s straight from cloudflared metrics.
Tunlify is a self-hosted dashboard for Cloudflare Tunnel and the Docker Compose stacks behind it. Live status, log streaming, ingress editing, audit, and alerts — without leaving the terminal-grade UI.
# Bring it up — that's the whole install. $ docker network create cloudflared → network created $ cp .env.example .env && nano .env $ docker compose up -d [+] Running 3/3 ✓ Container tunlify-backend Started ✓ Container tunlify-frontend Started ✓ Container tunlify-cloudflared Started $ open https://tunlify.your-domain.dev # 9 hostnames live · 0 incidents · 23h uptime
Uptime
23h 12m
Ingress
9
Memory
42 MB
Capabilities
Cloudflared gives you the tunnel. Tunlify gives you the cockpit — uptime, log replay, ingress edits, alerts, audit, and Compose deploys. Already wired, already styled, already in your stack.
Uptime, ingress count, container PID, memory, version. Polled every 5s straight from cloudflared metrics.
Stream stdout / stderr from the cloudflared container with filter, search, and a 50k-line ring buffer.
Edit config.yml with YAML schema validation, diff preview, and an automatic backup on every save.
Manage Docker Compose stacks: up, down, restart, deploy with git checkout. Build output streams in.
Discord, Telegram, Slack. Tunnel down, ingress drift, container restart — pick the events you care about.
Every action recorded with actor, target, before/after. Session-based JWT, password change in console.
Generate `cloudflared access tcp` commands per-host, with the right service token. Copy and ship it.
Browse, diff, and restore historical config.yml — rollback to any prior state in two clicks.
Visualize tunnel-level metrics — connection counts, request rates, region split — without scraping Prometheus.
Ingress, validated
Schema-aware editor catches typos before cloudflared ever sees them. Every save snapshots the prior config — restore in two clicks.
# Cloudflare Tunnel · 9 hostnames tunnel: 9c3f1d…b201 credentials-file: /etc/cloudflared/9c3f.json ingress: - hostname: app.luzyver.dev service: http://app:3000 - hostname: api.luzyver.dev service: http://api:8080 originRequest: connectTimeout: 30s noTLSVerify: true - hostname: ssh.luzyver.dev service: ssh://homelab:22 - service: http_status:404 # ✓ valid · 0 errors · 0 warnings
Workflow
Drop the compose stack, your config.yml, and credentials.json on a host with Docker. Tunlify launches alongside cloudflared on the same network.
Open the dashboard, edit ingress rules with live YAML validation, hit save. A backup is written automatically before every change.
Live status, log stream, hostnames table, audit trail, alert routing — all in a Warp-grade console you can keep open all day.
Why not raw cloudflared?
| Capability | Tunlify | cloudflared CLI | Other dashboards |
|---|---|---|---|
| Live tunnel status (5s poll) | — | Some | |
| WebSocket log streaming | — | Tail logs | |
| Ingress YAML editor with validation | — | — | |
| Versioned config backups | — | — | |
| Docker Compose project control | — | — | |
| Webhook alerts (Discord/Slack/TG) | — | Some | |
| Audit log | — | — | |
| Self-hosted, single binary | Some |
Pricing
Tunlify is MIT-licensed. Run it on your homelab, your VPS, your kubernetes node — wherever cloudflared already lives. No SaaS lock-in, no telemetry, no seat counting.
Community
$0 forever · MIT
Pro support
paid via GitHub Sponsors
Enterprise
SSO · audit · SLA
One compose file, one dashboard, every hostname. Open the live demo or clone the repo and try it on your own host.