统一的多协议代理管理平台 - 一键部署和管理多种代理协议
📢 v1.6.3 已发布 - 优化 ShadowTLS 分享链接,兼容 SS + shadow-tls 插件格式,并保留 v1.6.2 的客户端配置导出和端口管理功能。详见 发布说明
🛡️ 生产加固计划 - 查看 生产加固路线图 了解更多改进
UnifiedProxy(原 MieruPilot)是一个统一的多协议代理管理平台,采用 Manager + Agent 架构设计。一台控制机统一管理所有节点服务器,支持部署和管理多种主流代理协议。
- ✅ Mieru/Mita - 高性能的轻量级代理协议
- ✅ NaïveProxy - 基于 Chromium 网络栈的高伪装代理
- ✅ AnyTLS - 通用 TLS 代理协议
- ✅ ShadowTLS v3 - 将流量伪装成 TLS 的代理协议
详细信息、联通性测试、客户端 JSON 导出及 AnyTLS / NaïveProxy 传输参数见 客户端配置指南。
| 协议 | 监听端口 | 证书和依赖 | 客户端 |
|---|---|---|---|
| Mieru | 1025-65535,TCP/UDP | Linux systemd、dpkg/rpm | mieru 或支持该协议的 mihomo |
| NaïveProxy | 1-65535,TCP;自动 ACME 使用 443 | 域名正确解析;自动证书验证可达;或上传域名匹配的有效证书;自动安装仅支持 amd64 | NaïveProxy 客户端;不包含在 mihomo 订阅中 |
| AnyTLS | 1-65535,TCP | 当前 anytls-go 服务端启动时生成临时自签名证书 | 分享链接和订阅显式跳过证书校验,不具备 CA 证书身份验证;仅使用可信节点 |
| ShadowTLS v3 | 1-65535,TCP | TLS 握手站点;后端地址留空时由面板分配本机端口与密码,Agent 自动安装并运行 shadowsocks-rust(Agent 一键安装支持 amd64/arm64,需能访问 GitHub);也可填写自有后端,面板不会改动 | 订阅自动带上后端的 SS 密码和加密方式;隧道不转发 UDP |
配置同步仅在内容变化或服务停止时重启实例;密码、手动证书和后端地址变化会触发重新应用。部署失败会保留任务自动重试。升级后请同时替换 Manager 和 Agent,再在面板重试同步,并刷新客户端订阅。自动部署的 ShadowTLS 后端需要新版 Agent,旧版 Agent 不会启动后端,ShadowTLS 将无法转发流量。
- 流量统计、月度限额及面板出站规则目前仅支持 Mieru。NaïveProxy、AnyTLS、ShadowTLS 不提供这些能力;API 拒绝其正数限额和显式指向这些端口的启用出站规则。“全部 Mieru 端口”也不影响其他协议。
- 节点检测仅检查已启用端口的连通性和 NaïveProxy 证书,不把 SSH/80 端口当作前提,也不验证代理认证或目标转发。Mieru UDP 标记为“待协议客户端验证”,不会因 TCP 不通误报失败。服务状态来自最近的 Agent 上报。
- Agent 只认可 systemd 实际使用的固定路径;NaïveProxy 还检查
http.handlers.forward_proxy模块,普通 Caddy 或其他 PATH 路径不算已安装。 - AnyTLS 使用通配监听。ShadowTLS 仅在 IPv6 可用且 Linux
net.ipv6.bindv6only=0时使用[::],其他情况下保留 IPv4;IPv6 公网连通性仍需现场验收。 - ShadowTLS 托管后端的 TCP 端口在新增、修改和备份恢复时校验冲突;相同数字的 Mieru UDP 监听不占用该 TCP 端口。独立
shadowtls://链接不含后端 SS 凭据,建议使用完整 mihomo 订阅。 - NaïveProxy 和 shadowsocks-rust 的
tar.xz归档需要tar及 xz 解压能力(Debian/Ubuntu:apt install tar xz-utils;RPM 系:yum install tar xz)。Agent 一键安装整体只支持 amd64/arm64;NaïveProxy 自动下载只支持 amd64。其他架构手动编译需遵循固定 forwardproxy 版本的CADDY_VERSION和 Caddy 补丁,不能直接使用普通 Caddy 加插件的构建命令。 - 本地测试、上游认证链路与交叉编译通过不等于 VPS 已验收;Linux systemd 生命周期、ACME 签发/续期及各协议公网客户端请求需在目标节点验证。修复记录见 部署复核与修复记录。
- 一个端口号 → 选择协议类型,自动生成配置、分享链接、Clash 订阅
- 一条命令 → Agent 自动安装、配置、启停对应代理服务
- 一个面板 → 集中控制所有主机的所有协议,告别逐台 SSH
- 将本项目的节点配置备份到已有 WebDAV 云盘
- 系统设置中保存云盘地址与凭据,支持连接测试、手动备份、历史列表与恢复
- 上传后下载校验;恢复前创建本地备份,并保留当前管理员和管理地址
- 详见 WebDAV 云备份指南
- Mieru:原生 UDP 协议,适合游戏和视频
- NaïveProxy:伪装为 HTTPS,基于 Chrome 网络栈
- AnyTLS:通用 TLS 代理
- ShadowTLS v3:Shadowsocks over TLS 隧道
- 一个节点支持多种代理类型同时运行
- Clash / mihomo 订阅包含可表示的代理类型;NaïveProxy 使用专用客户端,ShadowTLS 需要后端凭据
- 详见 多协议使用指南
- 智能验证:自动验证证书格式、有效期和私钥匹配
- 多格式支持:支持 RSA、EC、PKCS8 等密钥格式
- 详细信息:显示域名、颁发者、到期时间、剩余天数
- 安全保护:自动设置正确的文件权限,保护私钥安全
- 详见 增强功能文档
- 网络测试:检测已启用的实际监听端口,不依赖 SSH/80
- 端口测试:TCP 端口检查连通性;Mieru UDP 明确标记待客户端验证
- 详细报告:测试结果包含延迟、状态和建议
- 故障排查:快速定位网络、端口、服务问题
- 详见 节点测试指南
- 完整导出:查看节点所有配置信息
- 安全脱敏:密码和密钥自动隐藏,需要时可显示
- 证书信息:包含 TLS 证书详情和到期提醒
- 便捷操作:支持 JSON 导出和一键复制
- 详见 配置查看文档
- 添加节点后复制一条命令到目标服务器执行
- Agent 自动下载并安装所需的代理程序
- 无需手动配置,开箱即用
- 面板仅需填写端口号和代理类型
- 账号密码与分享链接自动生成
- 配置实时下发到节点
- 流量统计:实时监控 Mieru 端口的流量使用
- 流量限制:设置 Mieru 端口的月度流量配额
- 带宽控制:预留配置项,当前 mita 不支持可靠的服务端速率限制,暂不生效
- 自动重置:流量按月自动归零
- 自动检测 GitHub Releases 新版本
- 一键更新 Manager 和 Agent
- 支持版本回滚
- 单个 Web 面板管理所有主机
- 实时状态监控
- 批量操作支持
- 删除节点自动清理远程 Agent、mita 实例与账号
- Manager 和 Agent 均为 Go 单二进制
- 无需 Docker、无需外部数据库
- 数据持久化到 JSON 文件
mierus://简单分享链接- Clash / mihomo 订阅支持
- 单节点 YAML 导出
- 自动获取公网 IP
- 系统和架构自动识别
mita版本与运行状态实时上报
┌─────────────────────────────┐
浏览器 ──────────▶│ Manager(控制机,Web 面板) │
└──────────────┬──────────────┘
HTTP 长轮询 │ 下发配置 / 上报状态
┌───────────────────────┼───────────────────────┐
▼ ▼ ▼
┌────────────┐ ┌────────────┐ ┌────────────┐
│ Agent A │ │ Agent B │ │ Agent C │
│ mita │ │ mita │ │ mita │
└────────────┘ └────────────┘ └────────────┘
| 组件 | 职责 | 位置 |
|---|---|---|
| Manager | Web 控制台、配置管理、任务下发 | 控制机 |
| Agent | 自动安装 mita、执行同步任务、上报状态 | 节点服务器 |
| mita | mieru 服务端,实际处理代理流量 | 节点服务器 |
使用一键脚本完成 Manager 的安装与管理:
bash <(curl -fsSL https://github.com/HlONGlin/UnifiedProxy/raw/main/one-click.sh)脚本功能:
1. 安装或更新 Manager
2. 启动 Manager
3. 停止 Manager
4. 彻底卸载并清除全部数据
5. 重置管理员账号(保留节点数据)
安装步骤:
- 运行一键脚本,选择
1. 安装或更新 Manager - 脚本会自动:
- 从 GitHub 最新 Release 下载 Manager 和 Agent
- 安装到
/opt/merit - 创建
systemd服务 - 提示设置管理员账号和密码
- 安装完成后,脚本会输出带随机安全后缀的管理地址:
http://服务器IP:3000/panel/随机字符串 - 打开管理地址,使用刚设置的账号登录
如需固定版本,可在运行脚本前设置
MERIT_RELEASE_BASE,例如MERIT_RELEASE_BASE=https://github.com/HlONGlin/UnifiedProxy/releases/download/v1.1.0。
如果不使用一键脚本,也可以手动安装:
前往 Releases 下载对应平台的二进制文件。
chmod +x merit-manager-linux-amd64
./merit-manager-linux-amd64 --addr :3000首次启动会提示设置管理员账号,按提示操作即可。
打开浏览器访问:http://服务器IP:3000/panel/随机后缀
管理地址会在首次启动时输出,请妥善保存。
控制机(Manager):
- 操作系统:Linux/Windows/macOS
- 架构:amd64 或 arm64
- 内存:最低 512MB,推荐 1GB+
节点服务器(Agent):
- 操作系统:Linux with systemd
- 包管理器:dpkg (Debian/Ubuntu) 或 rpm (CentOS/RedHat/Rocky)
- 架构:amd64 或 arm64
- 内存:最低 256MB,推荐 512MB+
如果提示没有 curl 或 wget:
# Ubuntu / Debian
apt-get install -y curl wget
# Alpine
apk add curl wget
# Fedora
dnf install -y curl wget
# CentOS / Rocky / AlmaLinux / Oracle Linux / Amazon Linux
yum install -y curl wget打开安装完成后输出的管理地址,使用管理员账号登录。
- 点击「添加节点」
- 填写节点名称(如
hk-1) - 复制页面上的部署命令
在目标服务器以 root 权限执行部署命令:
curl -fsSL http://你的IP:3000/install.sh | sudo bash -s -- --key <API_KEY>Agent 会自动:
- 下载并安装到
/opt/merit - 创建 systemd 服务并开机自启
- 连接 Manager 并上报状态
- 节点上线后,点击节点进入详情页
- 填写端口号(Mieru 为 1025-65535;其他协议为 1-65535)
- 选择协议(TCP/UDP)
- 点击「一键生成」
Manager 会自动:
- 生成随机用户名和密码
- 下发配置到 Agent
- Agent 配置并启动 mita 服务
- 生成分享链接和 Clash 订阅
进入「系统设置」点击「检查更新」。发现新版本后,可以点击「在线一键更新」,Manager 会下载当前平台的 Release 二进制,校验 SHA256SUMS 后自动替换并重启服务。
节点 Agent 也应使用详情页中最新的部署命令重新执行升级。部署命令现在始终从最新 Release 下载 Agent;旧 Agent 不认识新任务时,升级后原任务会自动重试。
在线更新要求 Manager 运行在 Linux systemd 服务中;Windows、macOS 或手动前台运行时,请下载 Release 资产后手动替换程序。
对于 NaïveProxy、AnyTLS 等需要 TLS 证书的协议:
- 在端口配置页面点击「上传证书」
- 选择证书文件(.crt/.pem)和私钥文件(.key/.pem)
- 系统自动验证证书和私钥匹配性
- 显示证书详细信息(域名、有效期、剩余天数等)
快速测试:
# 生成自签名测试证书(仅测试用)
openssl req -x509 -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 \
-keyout key.pem -out cert.pem -days 365 -nodes \
-subj "/CN=your-domain.com"详见:证书管理文档
在节点详情页可以测试节点可用性:
- 快速测试:检查网络连通和端口可达(~5秒)
- 完整测试:额外测试代理服务可用性(~15秒)
测试报告包括:
- 网络连通性(Ping 延迟)
- 各端口可达性(TCP 连接)
- 问题诊断和修复建议
详见:节点测试文档
在节点详情页可以查看完整配置信息:
- 节点基本信息(IP、状态等)
- 端口配置(协议类型、证书信息等)
- 用户配置(默认脱敏,可选择显示完整密码)
- 出站代理配置
用途:
- 配置备份和迁移
- 故障排查
- 配置审计
详见:配置查看文档
在端口设置中可以配置:
- 月度流量限制:设置每月流量配额(如 100GB)
- 流量统计:通过 mita 实时指标查看端口使用量和剩余流量
- 手动重置:提前重置流量计数
达到月度限额后端口会自动停用;重置流量或调整限额后可以恢复。mita 当前不提供可靠的服务端速率限制,因此 BandwidthLimit 仅保留 API 兼容性,暂不生效。
cmd/manager Manager 入口(Web 面板 + Agent API)
cmd/agent Agent 入口(部署在节点主机)
internal/manager HTTP 服务、鉴权、节点/端口 API、任务队列
internal/agent 自动安装 mita、轮询任务、上报状态
internal/mieru mita 服务端配置、分享链接、Clash 订阅生成
internal/store JSON 文件持久化
internal/updater 自动更新检查和下载
internal/traffic 流量统计和控制
internal/manager/web 内嵌 Web 面板
- Go 1.24+
- 前端资源已内嵌在 Go binary 中
# Linux / macOS
./build.sh
# Windows PowerShell
./build.ps1
# 或使用 Makefile
make产物位于 dist/ 目录:
dist/merit-manager-linux-amd64
dist/merit-manager-windows-amd64.exe
dist/merit-agent-linux-amd64
dist/merit-agent-linux-arm64
⚠️ Manager 会通过/download/agent分发 Agent 二进制给节点,请保持dist/与 Manager 同目录(或用--agent-dir指定)。
前端资源位于:
internal/manager/web/index.htmlinternal/manager/web/assets/style.cssinternal/manager/web/assets/app.js
修改后需要重新构建 Manager。
检查前端代码:
node scripts/check-frontend.cjs./dist/merit-manager-linux-amd64 \
--addr :3000 \
--agent-dir dist \
--data data/merit.json| 参数 | 默认值 | 说明 |
|---|---|---|
--addr |
:3000 |
面板与 Agent 通信监听地址 |
--data |
data/merit.json |
数据文件路径,备份它即可备份全部配置 |
--agent-dir |
dist |
存放 agent 二进制的目录 |
--public-url |
空 | 对外访问地址,如 http://1.2.3.4:3000;留空自动用请求 Host |
--panel-path |
自动生成 | 管理面板随机访问路径,例如 /panel/abc123;重启后保持不变 |
--reset-admin |
false | 交互式重置管理员账号 |
--version |
false | 显示版本信息 |
| 参数 | 默认值 | 说明 |
|---|---|---|
--manager |
必填 | Manager 地址 |
--key |
必填 | 节点 API Key |
--mita-version |
3.38.0 |
自动安装的 mita 版本 |
--mita-mirror |
空 | GitHub 加速前缀,如 https://ghproxy.net |
--interval |
5s |
出错后的重试间隔 |
Agent 需要 root 权限(用于安装软件包和管理 mita 服务)。
如果忘记账号或密码:
# 方法 1:使用一键脚本
# 选择「5. 重置管理员账号」
# 方法 2:手动执行
systemctl stop merit-manager
/opt/merit/merit-manager --data /var/lib/merit/merit.json --reset-admin
systemctl start merit-manager重置时节点数据和随机管理地址不会丢失。
在一键管理工具中选择 4,并输入 DELETE 确认。该操作会删除:
- Manager 程序
- 管理员账号
- 节点数据
- 随机管理地址
- 所有配置文件
清除后重新选择 1 即可重新安装。
每个端口都有独立的 mierus:// 链接:
mierus://用户名:密码@服务器?port=端口&protocol=TCP
复制链接后在 mieru 客户端中导入。
在「系统设置」页面获取公开订阅地址:
http://你的服务器:3000/panel/随机字符/sub?token=订阅令牌
将该地址填入 Clash Verge / mihomo 等客户端。
在节点详情页可以下载该节点的 clash.yaml 配置文件。
当前仅 Mieru 支持真实流量统计与月度配额;其他协议显示“暂不支持流量统计”,不提供限额设置。
- 进入节点详情页
- 点击端口的「设置」按钮
- 配置流量参数:
- 月度流量限制:单位 GB,0 表示不限制
- 带宽限制:当前 mita 不支持可靠的服务端速率限制,暂不生效
端口卡片会实时显示:
- 已用流量 / 总限额
- 使用百分比
- 剩余流量
- 距离重置时间
- 自动按月重置(每月 1 号)
- 可手动提前重置
- 超出限制后端口自动停用
Agent 定期上报 Mieru 端口的流量使用情况,Manager 汇总并持久化。
在「系统设置」页面点击「检查更新」按钮,系统会自动:
- 从 GitHub Releases 获取最新版本
- 对比当前版本号
- 显示更新日志和下载链接
# 使用一键脚本
bash <(curl -fsSL https://github.com/HlONGlin/UnifiedProxy/raw/main/one-click.sh)
# 选择「1. 安装或更新 Manager」脚本会在替换前自动备份数据到 /var/lib/merit/backups/。
重新执行节点的部署命令,Agent 会自动更新并重启服务。
- Manager 面板建议放在 HTTPS 反向代理之后
- 或仅在内网/白名单环境访问
- 使用强管理员密码
- 数据文件包含节点密钥与账号
- 文件权限已设为
0600 - 定期备份
merit.json
- Agent 以 root 运行,请确保 Manager 地址可信
- 定期更新系统和依赖
- 启用防火墙规则
系统设置提供「导出备份」和「选择备份文件」恢复功能:
- 备份限制 16MB
- 包含节点账号及出站凭据
- 恢复前会保存当前配置为
merit.json.before-restore-*.json(权限 600) - 恢复保留当前管理员和管理路径,替换节点与订阅配置
A: 部署命令未执行成功,或 Agent 连不上 Manager。
解决方案:
- 检查安全组/防火墙是否放通 Manager 端口
- 确认部署命令中的 Manager 地址正确
- 在节点服务器上检查 Agent 日志:
journalctl -u merit-agent -f
A: 该节点还没有启用端口。
解决方案:
- 进入节点详情页
- 添加端口并点击「一键生成」
- 等待 Agent 同步并启动 mita
A: 多为 GitHub 访问受限导致。
解决方案:
- 在 Agent 部署命令中追加镜像参数:
--mita-mirror https://ghproxy.net
- 或编辑 systemd 服务的
ExecStart添加该参数 - 重启 Agent 服务
A: 节点端要求:
- Linux with systemd
- dpkg (Debian/Ubuntu) 或 rpm (CentOS/RedHat/Rocky)
- amd64 或 arm64 架构
Manager 支持 Linux/Windows/macOS。
A: 可能的原因:
- Agent 版本过旧,需要更新
- mita 服务重启导致计数器重置
- 时间同步问题
建议定期更新 Agent 到最新版本。
A:
- 在旧服务器备份
merit.json - 在新服务器安装 Manager
- 停止 Manager 服务
- 替换
merit.json文件 - 启动 Manager 服务
- 确保 Agent 能访问新的 Manager 地址
| 特性 | Zelay | MieruPilot |
|---|---|---|
| 目标 | Realm 转发 | 生成/管理 mieru 节点 |
| 操作 | 配置监听/远程地址 | 只填端口,其余自动生成 |
| 内核 | Realm | mita(見える/mieru) |
| 流量管理 | 实时统计、月度限额、超额自动停用、手动/自动重置 | 服务端带宽控制 |
| 自动更新 | ❌ | ✅ |
| 多协议 | TCP/UDP 转发 | TCP/UDP mieru 节点 |
- Manager 为每个节点保存期望配置(启用的端口 + 自动生成的用户)
- 端口变化时,Manager 把最新完整配置放入该节点的任务队列
- Agent 长轮询拉取任务,写临时 JSON 后执行
mita replace config - Agent 执行
mita stop && mita start生效 - Agent 定期上报状态(在线、mita 是否运行、版本、公网 IP、流量统计)
⚠️ Manager 是该节点 mita 配置的唯一来源。请勿手动在同一 mita 上添加端口/用户,否则会被下一次同步覆盖。
- 待执行同步任务保存于
merit.json的tasks字段 - Manager 重启时恢复,成功确认后从磁盘队列删除
- 一次性测试任务不跨重启恢复
- 每端口实例只在配置或服务文件变化、实例停止时重新启动
- 确认启动成功后记录
.applied配置摘要 - 新配置启动失败时尝试恢复
.previous配置
- 由所选节点的 Agent 发起
- 测试路径:节点 → SOCKS5 落地机 → 出口 IP 检测服务
- 验证 SOCKS5 握手/认证和代理 CONNECT
- 页面显示测试进度、耗时和出口 IP
- 需要更新 Agent 才能执行该测试
- 结果暂存在 Manager 内存中,重启后可重新测试
管理程序和 Agent 支持 --version:
- 输出版本号、源码提交和提交时间
- 未提交源码构建会标记
+modified - 运行日志和面板也会显示该版本信息
升级脚本在替换 Manager 前,将数据备份到 /var/lib/merit/backups/:
- 目录权限
700 - 备份文件权限
600 - Agent 部署命令会明确重启服务,确保加载新二进制
为确保多协议部署的可靠性,项目提供了自动化验收测试脚本。
cd scripts/acceptance
# 1. 复制配置模板
cp test_config.env.example test_config.env
# 2. 编辑配置文件,填写节点信息
nano test_config.env
# 3. 运行快速测试 (~30 秒)
./quick_check.sh测试覆盖:
- ✅ Mieru TCP/UDP 端口连通性
- ✅ AnyTLS、ShadowTLS、NaïveProxy 端口连通性
- ✅ NaïveProxy TLS 握手和证书验证
- ✅ Manager API 健康检查
- ✅ Clash 订阅生成
适用场景:
- 首次部署节点后的验收
- 版本升级后的回归测试
- 日常健康检查
详见 验收测试文档
项目提供了生产环境部署的加固建议和实施计划。
A 级 - 安全与关键体验
- AnyTLS 身份校验增强 (使用同域名证书)
- 证书上传进度可视化
B 级 - 可观测性
- 证书到期监控和续期告警
- 续期事件日志和面板展示
C 级 - 防御性保护
- Agent 版本检查和兼容性验证
- 升级前自动快照和回滚能力
D 级 - 工具和辅助
- 一键回归测试脚本
- 部署验收检查链
查看完整计划: 生产加固路线图
- 协议部署审计与修复 - 已知问题和修复记录
- 证书上传进度实施方案 - UI/UX 改进设计
- WebDAV 云备份 - 配置备份功能
- 订阅链接修复 - Clash 订阅优化