List of ngrok alternatives and other ngrok-like tunneling software and services. Focus on self-hosting.

Overview

The purpose of this list is to track and compare tunneling solutions. This is primarily targeted toward self-hosters and developers who want to do things like exposing a local webserver via a public domain name, with automatic HTTPS, even if behind a NAT or other restricted network.

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 HTTP/TCP connections through the server without requiring root on the client.
  • Provides a simple GUI 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.

UPDATE: Since starting this list I found most of the other solutions to be either too complicated or making different tradeoffs than I would want. I have two of my own projects in this space:

  1. SirTunnel is I believe the minimal way of getting auto-HTTPS tunneled through to a private network. It's just a 50-line Python script that leverages Caddy and OpenSSH, but you need to understand how it works to use it. This one is good for developers.

  2. boringproxy is my take on a comprehensive tunnel proxy solution. It's in beta but currently solves almost everything I want except auto DNS management, and that's planned. Once the server is running this is a very easy tool to use, and is targeted at non-developers.

Open source (at least with a reasonably permissive license)

  • frp frp github stars badge - Seems to be a pretty comprehensive open alternative to ngrok.
  • ngrok 1.0 ngrok 1.0 github stars badge - Original version of ngrok. No longer developed in favor of the commercial 2.0 version.
  • localtunnel localtunnel github stars badge - Written in node. Popular suggestion.
  • inlets inlets github stars badge - Open source ngrok alternative. Has pro option.
  • sshuttle sshuttle github stars badge - 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 - zerotier github stars badge Layer 2 overlay network.
  • chisel chisel github stars badge - SSH under the hood, but still uses a custom client binary. Supports auto certs from LetsEncrypt.
  • expose expose github stars badge - ngrok alternative written in PHP.
  • Pritunl pritunl github stars badge - Seems quite comprehensive and complicated. OpenVPN, WireGuard, and IPSec support.
  • teleconsole teleconsole github stars badge - SSH-based, but uses special client script. Focused on forwarding SSH console sessions, but can also forward ports.
  • go-http-tunnel go-http-tunnel github stars badge - Uses a single HTTP/2 connection for muxing. Need to manually generate certs for server and clients.
  • sish sish github stars badge - Open source ngrok/serveo alternative. SSH-based but uses a custom server written in Go. Supports WebSocket tunneling.
  • tunnelto tunnelto github stars badge - Open core (MIT). Written in Rust.
  • wstunnel wstunnel github stars badge - Proxies over WebSockets. Focus on proxying from behind networks that block certain protocols. Written in Haskell with executables provided.
  • PageKite pagekite github stars badge - Comprehensive open source solution with hosted options.
  • Crowbar crowbar github stars badge - Tunnels TCP connections over HTTP GET and POST requests.
  • tunneller tunneller github stars badge - Open source. Written in Go.
  • jprq jprq github stars badge - Proxies over WebSockets. Written in Python.
  • boringproxy boringproxy github stars badge - Designed to be very easy to use. No config files. Clients can be remote-controlled through a simple WebUI and/or REST API on the server.
  • docker-tunnel docker-tunnel github stars badge - Simple Docker-based nginx+SSH solution.
  • pgrok pgrok github stars badge - Fork of ngrok 1.0, with more recent commits.
  • remotemoe remotemoe github stars badge - SSH-based, with custom golang server. Does some cool unique things. Instead of just plain tunnels, it drops you into a basic CLI UI that offers several useful commands interactively, such as adding a custom hostname. Also allows end-to-end encryption for both HTTPS and upstream SSH. Doesn't appear to offer non-e2e HTTPS, ie no auto Let's Encrypt support.
  • SirTunnel SirTunnel github stars badge - Minimal, self-hosted, 0-config alternative to ngrok. Similar to sish but leverages Caddy+OpenSSH rather than custom server code.
  • holepunch.io holepunch github stars badge - Has nice hosted solution. Uses SSH for muxing.
  • StaqLab Tunnel staqlab github stars badge - SSH-based. Client is open source. Server doesn't appear to be.
  • tnnlink tnnlink github stars badge - SSH-based. Golang. Not maintained.
  • Telebit - Written in JS. Code.
  • SSH-J.com - Public SSH Jump & Port Forwarding server. No software, no registration, just an anonymous SSH server for forwarding. Users are encouraged to use it for SSH exposure only, to preserve end-to-end encryption. No public ports, only in-SSH connectivity. Run ssh ssh-j.com and it will display usage information.

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 tailscale github stars badge - Built on WireGuard. Easy to use. Doesn't include an HTTPS proxy on the public side, but could be combined with nginx/Caddy/etc. Client code available with a BSD3 license + separate patents file.
  • Loophole - Offers end-to-end TLS encryption with the client automatically getting certs from Let's Encrypt. QR codes for URL sharing.
  • CloudFlare Argo Tunnel - Free usage available. $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.
  • Lynk - Advertises itself as a cheaper, faster, self-hostable (but not open source) alternative to ngrok. Blog post.
  • Hoppy - WireGuard-based. Provides static IPv4 and IPv6 addresses for your machines, which is a simple and useful level of abstraction. Targeted towards self-hosters and people behind NATs.
  • gw.run - Specifically focusing on securely exposing internal web apps to a group of people; not for publicly facing apps. Share access via email address then allow users to log in with common login providers like Google.
  • SSHReach.me - Paid SSH-based option. Uses a simple python script.
  • KubeSail - Company offering tunneling, dynamic DNS, and other services for self-hosting with Kubernetes.
  • serveo - Mentioned quite a bit the last couple years, but appears to be down currently. Simply uses SSH for tunneling.

Reference

Discussions

Issues
  • Inlets is not open source

    Inlets is not open source

    The open source version of inlets became inlets pro as far as I understand. There are some open source components, but I don't think you can use those without a subscription.

    opened by sagikazarmark 8
  • Add `rathole`

    Add `rathole`

    I developed rathole - A secure, stable and high-performance reverse proxy for NAT traversal, written in Rust. Benchmark shows that it has some advantages on the performance and memory consumption.

    There's not much Rust stuff on the list. I hope rathole could be a good addition :)

    opened by rapiz1 5
  • Remove lynk.sh

    Remove lynk.sh

    lynk.sh now redirects to "Loophole Labs". I poked around a bit and wasn't able to see any mention of a tunneling solution. @Jspsun @ShivanshVij is there any reason you feel I should leave it on the list?

    opened by anderspitman 4
  • Do any of these offer free domain usage like ngrok does?

    Do any of these offer free domain usage like ngrok does?

    I know this list is focused on self-hosting, but do any of the options offer free assigned URLs in case the user doesn't have their own domain registered?

    opened by e-t-l 3
  • cloudflared + free version

    cloudflared + free version

    cloudflared offers a free version for anyone to use, without login or registration at all More details at https://blog.cloudflare.com/a-free-argo-tunnel-for-your-next-project/#how-can-i-use-the-free-version

    opened by ochen1 3
  • Add diode

    Add diode

    Add another tunnel option: diode

    Diode is the end-to-end TLS encryption tunnel use elliptic curve secp256k1, communicate through diode blockchain node. The tunnel works with raspberry pi zero W, checkout the demo video.

    It's an open source project. The source code: https://github.com/diodechain/diode_go_client

    opened by sc0Vu 3
  • boringproxy needs ssh

    boringproxy needs ssh

    After some unsuccessful testing, I noticed boringproxy needs an ssh connection. So it does not work in private firewall protected networks allowing only http traffic

    opened by alfem 2
  • Question: tunnelling suggestion for E2E tests

    Question: tunnelling suggestion for E2E tests

    Hey! Thank you so much for collecting this awesome list!

    I am currently using localtunnel, and it fits my usecase pretty well, although I have doubts about its stability. Can you suggest a service with the following requirements:

    • (if paid) no limits on running tunnels
    • randomly generated subdomains
    • SSL
    • relatively easy way to get generated URL outside of the terminal window with running client

    I went through (most) of the services in this list, and unfortunately, I was not been able to find something that will fit my needs.

    Thanks!

    opened by brbrr 2
  • Tailscale now uses a BSD 3-clause license with a separate PATENTS file

    Tailscale now uses a BSD 3-clause license with a separate PATENTS file

    Please consider updating Tailscale's entry to note the BSD license and PATENTS file:

    https://github.com/tailscale/tailscale/blob/main/LICENSE https://github.com/tailscale/tailscale/blob/main/PATENTS

    opened by troyjfarrell 2
  • Kindly add sshreach.me

    Kindly add sshreach.me

    Hi, I've just seen your list mentioned on Hacker news. I see that you also list commercial tunneling solutions and I wonder if you could add https://sshreach.me to your list? I am a lead developer, we are a small software company from Serbia. We offer zero-configuration, remote controlled tunneling to any Linux, windows or mac based device. Our service is transparent (no third-party applications or binary executables, just a simple python script that runs on your device), private (uses proven ssh technology), cheap and portable.

    opened by dmatic 1
  • Ultrahook

    Ultrahook

    Hi, Another useful one: Ultrahook (runs on Ruby) offers a free fixed-subdomain option, so a good free alternative to ngrok.

    EDIT: It only forwards HTTP POST requests, so not the same as ngrok. But still useful in testing webhooks, as it's name suggests.

    Hope that helps, Andy

    opened by ap1969 1
  • Add Netmaker to the list

    Add Netmaker to the list

    This PR adds Netmaker to the Readme. Netmaker is very similar to Tailscale, ZeroTier, and Nebula. It is self-hosted, has an admin UI, and uses kernel WireGuard on the client side so runs very fast.

    opened by feiszli 0
  • Inlets open source link leads to 404

    Inlets open source link leads to 404

    The "open source" link found on this line:

    https://github.com/anderspitman/awesome-tunneling/blob/710bf1e051dabc42e2be1f08f3f2ab42121af57f/README.md?plain=1#L85

    leads to a non-existing repo. I believe the maintainer removed any official repos of the original open source code-base in early January of this year.

    I did upload a detached fork of the code to my own GitHub account to retain for those that needed it: https://github.com/ssddanbrown/inlets This had the latest original commit history I could find at time of creation.

    I didn't create a PR as wasn't sure if you'd want to link to a non-official repo or if you'd rather just remove the link.

    opened by ssddanbrown 0
  • Consider https://github.com/openziti/ziti

    Consider https://github.com/openziti/ziti

    I think you'd be happy with the project. I'm a dev on it - and i'd be happy to meet with you. I'd be happy to have you on ziti tv too if yoo wanted? :) a weekly livestream we do - generally about ziti but we could do a podcast sorta thing.

    close this if i'm outta line :)

    https://github.com/openziti/ziti

    opened by dovholuknf 1
Owner
Anders Pitman
Anders Pitman
Get Your Localhost Online - Ngrok Alternative

Get Your Localhost Online - Ngrok Alternative

Azimjon Pulatov 405 May 25, 2022
pyngrok is a Python wrapper for ngrok

pyngrok is a Python wrapper for ngrok that manages its own binary, making ngrok available via a convenient Python API.

Alex Laird 294 May 25, 2022
A simple, configurable application and set of services to monitor multiple raspberry pi's on a network.

rpi-info-monitor A simple, configurable application and set of services to monitor multiple raspberry pi's on a network. It can be used in a terminal

Kevin Kirchhoff 11 May 22, 2022
A python shell / chat bot for XMPP and cloud services

XMPP_Shell_Bot A python shell / chat bot for XMPP and cloud services, designed for penetration testers to bypass network filters. To better understand

Abdulkareem Aldeek 1 Jan 9, 2022
A simple hosts picker for Microsoft Services

A simple Python scrip for you to select the fastest IP for Microsoft services.

Konnyaku 340 May 26, 2022
A light-weight open-source project CLI utility for showing services running on ports in a host

Portable Port Scanner (ppscanner) Portable Port Scanner (ppscanner) is a light-weight open-source CLI utility that leverages on nmap to make quick and

null 1 Oct 30, 2021
Python Scripts for Cisco Identity Services Engine (ISE)

A set of Python scripts to configure a freshly installed Cisco Identity Services Engine (ISE) for simple operation; in my case, a basic Cisco Software-Defined Access environment.

Roddie Hasan 7 Mar 30, 2022
Anonymously Reverse shell over Tor Network using Hidden Services without portfortwarding

Anonymously Reverse shell over Tor Network using Hidden Services without portfortwarding Tor ağı ile Dark Web servislerini kullanarak anonim biçimde p

null 68 May 17, 2022
Easy-to-setup bot, ChatOps project for handling telegram chat logging over docker-compose services, being runned as one of them.

Easy-to-setup bot, ChatOps project for handling telegram chat logging over docker-compose services, being runned as one of them.

Rashid 7 Feb 18, 2022
a decompilation of NAP36 the widevine removal software for amz and nf used by p2p groups until it stoped working due to it using expired cdm keys

NAP36 a decompilation of NAP36 the widevine removal software for amz and nf used by p2p groups until it stoped working due to it useing expired cdm ke

null 9 Aug 29, 2021
A TCP Chatroom built with python and TCP/IP sockets, consisting of a server and multiple clients which can connect with the server and chat with each other.

A TCP Chatroom built with python and TCP/IP sockets, consisting of a server and multiple clients which can connect with the server and chat with each other. It also provides an Admin role with features including kicking and baning of users.

null 3 May 22, 2022
A simple software which can use to make a server in local network

home-nas it is simple software which can use to make a server in local network, it has a web site on it which can use by multipale system, i use nginx

R ansh joseph 1 Nov 10, 2021
A simple Encrypted IM chat software Server & client based on Python3.

SecretBox A simple Encrypted IM chat software Server & client based on Python3. Version 1.0 命令行版 安装步骤 Server 运行pip3 install -r requirements 安装依赖。 运行py

h3h3da 4 Dec 31, 2021
Connection package to a raspberry or any other machine using ssh, it simplifies the deployment scripts and monitoring.

Connection package to a raspberry or any other machine using ssh, it simplifies the deployment scripts and monitoring.

Dashstrom 7 Mar 29, 2022
This is a Client-Server-System which can share the screen from the server to client and in the other direction.

Screenshare-Streaming-Python This is a Client-Server-System which can share the screen from the server to client and in the other direction. You have

VFX / Videoeffects Creator 1 Nov 19, 2021
This is a Client-Server-System which can send audio from a microphone from the server to client and in the other direction.

Audio-Streaming-Python This is a Client-Server-System which can send audio from a microphone from the server to client and in the other direction. You

VFX / Videoeffects Creator 1 Nov 19, 2021
Monitoring plugin to check network interfaces with Icinga, Nagios and other compatible monitoring solutions

check_network_interface - Monitor network interfaces This is a monitoring plugin for Icinga, Nagios and other compatible monitoring solutions to check

DinoTools 2 Jan 24, 2022
Distribute a portion of your yield to other addresses 💙

YSHARE Distribute a portion of your yield to other addresses. How does it work Desposit your yToken or tokens into this contract Set the benificiaries

null 11 Nov 24, 2021
Socket programming is a way of connecting two nodes on a network to communicate with each other

Socket Programming in Python Socket programming is a way of connecting two nodes on a network to communicate with each other. One socket(node) listens

Janak raikhola 0 Feb 5, 2022