List of ngrok alternatives and other ngrok-like tunneling software and services. Focus on self-hosting.
README.md |
The purpose of this list is to track and compare tunneling solutions. This is primarily targeting toward developers and self-hosters who want to do things like exposing a local webserver via a public address.
The dream
I started this list because I'm looking for a simple tool/service that does the following:
- Allows me to register a domain name and automatically points the records at the server running the tunnels.
- Automatically sets up and manages HTTPS certificates (apex and subdomains) for the domain.
- Provides a client tool that tunnels TCP connects through the server without requiring root on the client.
- Provides a simple interface to allow me to map X domain/subdomain to Y port on Z client, and proxy all connections to that domain.
So far I haven't found a tool that does all of this. In particular, while some of them can do automatic certs through Lets's Encrypt, none of them integrate the domain registration and DNS management.
Open source (at least with a reasonably permissive license)
- frp - Seems to be a pretty comprehensive open alternative to ngrok.
- ngrok 1.0 - Original version of ngrok. No longer developed in favor of the commercial 2.0 version.
- localtunnel - Written in node. Popular suggestion.
- inlets - Open source ngrok alternative. Has pro option.
- sshuttle - Open source project originally from one of the founders of Tailscale. Server doesn't require root; client does. Explicitly designed to avoid TCP-over-TCP issues.
- ZeroTier - Layer 2 overlay network.
- chisel - SSH under the hood, but still uses a custom client binary. Supports auto certs from LetsEncrypt.
- Pritunl - Seems quite comprehensive and complicated. OpenVPN, WireGuard, and IPSec support.
- expose - ngrok alternative written in PHP.
- teleconsole - SSH-based, but uses special client script. Focused on forwarding SSH console sessions, but can also forward ports.
- go-http-tunnel - Uses a single HTTP/2 connection for muxing. Need to manually generate certs for server and clients.
- sish - Open source ngrok/serveo alternative. SSH-based but uses a custom server written in Go. Supports WebSocket tunneling.
- PageKite - Comprehensive open source solution with hosted options.
- Crowbar - Tunnels TCP connections over HTTP GET and POST requests.
- slt - Open source TLS proxy from the creator of ngrok. Supports SNI.
- tunneller - Open source. Written in Go.
- jprq - Another home-grown Golang solution. Proxies over WebSockets.
- docker-tunnel - Simple Docker-based nginx+SSH solution.
- holepunch.io - Has nice hosted solution. Uses SSH for muxing.
- SirTunnel - Minimal, self-hosted, 0-config alternative to ngrok. Similar to sish but leverages Caddy+OpenSSH rather than custom server code.
- tnnlink - SSH-based. Golang. Not maintained.
- StaqLab Tunnel - SSH-based. Client is open source. Server doesn't appear to be.
- Telebit - Written in JS. Code.
Commercial/Closed source
- ngrok 2.0 - Probably the gold standard and most popular. Closed source. Lots of features, including TLS and TCP tunnels. Doesn't require root to run client.
- Tailscale - Built on WireGuard. Easy to use. Doesn't include an HTTPS proxy on the public side, but could be combined with nginx/Caddy/etc. Some code available, but I'm not sure what the implications of the custom license is.
- CloudFlare Argo Tunnel - $5/mo + $0.1/GB. Integrates with Argo smart routing. Client source code is available.
- localhost.run - Simple hosted SSH option. Supports custom domains for a cost.
- Packetriot - Comprehensive alternative to ngrok. HTTP Inspector, Let's Encrypt integration, doesn't require root and Linux repos for apt, yum and dnf. Enterprise licenses and self-hosted option.
- serveo - Mentioned quite a bit the last couple years, but appears to be down currently. Simply uses SSH for tunneling.
Blog posts
- Roll your own Ngrok with Nginx, Letsencrypt, and SSH reverse tunnelling
- Poor man's ngrok with tcp proxy and ssh reverse tunnel
- How I built Ngrok Alternative (jprq)