m-uising-box panel

一台主机,任意多台副机

m-ui 从设计上就是多服务器的 sing-box 面板,不是后加的插件。每台服务器跑同一个二进制;一台是主机负责算账,其余只管转发。

服务器页:一主两副,均在线并已同步

角色

主机副机
面板完整:线路、用户、上游、代理、设置只读展示主机下发的内容;本机设置、证书、日志可改
数据面内嵌 sing-box,跑自己的线路内嵌 sing-box,跑部署到它的线路
算账汇总各机流量,判定配额、到期、设备数每个用户一个单调计数器,上报增量
订阅提供订阅(副机也可以,数据一样)同样的数据、同样的格式

接入一台副机

  1. 在新服务器上用同一条安装命令装 m-ui。
  2. 在它的面板里 设置 → 作为副服务器运行,配对卡片里有它的 API 地址与令牌。
  3. 回到主机 服务器 → 新增服务器,贴上地址和令牌,起个名字,填域名或 IP。副机证书各自签发(自签就行)。

就这些。五秒内副机显示 在线 · 已同步,开始跑部署到它的线路。

同步什么、怎么同步

主机每 5 秒构造一份快照 —— 线路、上游、带凭据的用户、用户↔线路分配、外部节点、代理、订阅相关设置 —— 哈希成一个修订号,并发推给所有副机。已经是这个修订号的副机什么都不做;不是的就应用并重载数据面,用的是和主机一样的三级重载:改用户只换入站用户表,改上游只换出站,只有改线路才重启 sing-box(起不来则回滚)。

同一轮里主机再拉每台副机的报告:自上次游标以来的流量、每个用户的在线源 IP、版本、内核状态、证书剩余天数。某台机器慢或失联只耽误它自己,其它机器按时同步。

跨服务器的流量、配额与设备数

多服务器时的订阅

部署到 N 台服务器的线路在用户订阅里出现 N 次,命名为 线路 – 服务器,各用自己的域名或 IP。Clash、sing-box 和通用链接的客户端按延迟选,或者让用户自己挑。给线路加一台服务器,所有人的订阅下次刷新就多出节点 —— 不用逐个改用户。只想让某个用户、某个套餐或某个代理拿一条线路在某一台服务器上的入口时,勾那个入口而不是整条线路,订阅里就只出那一个。

副机掉线时

流量倍率

每台服务器有一个倍率(默认 1)。走倍率 2 的服务器,流量按两倍计入用户配额 —— 适合专线或带宽贵的机器。时序图表记的仍是真实字节,只有用户的配额计量被放大。

更深一层:同步协议是怎么做的 · 架构总览