Tunlify
v0.4 · open beta

A control plane for cloudflared, built like Warp.

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.

MIT-licensed Single docker compose No managed cloud WebSocket-first
luzyver@prod ~/tunlify docker compose
 # 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

Built on Go · chi · gorilla/websocket Vue 3 · Vite · Tailwind SQLite cloudflared Docker Compose

Capabilities

Everything you'd otherwise duct-tape together.

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.

realtime

Live tunnel status

Uptime, ingress count, container PID, memory, version. Polled every 5s straight from cloudflared metrics.

ws://

WebSocket log streaming

Stream stdout / stderr from the cloudflared container with filter, search, and a 50k-line ring buffer.

yaml

Ingress editor

Edit config.yml with YAML schema validation, diff preview, and an automatic backup on every save.

Compose project deploys

Manage Docker Compose stacks: up, down, restart, deploy with git checkout. Build output streams in.

Webhook alerts

Discord, Telegram, Slack. Tunnel down, ingress drift, container restart — pick the events you care about.

Audit log + JWT auth

Every action recorded with actor, target, before/after. Session-based JWT, password change in console.

TCP access generator

Generate `cloudflared access tcp` commands per-host, with the right service token. Copy and ship it.

Versioned config backups

Browse, diff, and restore historical config.yml — rollback to any prior state in two clicks.

Cloudflared metrics

Visualize tunnel-level metrics — connection counts, request rates, region split — without scraping Prometheus.

Ingress, validated

YAML you can trust.
Diff before deploy.

Schema-aware editor catches typos before cloudflared ever sees them. Every save snapshots the prior config — restore in two clicks.

  • Live YAML validation against the cloudflared ingress schema
  • Inline diff between editor buffer and the live config
  • Auto-backup before every save · timestamped, browsable
config.yml · ingress validated
 # 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

From docker compose up to live in three steps.

01

Run with one compose file

Drop the compose stack, your config.yml, and credentials.json on a host with Docker. Tunlify launches alongside cloudflared on the same network.

02

Sign in, ship hostnames

Open the dashboard, edit ingress rules with live YAML validation, hit save. A backup is written automatically before every change.

03

Watch the tunnel breathe

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?

Same tunnel. Better cockpit.

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

Self-hosted. Free forever.

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

Free

$0 forever · MIT

  • Full feature set
  • Unlimited hostnames
  • Unlimited Compose projects
  • Community support
Clone the repo
Recommended

Pro support

$19/mo

paid via GitHub Sponsors

  • Everything in Community
  • Priority issue triage
  • Email support · 48h SLA
  • Vote on the roadmap
Become a sponsor

Enterprise

Custom

SSO · audit · SLA

  • SSO (OIDC, SAML)
  • Multi-tunnel orchestration
  • Compliance audit log export
  • Dedicated Slack channel
Contact sales

Stop tailing logs. Start running tunnels.

One compose file, one dashboard, every hostname. Open the live demo or clone the repo and try it on your own host.