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

portalgun_lib

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

3个版本

0.2.2 2023年9月22日
0.2.1 2023年5月26日
0.2.0 2023年5月26日

#873HTTP服务器

40 每月下载量
portalgun 中使用

MIT 许可证

12KB
189

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使用以下自定义属性来确定用户是否被允许在特定子域上创建隧道。

{
  "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 以获取配置的环境变量。

依赖项

~1.5–2.4MB
~52K SLoC