daocloud/lunnel — explained in plain English
Analysis updated 2026-07-17 · repo last pushed 2017-05-25
Demo a local web app to clients via a public URL without deploying it.
Test webhook callbacks from third-party services against your local server.
Expose a local Docker daemon API so you can manage it from a remote browser.
Make a local multiplayer game reachable by friends over the internet.
| daocloud/lunnel | aasheeshlikepanner/vase | alexzielenski/controller-runtime | |
|---|---|---|---|
| Stars | — | 0 | — |
| Language | Go | Go | Go |
| Last pushed | 2017-05-25 | — | 2022-04-20 |
| Maintenance | Dormant | — | Dormant |
| Setup difficulty | moderate | moderate | hard |
| Complexity | 3/5 | 4/5 | 4/5 |
| Audience | developer | developer | developer |
Figures from each repo's GitHub metadata at analysis time.
Requires a server machine with a public IP address plus a local client, and the YAML config must use spaces instead of tabs.
Lunnel is a tool that lets you expose a service running on your local computer to the public internet, even if your computer is behind a router or firewall that normally blocks outside access. It works as a "reverse proxy," meaning it creates a secure tunnel from your local machine to a public-facing server, so anyone on the internet can reach your local service through that server's address. The setup involves two pieces: a server program you run on a machine with a public IP address, and a client program you run on your local machine. You configure both with a file that tells them how to connect and what traffic to forward. The client reaches out to the server, establishes an encrypted connection, and then funnels traffic through that tunnel. The project supports several protocols including HTTP, HTTPS, TCP, UDP, and Unix sockets, and it can encrypt traffic with either AES or TLS. It also uses a connection pool and multiplexing (similar to HTTP/2) so that a single connection can handle many concurrent requests without wasting resources. A practical example from the documentation: you can run the client locally to expose your Docker daemon's HTTP API, then access it from a browser via a public domain. Another example shows proxying a small web game running in a local container so it's reachable from outside. This makes it useful for developers who want to demo a local app, test webhooks, or manage remote services without setting up complex networking infrastructure. One notable design choice is the automatic switching between TCP and KCP for tunnel transport, which is meant to keep connections stable under different network conditions. The README also mentions planned improvements like a dashboard interface and horizontal server scaling, but those aren't available yet. Configuration is straightforward YAML, though the docs note that tabs aren't allowed in the config file and must be replaced with spaces.
Lunnel exposes local services to the public internet through a secure reverse-proxy tunnel. Run a server on a public machine and a client on your local computer to let anyone reach your local apps online.
Mainly Go. The stack also includes Go, YAML, TLS.
Dormant — no commits in 2+ years (last push 2017-05-25).
The license terms are not specified in the available documentation, so check the repository for details before using it.
Setup difficulty is rated moderate, with roughly 30min to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Don't trust strangers blindly. Verify against the repo.