BuildRelease crate DockerHub crate

wormhole

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.

  1. Install Wormhole
  2. Usage Instructions
  3. Host it yourself

Install

Brew (macOS)

bash brew install agrinman/tap/wormhole

Cargo

bash cargo install wormhole-tunnel

Or Download a release for your target OS here: wormhole/releases

Usage

Quick Start

shell script ⇢ wormhole start -p 8000 The above command opens a wormhole and starts tunneling traffic to localhost:8000.

More Options:

```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 Sets an API authentication key to use for this wormhole -p, --port Sets the port to forward incoming tunnel traffic to on localhost -s, --subdomain Specify a sub-domain for this wormhole ```

Host it yourself

  1. Compile the server for the musl target. See the musl_build.sh for a way to do this trivially with Docker!
  2. See Dockerfile for a simple alpine based image that runs that server binary.
  3. Deploy the image where ever you want.

Testing Locally

```shell script

Run the Server: xpects TCP traffic on 8080 and control websockets on 5000

ALLOWEDHOSTS="localhost" ALLOWUNKNOWNCLIENTS=1 cargo run --bin wormholeserver

Run a local wormhole talking to your local wormhole_server

WORMHOLEHOST="localhost" WORMHOLEPORT=5000 TLS_OFF=1 cargo run --bin wormhole -- start -p 8000

Test it out!

Remember 8080 is our local wormhole_server TCP server

curl -H '.localhost' "http://localhost:8080/some_path?with=somequery" ```

Server Env Vars

Caveats

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.