logo NodeSeekbeta

用MUSE耗时3小时开发了一个好玩的

我用gpt写了一个开发文档,直接把开发文档扔给MUSE 全自动完成 xhj015

仓库地址:https://github.com/judy-gotv/RustProxyAdmin

image.png
image.png
image.png

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 节点接入

  1. 在后台「服务器节点」页新建节点,拿到该节点的 api_token。
  2. 在节点机器上运行:
./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 秒服务端缓存,高频刷新不打爆数据库

告警配置

  1. 「告警中心 → 通知渠道」新建渠道:
    • Telegram:填 Bot Token 与 Chat ID(支持 socks5 代理)
    • Webhook:填 URL 与签名密钥,投递时带 HMAC-SHA256 签名
    • SMTP:填服务器、账号、收件人
    • 渠道密钥入库前 AES-256-GCM 加密(需配置 [server] secret_key)
  2. 「告警规则」新建规则:选择事件类型(节点离线 / 配额预警 / 到期提醒 / 条目异常)、阈值、冷却时间,绑定渠道。
  3. 「事件历史」查看 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 的报错信息。
12
12

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有72159位seeker

🎉欢迎新用户🎉