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

app portalgun

通过公开 URL 将本地 Web 服务器暴露到互联网上

5 个版本

0.2.4 2024 年 1 月 29 日
0.2.3 2023 年 9 月 22 日
0.2.2 2023 年 7 月 9 日
0.2.1 2023 年 5 月 26 日
0.2.0 2023 年 5 月 26 日

#298 in HTTP 服务器

MIT 许可证

115KB
1.5K SLoC

portalgun

portalgun 允许您通过公开 URL 暴露本地运行的 Web 服务器。使用 Rust 编写。完全使用 async-io 在 tokio 之上构建。

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

安装

Cargo

cargo install portalgun

无处不在

在此处下载适用于您目标操作系统的版本portalgun/releases

使用

快速入门

portalgun --port 8000

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

更多选项

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

Usage: portalgun [OPTIONS] [COMMAND]

Commands:
  login  Login using OpenID Connect. This will store the authentication token on disk for future use
  help   Print this message or the help of the given subcommand(s)

Options:
  -v, --verbose
          A level of verbosity, and can be used multiple times
  -s, --sub-domain <SUB_DOMAIN>
          Specify a sub-domain for this tunnel
      --host <LOCAL_HOST>
          Sets the HOST (i.e. localhost) to forward incoming tunnel traffic to [default: localhost]
  -t, --use-tls
          Sets the protocol for local forwarding (i.e. https://127.0.0.1) to forward incoming tunnel traffic to
      --port <PORT>
          Sets the port to forward incoming tunnel traffic to on the target host [default: 8000]
      --dashboard-port <DASHBOARD_PORT>
          Sets the address of the local introspection dashboard
  -h, --help
          Print help

自己托管

  1. 请参阅 Dockerfile 了解运行该服务器二进制文件的简单 alpine 基础镜像。
  2. 将镜像部署到您想要的位置。

OIDC 提供者设置

门户枪使用以下自定义属性来确定用户是否允许在特定子域上创建门户。

{
  "portalgun": [
    ".*",
    "or-any-subdomain-matching-regexp-in-here
  ]
}

管理员必须适当地配置其身份提供者。

本地测试

# Run the Server: xpects TCP traffic on 8080 and control websockets on 5000
ALLOWED_HOSTS='localhost' TUNNEL_HOST='localhost' OIDC_DISCOVERY='https://example.com/.well-known/openid-configuration' OIDC_CLIENT_ID='openid-client-id-here' OIDC_SCOPES='openid,portalgun' cargo run --bin portalgun_moon

# Logging in using OIDC
cargo run --bin portalgun login --control-server ws://127.0.0.1:5000  

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

请参阅 portalgun_moon/src/config.rs 了解配置的环境变量。

依赖项

~30–48MB
~848K SLoC