Need help with wormhole?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

agrinman
1.2K Stars 49 Forks MIT License 107 Commits 9 Opened issues

Description

Expose your local web server to the internet with a public URL.

Services available

!
?

Need anything else?

Contributors list

# 77,059
Swift
iOS
Rust
webauth...
104 commits
# 110,679
Rust
bip32
kafka
gRPC
1 commit
# 47,737
cloudwa...
kinesis
s3
lambda
1 commit

BuildRelease crate GitHub Docker Registry crate

tunnelto

tunnelto
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
  2. Usage Instructions
  3. Host it yourself

Install

Brew (macOS)

brew install agrinman/tap/tunnelto

Cargo

cargo install tunnelto

Everywhere

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

Usage

Quick Start

shell script
tunnelto --port 8000
The above command opens a tunnel and forwards traffic to
localhost:8000
.

More Options:

```shell script tunnelto 0.1.14

USAGE: tunnelto [FLAGS] [OPTIONS] [SUBCOMMAND]

FLAGS: -h, --help Prints help information -V, --version Prints version information -v, --verbose A level of verbosity, and can be used multiple times

OPTIONS: --dashboard-address Sets the address of the local introspection dashboard -k, --key Sets an API authentication key to use for this tunnel --host Sets the HOST (i.e. localhost) to forward incoming tunnel traffic to [default: localhost]

-p, --port 
        Sets the port to forward incoming tunnel traffic to on the target host

--scheme <scheme>
    Sets the SCHEME (i.e. http or https) to forward incoming tunnel traffic to [default: http]

-s, --subdomain Specify a sub-domain for this tunnel

SUBCOMMANDS: help Prints this message or the help of the given subcommand(s) set-auth Store the API Authentication key ```

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" cargo run --bin tunneltoserver

Run a local tunnelto client talking to your local tunnelto_server

CTRLHOST="localhost" CTRLPORT=5000 CTRLTLSOFF=1 cargo run --bin tunnelto -- -p 8000

Test it out!

Remember 8080 is our local tunnelto TCP server

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

See
tunneltoserver/src/config.rs` for the environment variables for configuration.

Caveats for hosting it yourself

The 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.

The version hosted by us is a proper distributed system running on the the fabulous fly.io service. In short, fly.io makes this super easy with their Private Networking feature. See

tunnelto_server/src/network/mod.rs
for the implementation details of our gossip mechanism.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.