English | 简体中文
一个轻量级自建 HTTP 网关,用来通过 Cloudflare Tunnel 把内网 Web 服务发布到公网,并提供简单的 Web 管理界面和基于子域名的路由能力。
Flux Gate 可以帮你:
- 通过 Cloudflare Tunnel 暴露内网 Web 服务
- 用不同子域名转发到不同服务
- 通过 Web 界面管理路由
- 用默认账号密码保护管理后台和转发服务,并支持为单个转发项单独覆盖
- 支持给每个转发项单独设置用户名和密码或无密码
- 支持暂停和启用每个转发项目
- 支持管理面板中英文切换
示例:
https://your-domain.com→ 管理后台https://demo.your-domain.com→ 你的内网服务
Flux Gate 是面向 Web 服务的 HTTP/HTTPS 反向代理,不代理任意 TCP 端口,也不适合 SSH、MySQL、Redis 或原始 socket 服务。单个路由的 Basic Auth 工作在 HTTP 层;如果需要端口级 TCP 转发,请使用专门的 tunnel 或 TCP proxy。
npm installcp config.sample.json config.json{
"port": 8080,
"baseDomain": "your-domain.com",
"auth": {
"username": "admin",
"password_hash": ""
},
"routes": [
{
"subdomain": "demo",
"ip": "192.168.1.100",
"port": "3000",
"description": "Demo service",
"username": "",
"password_hash": "",
"no_password": false,
"disabled": false
}
]
}字段说明:
port:管理后台端口baseDomain:Cloudflare 管理的主域名auth.username:登录用户名auth.password_hash:密码的 SHA256 哈希;留空时首次启动默认admin/adminroutes:子域名转发规则列表routes[].username:可选,单个转发项自己的用户名;不填则使用默认管理账号routes[].password_hash:可选,单个转发项自己的密码哈希;不填则使用默认管理密码routes[].no_password:为true时,这个子网站不需要 Basic Authroutes[].disabled:为true时,这个转发项会保留在配置中,但不再提供访问
生成密码哈希:
node -e "console.log(require('crypto').createHash('sha256').update('你的密码').digest('hex'))"cloudflared tunnel login
cloudflared tunnel create my-tunnel
cloudflared tunnel route dns my-tunnel your-domain.com
cloudflared tunnel route dns my-tunnel "*.your-domain.com"终端 1:
npm start终端 2:
cloudflared tunnel run my-tunnelpm2 start src/server.js --name flux-gate
pm2 start cloudflared --name cloudflare-tunnel -- tunnel run my-tunnel
pm2 save- 用户名:
admin - 密码:
admin
首次部署后请立即修改。
Flux Gate 会把内网服务发布到公网。
请不要暴露这些内容:
- 数据库
- 缺少额外保护的管理后台
- 文件系统或私有面板
- 含敏感数据的服务(除非已做好安全防护)
请使用强密码,只发布真正需要对外访问的服务。
先检查这几个地方:
cloudflared是否已启动- 是否配置了通配符 DNS:
*.your-domain.com - 目标 IP 和端口是否正确
- 目标服务是否真的在运行
打开管理后台,填写子域名 / IP / 端口并保存即可。你也可以为单个转发项设置独立用户名密码、开启无密码访问,或者直接停用该转发项。所有修改都会写入 config.json 并立即生效。
ISC
