GitHub Hot Board

GitHub Hot Board · 저장소 아카이브

agrinman/tunnelto

Expose your local web server to the internet with a public URL. (소개는 저장소 자체 문서에서 왔습니다.)

Rust#async-io#expose#localhost

데이터 기준 October 28agrinman

최고 순위

#383

종합 · Rust 언어별

7.1K

누적 스타

557

포크 수

0

최근 30일 기록 일수

라이선스: MIT최근 push: September 24열린 이슈(PR 포함): 522026-10-25부터 수집. 미확인 = 아직 미수집

프로젝트 문서

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

tunnelto --port 8000

The above command opens a tunnel and forwards traffic to localhost:8000.

More Options:

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

    -p, --port <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 <sub-domain>                   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

# Run the Server: xpects TCP traffic on 8080 and control websockets on 5000
ALLOWED_HOSTS="localhost" cargo run --bin tunnelto_server

# Run a local tunnelto client talking to your local tunnelto_server
CTRL_HOST="localhost" CTRL_PORT=5000 CTRL_TLS_OFF=1 cargo run --bin tunnelto -- -p 8000

# Test it out!
# Remember 8080 is our local tunnelto TCP server
curl -H '<subdomain>.localhost' "http://localhost:8080/some_path?with=somequery"

See tunnelto_server/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.

현재 순위

  • 383

    종합 랭킹 · 역대 최강 · Rust

    7.1K 스타 · 557 fork · 총 스타 수

    종합 · Rust →

최근 30일 추이

최근 30일간 기록이 없습니다.

비슷한 프로젝트 · 공유 토픽

README에 뱃지를 붙여보세요 · agrinman/tunnelto[![README에 뱃지를 붙여보세요](https://git.vaiox.xyz/api/badge/agrinman/tunnelto.svg)](https://git.vaiox.xyz/ko/repo/agrinman/tunnelto)

Badge · 任何仓库都可以挂 —— 未上榜的仓库显示灰章,上完榜会自动点亮。

<a href="https://git.vaiox.xyz/ko/repo/agrinman/tunnelto"><img src="https://git.vaiox.xyz/api/badge/agrinman/tunnelto.svg" alt="README에 뱃지를 붙여보세요" height="20"></a>

← 랭킹으로

GitHub Hot Board타임머신발견联系我们 · Contact