List of ngrok alternatives and other ngrok-like tunneling software and services. Focus on self-hosting.
Find a file
2020-09-16 16:52:47 -06:00
README.md Add list of things to look out for 2020-09-16 16:52:47 -06:00

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.

Things to look out for when comparing solutions

  • Underlying multiplexing technology. In particular, if a solution uses TCP-over-TCP (ie any of them that are built on SSH), it'll be subject to rather severe issues.
  • Source code availability. Some of the best options are closed source only.
  • Does it require root to run the client? For example, anything built on WireGuard will likely have great performance (on systems where it's built into the kernel at least), but typically requires elevated permissions to create the tun devices.

The tools

  • 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.
  • localtunnel - Written in node. Popular suggestion.
  • PageKite - Comprehensive open source solution with hosted options.
  • ngrok 1.0 - Original version of ngrok. No longer developed in favor of the commercial 2.0 version.
  • frp - Seems to be a pretty comprehensive open alternative to ngrok.
  • holepunch.io - Has nice hosted solution. Uses SSH for muxing. (code).
  • CloudFlare Argo Tunnel - $5/mo + $0.1/GB. Integrates with Argo smart routing. Client source code is available.
  • Telebit - Written in JS. Open source.
  • slt - Open source TLS proxy from the creator of ngrok. Supports SNI.
  • serveo - Mentioned quite a bit the last couple years, but appears to be down currently. Simply uses SSH for tunneling.
  • Tailscale - Built on WireGuard. Closed source. Easy to use. Doesn't include an HTTPS proxy on the public side, but could be combined with nginx/Caddy/etc.
  • 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.
  • expose - ngrok alternative written in PHP.
  • chisel - Another HTTPS+SSH option.
  • tunneller - Open source. Written in Go.

Discussions of different solutions and tradeoffs