tunnel-me

Reach the services running on your home machines through your own domain — without port forwarding, without a static IP at home, and without opening your network.

You run one small program on a server with a public address, and the same program on each machine that has something worth sharing. Visitors open myapp.tunnels.example.com and reach the service on your desk as if it were hosted there.

Why

Typical reasons homelabbers reach for a tunnel:

Known limits: throughput (see above — deliberately traded for reliability), personal or small-team scale (one server, one database — not a distributed fleet), and a backend that grew organically while the project found its shape, so a few tangles survived. Life is life, live with it 🙂

How it works

flowchart LR
    visitor(["Visitor"]) -->|"myapp.tunnels.example.com"| server["Server<br/>public host, one port"]
    you(["You"]) -->|"admin panel"| server
    server <-->|"always-on tunnel<br/>(agent dials out)"| agent["Agent<br/>your home machine"]
    agent -->|"localhost:3000"| service(["Your service"])

The words used in these docs

Word Meaning
Server The program on the public host: tunnel-me serve
Agent The program next to your service: tunnel-me connect
Tunnel One shared service: a sub-domain (myapp.tunnels.example.com) plus its settings and tokens
Token A secret a machine presents to join a tunnel as an agent
Upstream The local service the agent forwards to — a port, a host:port, or a folder of files
Base domain The domain you gave the server (tunnels.example.com); the panel lives on it

Yes, agent is an unfortunate name for what is really just a small connector program. It stuck early in the project, and renaming it now would break everyone's scripts and muscle memory — so it stays.

What you need

The admin panel

A web interface to manage everything: tunnels and their tokens, per-tunnel sign-in rules (public, your identity provider, or built-in users and groups), visitor accounts, usage charts, and blocked-IP management. Protect the panel itself with a password, an htpasswd file, or your own SSO. A guided tour: Admin panel.

Documentation map

If you want to… Read
Get from zero to a working tunnel Getting started
Understand the concepts This page
See what it is good for Use cases
Configure the server (all flags) Server reference
Configure agents, keep them running Agent guide
Decide who can open the panel and who can visit tunnels Authentication
Serve HTTPS and integrate with proxies Reverse proxy
Find the panel page you need Admin panel
Fix a problem Troubleshooting