Hub 不会替你运行电台服务。你的 MRRC Modern 始终跑在你自己的机器上, Hub 只是给它一个从公网可达的入口。所以「局域网已经能用」是硬前提 —— 局域网不通,接上 Hub 也不会通。
-
前提自检
在继续之前,逐条确认下面五件事。任何一条不满足,先解决它再往下走。
局域网能打开 http://<你的内网IP>:8888/能出登录页。
默认端口8888,默认监听所有网卡。能登录 首次启动会自动生成随机口令,在登录页横幅和菜单栏的 Show Password…里都能看到。 有音频、能发射 先在局域网里跑通一次完整收发。远程排障比本地排障贵十倍。 知道设备 串口(如 /dev/cu.usbserial-*)与音频设备名(常见是USB Audio Device)—— 装完之后如果配置变了,这两项是要改的地方。出站可达 隧道控制口 8989的出站不能被拦。公司网、访客 Wi-Fi 常拦非标端口。两个端口不是一回事隧道控制口是
tunnel.mrrc.vlsc.net:8989(你的机器连出去,接入时必须打通);入口是<呼号>.mrrc.vlsc.net(浏览器连进来,443,不需要你开放任何入站端口)。 -
选路径:盒子还是电脑
两条路的终点完全一样 —— 一个跑着 MRRC Modern、挂着隧道的实例;区别只在这台机器是什么、要不要常开。
W103D 盒子
百元级的常开小盒子,镜像里已经装好 MRRC Modern 与隧道客户端。适合想让电台一直在线、又不想占一台电脑的人。
- 开箱 → 网线/配网 → 在盒子的页面上把电台配好
- 在应用里「接入云端」走同一套申请流程
- 完整步骤(含踩过的坑)在 MRRC Modern 的 W103D 指南里
电脑(macOS / Windows / Linux)
已经用打包版 MRRC Modern 在局域网里跑通的那台机器。装好隧道后,它在公网上就是同一个实例。
- 新版本(v1.24.0 起)在应用里点几下就完成,见第 3–4 步
- 旧版本用仓库里的安装器脚本,见第 4 步的备选路径
- 机器关机=离线;入口会 502,隧道不自作主张
-
申请与注册:拿到你的名字
呼号是你在 Hub 上的身份。入口名、证书名、隧道归属都由它派生,所以这一步先走完,再谈接入。
推荐路径在应用里申请(v1.24.0 起)打开 MRRC Modern 的「设置 → 接入云端(Cloud Hub)」,填呼号与联系方式(可选)提交即可。运维批准一到,应用会自己完成剩下的全部动作:签一张签给
<呼号>.mrrc.vlsc.net的自签证书、向 Hub 登记公钥(私钥不出本机)、写好自己的隧道配置、启动隧道,并把会话心跳设为 5 秒。你不需要复制任何口令或粘贴任何命令。也可以直接走门户打开
https://portal.mrrc.vlsc.net/,填呼号与联系方式提交。Portal 当场走完前三步:-
规范化 —— 去空格、大小写不敏感。
BG1SB与bg1sb视为同一个呼号,不会变成两个租户。 - 查重 —— 同一个呼号在同一时刻只能有一个归属人。已被绑定时走申诉/转移流程,绝不静默覆盖。
- 核验 —— 命中 Club Log 呼号库(27 万条,与站内留言版同源)的当场自动核验;库外转人工核验 —— 库外 ≠ 冒用,新执照、低活跃都可能不在库里,只有人能拒绝。
核验通过后由运维分配:把呼号标签与隧道端口写进注册表。拿到批准后,回到应用里连接即可(旧版产品会给你标签、端口与隧道凭证,走第 4 步的手动路径)。
自助注册对你的三个实际好处- 不会被静默覆盖 —— 被冒用时申请会被拒绝,而不是抢走你的呼号。
- 每一步有审计 —— 申请、核验、授予都进追加式审计日志。
-
可被撤销 ——
冒用被核实后移除绑定并停用入口(
/revoke)。
为什么核验必须发生在「给访问」之前呼号是公开信息,入口存在性天然可以被枚举出来 —— 这一点在设计上是被 有意接受的,不是漏洞。既然藏不住,防御重心就只能前移到「授予访问之前把身份核实清楚」,而不是事后追责。
-
规范化 —— 去空格、大小写不敏感。
-
建立隧道
隧道把你机器上的电台服务,接到 Hub 上属于你呼号的那个回环端口。你的机器只连出去,不开放任何入站端口。
应用内接入(推荐)「设置 → 接入云端(Cloud Hub)」提交申请后,批准一到应用自动建隧道 —— macOS 与 Windows 的打包版、盒子的出厂镜像都走这条路,不需要终端。
备选:手动脚本(旧版产品、无界面环境,或你想自己控制每个细节):
# 1) 取仓库(安装器在里面) git clone https://github.com/cheenle/mrrc_hub.git # 2) 装成常驻服务(macOS / Linux) # 不需要先装 frp —— 安装器会自己取回来并校验哈希 MRRC_HUB_TOKEN='<隧道凭证>' \ bash mrrc_hub/deploy/install_instance_tunnel.sh <呼号> <隧道端口>Windows 用对等的 PowerShell 版,而且它做的更多:
$env:MRRC_HUB_TOKEN = '<隧道凭证>' .\mrrc_hub\deploy\install_instance_tunnel.ps1 <呼号> <隧道端口>frpc 从哪来 安装器按三级优先选:① 安装包内嵌副本 → ② 系统 PATH里已有的 → ③ 从 frp 官方 release 下载并校验 SHA-256,不符即拒绝使用。版本与 Hub 端钉死对齐 —— 客户端比服务端新可能握手失败。缓存落在~/.local/share/mrrc-fleet。它做了什么 写一份 0600的隧道配置,并装一个常驻服务: macOS 是带 KeepAlive的 LaunchAgent、Linux 是 systemd 用户单元(带 linger,注销后仍活)、Windows 是计划任务。崩溃、重启、换网都能自恢复。Windows 额外做 用内置的 openssl 给你的 <呼号>.mrrc.vlsc.net签一张自签证书,并把证书路径与心跳阈值写成用户级环境变量 —— 应用下次启动即生效。私钥不出本机,只有公钥交给 Hub 钉住。它不做什么 不管你的 MRRC 服务。电台服务归你自己起。实例没起来时隧道照常在,访问会得到 502 —— 这是区分「隧道断了」和「电台服务没起」的关键。 幂等 / 防冲突 macOS/Linux 版:已经有手工启动的隧道客户端在跑时会拒绝启动 —— 两个客户端抢同一个名字会让入口反复抖动。Windows 版没有这道闸门,先停掉手工 frpc。 凭据处理 凭据只落在 0600配置文件里;不进命令行参数、不进世界可读的文件。端口与凭证从哪来?隧道端口由 Hub 侧权威分配(注册表里那行),你不能自己挑。核验通过、运维分配后,你会拿到标签、端口与凭证三样东西。没拿到就别猜 —— 填错的端口隧道会连上,但入口仍然 404。
-
验证
两条命令,一条看隧道,一条看整条链路。
# 1) 隧道这一跳健康吗 tail -5 "$HOME/Library/Application Support/mrrc-fleet/frpc-<呼号>.log" # 期望看到:login to server success # [<呼号>] start proxy success # 2) 从公网看整条链路健康吗 curl -s -o /dev/null -w '%{http_code}\n' https://<呼号>.mrrc.vlsc.net/login # 期望 200(HEAD 得 405) curl -s https://<呼号>.mrrc.vlsc.net/api/health # 期望 401401 是好事/api/health返回 401说明三层同时通了:隧道建立成功、Hub 按呼号找到了你的实例、实例的鉴权中间件在工作。如果它返回 200,反而说明鉴权没生效 —— 值得停下来查一下。两条都通过之后,浏览器打开下面的地址,用你的主口令登录,就应该看到和局域网里一模一样的控制台:
https://<呼号>.mrrc.vlsc.net/ -
重启之后
这两件事的行为不一样,这是最容易踩的坑。
隧道 自动回来。常驻服务带自重启(macOS LaunchAgent / Linux systemd --user / Windows 计划任务),重启、崩溃、换网络都会自己重连。 MRRC 服务 看你装的是哪个版本:
· 打包版(当前 v1.27.0)—— 按正常应用安装,随应用启动;Hub 接入写下的心跳阈值与证书都在启动时生效。
· 源码运行 —— 非常驻,重启后要手动起(下面就这个情况)。cd mrrc_modern while IFS='=' read -r k v; do case "$k" in ''|\#*) continue;; esac; export "$k=$v"; done \ < "$HOME/Library/Application Support/MRRC-Modern/mrrc_modern.env" nohup venv/bin/python server.py > /tmp/mrrc-src/server.log 2>&1 &必须是这个while ... read循环,不能source环境文件里有
USB Audio Device这类带空格的值。source会把值里的词当命令去执行;上面这个循环才是正确的加载方式。这不是风格问题,是会真的报错。重签证书之后,必须重启进程证书是在启动时读进内存的:换机器、重装、重签证书之后,如果只替换了文件而不重启 MRRC 服务,入口会一直是 502,而本机看起来一切正常。换机的完整清单见 维护 · 换机与证书。
接下来 →
怎么用、怎么分享给朋友
· 连不上 →
排障 ·
换机器/退出/叫人来修 →
维护与生命周期
· 想知道每一层为什么这么设计 →
设计与层层实现
本页事实基线:2026-10-16
现场复核;命令与期望输出均在现网实例上实测过。