Tunneller allows you to expose services which are running on
localhost, or on your local network, to the public internet.
This is very useful for testing webhooks, the generation of static-site compilers, and similar things.
NOTE: There is a public end-point I host, you SHOULD NOT rely upon it. It might come and go. It is not secure.
There is a basic GUI present to allow you to view status-codes, and the most recent few requests:
Assuming you have a service running within your local network, perhaps a HTTP server you could access via http://localhost:8080/, you can expose that to the public-internet by running:
$ tunneller client -expose localhost:8080
This will show you initial page of the GUI, letting you know how you can access your resource externally:
As the name implies there is a central-host involved which is in charge of routing/proxying to your local network - in this case that central host is
tunnel.steve.fi - the reason this project exists is not to host a general-purpose end-point, but instead to allow you to host your own.
In short this project is designed to be a self-hosted alternative to software such as
NOTE: There is a public end-point I host, you SHOULD NOT rely upon it. You should configure your own server, and use it.
When a client is launched it creates a connection to a message-bus running on the default remote end-point,
tunnel.steve.fi, it keeps that connection alive waiting for instructions.
When a request comes in for
foo.tunnel.steve.fi the server will submit a command for the client to make the appropriate request by publishing a message upon the topic the client is listening to. (Each client has a name, and listens to its own topic).
Because the client connects directly to a message-bus there is always the risk that malicious actors will inject fake requests, attempting to scan, probe, and otherwise abuse your local network.
There are two ways to install this project from source, which depend on the version of the go version you're using.
NOTE: If you prefer you can find binary releases upon our release page
If you're using
go before 1.11 then the following command should fetch/update
tunneller, and install it upon your system:
$ go get -u github.com/skx/tunneller
If you're using a more recent version of
go (which is highly recommended), you need to clone to a directory which is not present upon your
git clone https://github.com/skx/tunneller cd tunneller go install
If you don't have a golang environment setup you should be able to download a binary for GNU/Linux from our release page.
If you wish to host your own central-server this is how to do it:
tunnel.example.com, pointing to your host.
*.tunnel.example.comto point to the same host.
Of course security is important, so you should ensure that your message-bus is only reachable by clients you trust to expose their services. (i.e. Your VPN and office range(s).)
This repository is configured to run tests upon every commit, and when pull-requests are created/updated. The testing is carried out via .github/run-tests.sh which is used by the github-action-tester action.