wormhole
lets you expose your locally running web server via a public URL.
Written in Rust. Built completely with async-io on top of tokio.
bash
brew install agrinman/tap/wormhole
bash
cargo install wormhole-tunnel
Or Download a release for your target OS here: wormhole/releases
shell script
⇢ wormhole start -p 8000
The above command opens a wormhole and starts tunneling traffic to localhost:8000
.
```shell script ⇢ wormhole start -h wormhole-start 0.1.4 Start the wormhole
USAGE:
wormhole start [OPTIONS] --port
FLAGS: -h, --help Prints help information -V, --version Prints version information
OPTIONS:
-k, --key
The wormhole server both the operates control server (via port 5000, using websockets) and accepts raw TCP streams (via port 8080).
client tunnel
. client tunnel
client tunnel
, the control server writes those bytes into the TCP stream.The wormhole client establishes a websocket connections to the wormhole server to establish the remote tunnel
,
and then:
remote tunnel
remote tunnel
This implementation does not support multiple running servers (i.e. centralized coordination). Therefore, if you deploy multiple instances of the server, it will only work if the client connects to the same instance as the remote TCP stream.
musl_build.sh
for a way to do this trivially with Docker!Dockerfile
for a simple alpine based image that runs that server binary.```shell script
ALLOWEDHOSTS="localhost" ALLOWUNKNOWNCLIENTS=1 cargo run --bin wormholeserver
WORMHOLEHOST="localhost" WORMHOLEPORT=5000 TLS_OFF=1 cargo run --bin wormhole -- start -p 8000
curl -H '
ALLOWED_HOSTS
: which hostname suffixes do we allow forwarding onSECRET_KEY
: an authentication key for restricting access to your wormhole serverALLOW_UNKNOWN_CLIENTS
: a boolean flag, if set, enables unknown (no authentication) clients to use your wormhole. Note that unknown clients are not allowed to chose a subdomain via -s
.