#web-server #local-server #async-io #url #expose #internet #public

bin+lib actnel

使用公共 URL 暴露您的本地 Web 服务器

4 个版本

0.1.5 2024 年 1 月 25 日
0.1.4 2023 年 12 月 17 日
0.1.2 2023 年 12 月 15 日
0.1.0 2023 年 11 月 30 日

#393HTTP 服务器

Download history 2/week @ 2024-03-09 5/week @ 2024-03-30

每月 59 次下载

MIT 许可证

61KB
1K SLoC

actnel

BuildRelease crate GitHub Docker Registry

actnel 允许您通过公共 URL 暴露本地的 Web 服务器。使用 Rust 编写。完全使用异步 I/O 在 tokio 之上构建。

  1. 安装
  2. 使用说明
  3. 自己托管

安装

Brew (macOS)

brew install agrinman/tap/actnel

Cargo

cargo install actnel

任何地方

或者 在此处下载您目标操作系统的版本actnel/releases

使用

快速入门

actnel --port 8000

上述命令打开隧道并将流量转发到 localhost:8000

更多选项

actnel 0.1.14

USAGE:
    actnel [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

自己托管

  1. 为 musl 目标编译服务器。查看 musl_build.sh 了解如何使用 Docker 无需复杂操作即可完成此操作!
  2. 查看 Dockerfile 了解基于 Alpine 的简单镜像,该镜像运行服务器二进制文件。
  3. 将镜像部署到您想要的位置。

本地测试

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

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

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

查看 actnel_server/src/config.rs 了解配置环境变量。

自己托管时的注意事项

实现不支持多个运行的服务器(即集中式协调)。因此,如果您部署多个服务器实例,则只有在客户端连接到与远程 TCP 流相同的实例时,它才会正常工作。

由我们托管的 版本 是运行在令人惊叹的 fly.io 服务上的正确分布式系统。简而言之,fly.io 通过其 私有网络 功能使这变得非常简单。查看 actnel_server/src/network/mod.rs 了解我们八卦机制的实施细节。

依赖关系

~32–66MB
~1M SLoC