我用gpt写了一个开发文档,直接把开发文档扔给MUSE 全自动完成 
仓库地址:https://github.com/judy-gotv/RustProxyAdmin



RustProxyAdmin v7
多节点代理 / 端口转发 / 隧道管理面板(Rust + actix-web + SQLite),带订阅分发、流量配额、告警中心与 Web 管理后台。
功能一览
- 条目管理:落地代理(socks5 / http / ss)、端口转发(tcp / udp)、中转隧道(relay+tls / ws / wss),支持分组、标签、批量操作
- 多节点:Master + Worker 架构,节点心跳监控、配置自动下发、流量上报
- 订阅分发:为每条订阅生成 token 链接,支持 clash / sing-box / v2ray / ss / base64 等多种输出格式与自定义模板
- 导入订阅:从 URL 导入第三方订阅并解析成条目,导入记录可查
- 流量配额与生命周期:按条目/订阅设置流量配额与到期时间,超限或到期自动停用,支持手动延期/恢复、月度配额重置
- 统计:流量、连接数、在线节点、Top 条目(近 7 天)、节点/条目监控
- 日志:操作日志、访问日志、订阅访问日志,均可检索
- 告警中心:节点离线、配额预警、到期提醒;通知渠道支持 Telegram Bot / Webhook(HMAC 签名)/ SMTP 邮件,失败自动退避重试
- 多用户:admin / viewer 角色,viewer 只读;渠道密钥 AES-256-GCM 加密存储
- 可观测:Prometheus
/metrics端点
快速开始
1. 构建
需要 Rust 1.88+:
cargo build --release
# 二进制位于 ./target/release/rust_proxy_admin
2. 配置
复制 config.toml 按需修改(见下节),或直接用环境变量覆盖:
RPA__SERVER__BIND=127.0.0.1:8080 \
RPA__DB__URL="sqlite://data/data.db" \
RPA__SERVER__SECRET_KEY="换成你自己的随机密钥" \
./target/release/rust_proxy_admin
环境变量规则:
RPA__前缀 +__分隔层级,例如RPA__AUTH__INIT_PASSWORD对应[auth] init_password。
首次启动会自动创建管理员账号([auth] init_username/init_password),上线前务必修改默认密码。
3. 打开后台
浏览器访问 http://127.0.0.1:8080/admin,用管理员账号登录。
配置说明(config.toml)
| 段 | 关键项 | 说明 |
|---|---|---|
[server] |
bind |
监听地址,如 0.0.0.0:8080 |
public_base_url |
对外访问地址,用于生成订阅链接 | |
secret_key |
渠道密钥加密密钥(AES-256-GCM),不设则明文存储密钥 | |
session_hours / cookie_secure |
会话有效期 / 是否仅 HTTPS 传输 Cookie | |
[db] |
url |
SQLite 路径,如 sqlite://data/data.db |
[auth] |
init_username / init_password |
初始管理员(仅首次启动时创建) |
login_max_fail / login_lock_minutes |
登录失败锁定策略 | |
[time] |
timezone_offset_hours |
时区偏移(默认 8,东八区),影响配额重置与到期判断 |
[nodes] |
heartbeat_timeout_secs |
心跳超时秒数,超限判节点离线并可触发告警 |
[subscription] |
rate_limit_per_min |
订阅接口每分钟限流 |
[alerts] |
dispatch_interval_secs / max_attempts |
告警投递间隔 / 最大重试次数 |
[lifecycle] |
tick_secs |
到期/配额检查周期 |
数据库迁移在启动时自动执行(migrations/)。
Worker 节点接入
- 在后台「服务器节点」页新建节点,拿到该节点的 api_token。
- 在节点机器上运行:
./rust_proxy_admin --mode worker \
--master https://admin.example.com \
--token <节点的 api_token>
Worker 会自动向 Master 注册心跳、拉取属于自己的条目配置并启动监听,上报流量与负载。
后台使用指南
| 页面 | 用途 |
|---|---|
| 仪表盘 | 今日/昨日流量、连接数、在线节点、Top 条目、提醒一览 |
| 落地代理 / 端口转发 / 中转隧道 | 条目的增删改查、启用/停用、批量操作、到期与配额设置 |
| 分组与标签 | 条目分组、标签管理 |
| 服务器节点 / 节点监控 / 条目监控 | 节点状态、心跳、流量监控 |
| 操作日志 / 访问日志 / 订阅访问日志 | 审计与排查 |
| 统计 | 流量趋势与汇总 |
| 订阅管理 | 创建订阅、复制订阅链接、查看访问统计 |
| 输出模板 | 自定义订阅输出模板(变量替换/正则处理) |
| 导入订阅 / 导入记录 | 从 URL 导入第三方订阅 |
| 流量配额 | 配额总览 |
| 告警中心 | 通知渠道、告警规则、事件历史 |
| 账户设置 | 修改密码、多用户管理(admin 可增删用户、重置他人密码) |
订阅分发
在「订阅管理」新建订阅并勾选要包含的条目/分组,得到形如:
http://<public_base_url>/sub/<token>?format=clash
format可选:clash/sing-box/v2ray/ss/base64等(可用模板自定义)- 订阅支持到期时间与流量配额;超限/到期自动停用并返回提示
- 响应带
Subscription-Userinfo头(upload/download/total/expire),客户端可显示剩余流量 - 订阅输出有 60 秒服务端缓存,高频刷新不打爆数据库
告警配置
- 「告警中心 → 通知渠道」新建渠道:
- Telegram:填 Bot Token 与 Chat ID(支持 socks5 代理)
- Webhook:填 URL 与签名密钥,投递时带 HMAC-SHA256 签名
- SMTP:填服务器、账号、收件人
- 渠道密钥入库前 AES-256-GCM 加密(需配置
[server] secret_key)
- 「告警规则」新建规则:选择事件类型(节点离线 / 配额预警 / 到期提醒 / 条目异常)、阈值、冷却时间,绑定渠道。
- 「事件历史」查看 pending / sent / failed 状态;投递失败按 60s / 120s / 240s / 480s 退避重试,5 次后标记失败。
多用户与权限
admin:全部权限,可管理用户。viewer:只读,所有写接口返回 403;订阅 token 与渠道密钥对 viewer 不可见。- 在「账户设置」中增删用户、重置密码(重置后该用户所有会话立即失效)。
- 禁止删除自己、禁止把自己降级、禁止删除最后一个 admin。
安全建议
- 修改
[auth] init_password默认密码;生产环境设置[server] cookie_secure = true并使用 HTTPS。 - 设置
[server] secret_key(或RPA__SERVER__SECRET_KEY),使渠道密钥加密存储;更换密钥前先备份数据库。 - 如需公网暴露,建议放在反向代理后并配置
[server] trusted_proxies。 - 忘记密码时可用命令行重置(旧会话全部失效):
./target/release/rust_proxy_admin reset-password --username admin --password '新密码'
常用接口
- 管理后台:
GET /admin - Prometheus 指标(需登录):
GET /metrics - 订阅拉取:
GET /sub/<token>?format=clash
目录结构
src/ # Rust 源码(handlers / services / models / worker …)
templates/ # Tera 模板(管理后台页面)
static/ # CSS / JS
migrations/ # SQLite 迁移(启动自动执行)
config.toml # 默认配置
排错
- 端口被占用:改
[server] bind或RPA__SERVER__BIND。 - Worker 连不上 Master:检查
--master地址与节点api_token是否正确,Master 日志看握手报错。 - 订阅返回空:检查订阅是否过期/超配额,或条目是否被停用。
- 页面数据不加载:打开浏览器开发者工具看 Console 与 Network 的报错信息。
牛逼啊大佬
用的啥模型呀
牛逼的哥
@Anzzz #2 MUSE啊 免费的 不需要花钱 https://muse.ai
@Bartholomew #5 研究研究还没用过 我看可以选GPT模型
我让claude写了一个类似的,Surge for all Windows, Linux, and macOS
@Anzzz #6
@zjhzxhz #7 claude还是很牛逼的,只是玩不起太贵了,第三方中转也不想玩,严重注水~!