Blog

Is ngrok Safe for Your Home Server? An Honest Risk Assessment

Akshay Sarode
Direct answer

ngrok is reasonably safe — they're a real company with real security practices. But ngrok sees your traffic in transit (TLS terminated at their edge unless you use their TCP tunnels). For dev work: fine. For exposing a home server permanently with sensitive data: a self-hosted tunnel (Cloudflare Tunnel, your own bore relay, Celistra's tunnel) keeps the traffic on your infrastructure end-to-end.

"Is ngrok safe for home server remote access" is a common question. The right answer depends on what "safe" means to you and what you're exposing. Let's break it down honestly.

What ngrok actually sees

For HTTP/HTTPS tunnels (ngrok's default), the flow is:

  1. Client visits https://abc-123.ngrok.io
  2. TLS terminated at ngrok's edge (on their cert)
  3. ngrok proxies the plaintext request through your tunnel back to your machine
  4. Your service responds; ngrok wraps it in TLS to the client

This means ngrok's edge sees your request bodies, headers, cookies — everything. They have the technical ability to log them. (They claim not to and they're a serious company; "trust them" is the right framing, not "they can't see it.")

For TCP tunnels, ngrok is a TCP relay — payload is opaque to them if your protocol is encrypted. But TCP tunnels are a paid feature.

The actual threat model

ThreatngrokSelf-host (Cloudflare Tunnel / bore / Celistra)
Random scanners hitting your home IPMitigated (IP not exposed)Mitigated
Vendor data breach exposing logsPossibleN/A (your infra)
Vendor employee with access to relayPossible (insider risk)N/A
Vendor compelled to disclose to govPossibleYou're disclosed to instead
Random DDoSngrok's network absorbs itCloudflare Tunnel handles; bore on your VPS doesn't
Your tunnel relay goes downYou're offline (single SaaS dep)Run your own; you control uptime
Free-tier random URL changesYes, every restartStable URLs available

When ngrok is fine

When ngrok is the wrong tool

The alternatives

Cloudflare Tunnel

Free, mature, well-trusted. Like ngrok, terminates TLS at Cloudflare's edge. The same trust model — Cloudflare can see plaintext on their edge. They have a strong security reputation. Distinctly better than ngrok in: stable URLs free, custom domain free, integrated WAF + DDoS, free tier is real.

Bore (or your own relay)

Bore is a tiny Rust reverse-tunnel binary. Run your own relay on a $5/mo VPS. nginx terminates TLS on YOUR cert; the relay is yours; logs stop where you stop them. Most paranoid option that's still ergonomic. Detailed.

Tailscale

Different shape — peer-to-peer mesh, not reverse tunnel. Your devices form a private network. Anyone inside the mesh reaches each other; outside the mesh, the service isn't visible. Right when "private remote access" is the actual need (vs "public URL").

Celistra's tunnel

Embeds bore inside the Celistra daemon, with relay at mail.ujex.dev:7000. Firebase-gated admission token rotated via Firestore. nginx with Let's Encrypt + CAA pinning terminates TLS. Same trust model as Cloudflare Tunnel (we see plaintext on the relay) but it's our infrastructure under our policy. For Celistra users, it's the path of least friction; for non-Celistra users, Cloudflare Tunnel is the better recommendation.

The "is it safe" matrix

Pick by what you actually need:

NeedRight tool
30-second dev tunnel, free, OK with random URLngrok or localhost.run or localtunnel
Stable URL on my domain, free, mainstream trustCloudflare Tunnel
Don't want any third party to see plaintextRun your own bore relay (or cloudflared with TLS-passthrough mode)
Just want my devices to talk to each other privatelyTailscale
Stable + auth-baked-in for AI agentsUjex Ingress

The bottom line

ngrok isn't unsafe in the "they're going to steal your data" sense. They're a legitimate company with legitimate security practices. The honest concern is: any third-party relay sees your traffic in plaintext on their edge. Whether that's acceptable is a function of what you're exposing, not a function of which vendor you pick.

For most home servers, Cloudflare Tunnel is a strict upgrade — free, stable URLs, custom domain, integrated DDoS, mature. For the cases where even that's too much trust, run your own bore relay; the architecture is in this deep-dive.

FAQ

Does ngrok log my traffic?

ngrok says they don't log payload by default but can be configured to. The point is they have the ability — TLS terminates at their edge.

Is Cloudflare Tunnel really safer than ngrok?

Same architecture (third party terminates TLS), better track record at scale, free tier is generous. Mostly it's that Cloudflare's free plan is enough for permanent exposure where ngrok's isn't.

Can I run ngrok with TLS passthrough so they don't see plaintext?

Their TCP tunnels are passthrough — payload opaque if it's already TLS. HTTP/HTTPS tunnels are not. TCP tunnels are paid.

What's the cheapest 'fully self-hosted' option?

$5/month VPS (Hetzner, DigitalOcean, Vultr) running bore + nginx + Let's Encrypt. The traffic terminates on your hardware end-to-end.