节点软件 · 分步指南
从一张空桌子到配对好的节点
买什么、如何准备一台小型 Linux 电脑、安装节点软件、在 Vonode App 中扫描配对二维码,以及在免费方案和订阅之间选择。已经有模组和 Linux 电脑的读者,可以直接看安装页上的简要版本。
节点没有网页界面。装好一次、与 App 配对之后,一切都在 App 里管理。未订阅时,节点以免费方案运行:App 显示你选定的一个号码经蜂窝网络收到的短信。其他所有功能(电话、Wi-Fi 通话、发短信、通知、eSIM 配置文件、代理、自动任务、更多号码)都需要在 App 内购买的有效 Vonode 订阅。一份订阅解锁一个节点。
准备硬件
蜂窝模组
Vonode 通过 USB 串口(AT)和 QMI 接口驱动基于高通平台的 Quectel 模组。哪些模组测试过,列在硬件页面上。简单来说:内置 Quectel EG25-G 的 DJI Cellular 模块,已在一台装有 Ubuntu 22.04 的 amd64 电脑上测试;同系列的其他 Quectel 模组(单独的 EG25-G、EC25、EC20、EC21、EM05/EM06、RM500Q)有代码支持,但尚未测试。
在测试过的模组上,可以经 Wi-Fi 通话打电话。它不支持蜂窝网络通话,其他模组上的蜂窝通话也尚未确认。
常见形态,从最简单到最灵活:
- 内置模组的 USB 上网卡(塑料外壳里装着模组,一个 SIM 卡槽,两根小天线),插上即用。请确认商品说明写明会提供串口和 QMI 接口(“for Linux”“AT 命令”“QMI”);只提供网卡功能的上网卡(HiLink、仅 RNDIS 或仅 ECM 固件)不受支持。
- 装在 USB 转接板上的 Mini PCIe 模组。Mini PCIe 转 USB 转接板,带 SIM 卡槽和两根天线转接线(SMA 或 IPEX)。一台主机接多个模组时通常用这种方式。
- 装在 M.2 转 USB 转接板上的 M.2 模组,适用于 5G 的 RM500Q。
- DJI Cellular 模块。需要先切换一次 USB 识别,Linux 才能识别它;步骤见硬件页面。
两根天线(主天线和分集天线)都要接上,并把主机放在手机有信号的地方:靠近窗户,而不是放在柜子里。即使使用 Wi-Fi 通话,模组也至少要看到一次蜂窝网络才能完成注册。
主机
- 任意一台 64 位 x86(amd64)Linux 电脑。Intel N100 迷你主机(无风扇、8 GB 内存、一块小 SSD)很合适:USB 口够用、功耗低、安静。二手瘦客户机或 NUC 也一样可以。节点本身有 2 GB 内存和 4 GB 磁盘就足够。
- Debian 12、Ubuntu 22.04 及以上,或 Fedora。树莓派等 ARM 开发板计划在 1.3.1 支持;OpenWrt 路由器、macOS 或 Windows 上的 Docker Desktop,以及没有 USB 直通的虚拟机不受支持。
- 连接多个模组时,请使用带供电的 USB 集线器。模组在发射峰值时电流可达 2 A;两个模组接在主板无外接供电的 USB 口上,经常会随机重启或出现“模组消失”的问题。
- 建议用有线网络连接到路由器。
SIM 卡、eSIM 与网络
- 一张 Nano SIM 卡,并配上适合卡槽的卡托(Mini PCIe 转接板通常使用标准卡或 Micro 卡)。请先在手机上关闭 SIM 卡的 PIN 码,否则节点无法使用这张卡。
- 模组没有内置 eSIM。要使用 eSIM 配置文件,请在卡槽中插一张可插拔 eUICC 卡(俗称“eSIM 卡”“实体 eSIM”);之后可以在 Vonode App 中下载、切换和删除其中的配置文件(订阅功能)。
- Wi-Fi 通话(VoWiFi)需要运营商在你的套餐中开通,和手机上一样。
- 手机必须能通过一个 TCP 端口(默认 2222)访问到节点:在路由器上做端口转发,或在手机和主机之间使用 WireGuard、Tailscale 等 VPN。如果处在运营商级 NAT 之后(没有公网 IPv4),请使用 VPN。
准备主机
安装 Linux 发行版,连上网络,并用可以使用 sudo 的用户登录。然后更新系统,并停用会抢占模组串口的 ModemManager:
$ sudo apt update && sudo apt full-upgrade -y$ sudo systemctl disable --now ModemManager
插上模组,确认 Linux 已识别:
$ lsusb | grep -i -E 'quectel|2c7c|qualcomm|05c6'$ ls /dev/ttyUSB* /dev/cdc-wdm*
每个模组应显示一行 Quectel 信息、四个 ttyUSB 端口和一个 cdc-wdm 端口。如果不是,请看故障排查。
下载节点安装包
每个版本都以 vonode_<version>_linux_amd64_commercial.tar.gz 的形式发布在 Vonode 节点发布页上,附带 SHA-256 校验值、软件物料清单,以及其中 GPL 和 LGPL 组件的源代码。下载、校验并解压:
$ curl -fLO https://github.com/vonode/vonode-releases/releases/download/<version>/vonode_<version>_linux_amd64_commercial.tar.gz$ curl -fLO https://github.com/vonode/vonode-releases/releases/download/<version>/vonode_<version>_linux_amd64_commercial.tar.gz.sha256$ sha256sum -c vonode_<version>_linux_amd64_commercial.tar.gz.sha256$ tar -xzf vonode_<version>_linux_amd64_commercial.tar.gz
安装节点(systemd 安装包)
本版本推荐的安装方式。systemd 安装包把节点安装为两个系统服务,不需要 Docker。
在安装包的顶层目录运行安装程序:
$ cd vonode_<version>_linux_amd64_commercial$ sudo ./install.sh
安装程序会把程序放到 /opt/vonode,保留已有的配置和数据库,创建系统用户 vonode-gateway(UID 和 GID 为 10001),并启动两个 systemd 服务:核心服务 vonode,以及 App 所连接的加密 SSH 网关服务 vonode-gateway。
首次启动时,节点会生成一个随机的管理员密码,配置中只保存它的哈希值。明文在 /opt/vonode/config/initial-admin-password 中,只有 root 可读。你很少会用到它。
显示配对二维码,并填写手机访问节点时使用的地址:做端口转发时填 DDNS 域名或公网 IP,否则填主机的 VPN 地址或局域网地址。如果转发的是其他端口,请加上 -port <端口>。
$ sudo /opt/vonode/vonode pair -c /opt/vonode/config/config.yaml -host node.example.com终端会以方块图形显示二维码,5 分钟内有效,只能使用一次;需要新的二维码时再运行一次这条命令。

在主机防火墙上放行 TCP 2222 端口;如果手机要从外网连接,还需在路由器上做端口转发:
$ sudo ufw allow 2222/tcp配对 App
从 App Store 安装 Vonode(免费下载)并打开。在“连接你的节点”页面点按扫描框,把摄像头对准终端上的二维码。App 会通过 SSH 连接节点,固定节点的主机密钥,并在首页显示这个节点。
Vonode App 在中国大陆以外的 App Store 国家和地区提供;中国大陆的 App Store 目前不提供。


免费号码或订阅
免费方案。打开“号码”标签页,选择一个你想查看短信的号码。这个选择对该节点永久有效,从备份恢复也会保留。之后“短信”标签页会显示这个号码收到的短信,你可以阅读和删除。


订阅。打开“更多”,点“查看方案”(或“更多 > 订阅”)并订阅。由 Apple 收费;App 把签名的交易记录交给你的节点,节点几秒内解锁并重启进入完整模式。之后用“添加模组”加入你的模组,为每张 SIM 卡开启 Wi-Fi 通话,并按需设置电话、eSIM、通知和自动任务。

日常运维
使用 systemd 安装包时,节点以 vonode 和 vonode-gateway 两个服务运行。
查看状态和日志
$ systemctl status vonode vonode-gateway$ journalctl -u vonode -f
重启
$ sudo systemctl restart vonode重启或停止最多需要两分钟:节点会先注销 Wi-Fi 通话并关闭隧道。
忘记管理员密码
$ sudo systemctl stop vonode$ sudo /opt/vonode/vonode reset-password -c /opt/vonode/config/config.yaml$ sudo systemctl start vonode
停止服务、重置密码,再启动服务。所有手机都会退出登录,需要重新配对。
- 备份:在 App 的“更多 > 备份记录”中操作。备份包含短信、通话记录和订阅绑定,请妥善保管。
- 手机丢失时,可以在 App 的“已配对的手机”列表中移除它。
- 订阅到期:如果订阅到期未续订,节点会继续工作 72 小时,让 App 有时间送达续订;请打开 App 续订。之后,或退款后立即,节点回到免费方案,只显示所选号码的短信。
迁移到新硬件
在 App 中为旧节点创建并下载备份,安装并配对新节点,然后导入备份、恢复并重启。备份包含节点的订阅绑定,所以新节点无需重新购买即可解锁,并保留免费方案已选定的号码。请妥善保管备份:其中包含短信、通话记录和绑定信息。不要让旧节点继续用同一份数据运行。
故障排查
“ModemManager is running”
它会先于 Vonode 占用串口。停用它,然后重启节点:
$ sudo systemctl disable --now ModemManager$ sudo systemctl restart vonode
检测不到模组
如果 lsusb 里没有 Quectel(2c7c)设备,请换一根线或换一个接口,使用带供电的集线器,并查看内核日志中的 USB 供电错误(“over-current”“device not accepting address”)。如果 lsusb 能看到模组但没有 /dev/ttyUSB*,请加载驱动,然后重新插拔模组。有些转接板出厂时让模组处于没有 USB 串口的模式,请按转接板厂商的说明开启;DJI Cellular 模块请看硬件页面。
$ sudo dmesg | tail -n 30$ sudo modprobe -a option qmi_wwanApp 连不上节点
在你的网络之外的设备上测试端口。没有响应,说明路由器转发或防火墙设置有误,或者宽带运营商使用了运营商级 NAT(没有公网 IPv4)。这时请在手机和主机之间建立 VPN(Tailscale、WireGuard),用主机的 VPN 地址配对,或使用节点文档中介绍的中继选项。
$ nc -vz node.example.com 2222配对码已过期或已被使用
配对码 5 分钟内有效,只能使用一次;用安装节点一节中的 pair 命令生成新的配对码。
Wi-Fi 通话注册不上
SIM 卡的套餐需要开通 Wi-Fi 通话,模组至少要用这张 SIM 卡在蜂窝网络上注册过一次,主机还需要能通过 IPv6 或 IPv4 访问运营商的 ePDG。App 的诊断页面会显示当前所处的阶段;它可以导出的支持包,就是要发给支持的材料。
短信时间不对
节点使用主机的时区。请用 timedatectl 设置(使用 Docker 时,给安装脚本传入 --tz Europe/London 这样的 IANA 时区名)。
Docker Compose(即将推出)
即将推出。商用 Docker 镜像尚未发布,所以本版本还不能使用这种方式,请使用上面的 systemd 安装包。下面的步骤说明 Docker 方式推出后的用法。
在镜像发布之前,setup.sh 会停下并要求指定镜像:如果某个版本的发布说明提供了 --image vonode/vonode@sha256:<digest>,请传入它;否则请使用 systemd 安装包(在安装包顶层目录、即 docker/ 的上一级运行 sudo ./install.sh),这是本版本支持的安装方式。
安装 Docker Engine 和 Compose
Docker 官方的便捷脚本可在 Debian、Ubuntu 和 Fedora 上安装 Docker Engine 和 Compose 插件。最后一条命令必须输出 Compose v2 的版本号。
$ curl -fsSL https://get.docker.com | sh$ sudo systemctl enable --now docker$ docker compose version
运行安装脚本
在安装包的 docker/ 目录下运行。--host 是手机访问节点时使用的域名或 IP;不填时,脚本会建议使用主机的局域网地址,在同一 Wi-Fi 下首次配对时这样就可以。
$ cd vonode_<version>_linux_amd64_commercial/docker$ sudo ./setup.sh --host node.example.com --image vonode/vonode@sha256:<digest>
脚本会检查主机(Linux、amd64、root、Docker、Compose、ModemManager),列出找到的模组及其设备节点,在脚本旁边创建 config/、data/ 和 logs/,写入 .env 和 docker-compose.override.yml,拉取镜像,启动两个容器(核心 vonode,以及供 App 连接的 SSH 网关 vonode-gateway),并等待两者都报告 healthy,首次启动大约需要半分钟。默认把整个 /dev 绑定进核心容器,这样重新枚举或热插拔的模组仍能使用;--devices 只映射当前存在的设备节点。可变的镜像标签会被拒绝,除非加上 --allow-tag。最后,脚本会显示初始管理员密码的位置(config/initial-admin-password,只有 root 可读)和配对二维码。

传入 --port <n> 可以使用其他 SSH 端口;路由器转发的外部端口不同时,再传入 --public-port <n>。随时生成新的配对码(在同一目录下):
$ sudo docker compose exec vonode /app/vonode pair -c /app/config/config.yaml -host node.example.com -port 2222Docker 方式的日常运维
以下命令都在安装包的 docker/ 目录下运行。
| 操作 | 命令 |
|---|---|
| 查看状态(两个服务都应为 healthy) | sudo docker compose ps |
| 查看日志 | sudo docker compose logs -f vonode |
| 生成新的配对码 | sudo docker compose exec vonode /app/vonode pair -c /app/config/config.yaml -host <address> -port 2222 |
| 新增或移动了模组(重新检测模组,其余保持不变) | sudo ./setup.sh |
| 重启(最多两分钟) | sudo docker compose restart vonode |
| 停止并保留数据 | sudo ./setup.sh --uninstall |
| 全部删除 | sudo ./setup.sh --uninstall --purge |
| 忘记管理员密码(所有手机需要重新配对) | sudo docker compose stop vonode, sudo docker compose run --rm --no-deps vonode reset-password -c /app/config/config.yaml, sudo docker compose start vonode |
| 升级:把新的镜像引用写入 .env(或传入 --image),再运行脚本 | vonode/vonode@sha256:<digest> → .env / --image, sudo ./setup.sh |
不要运行 docker compose down -v:vonode_gateway-private 卷保存着已配对手机所固定的 SSH 主机密钥。setup.sh --uninstall 会保留它。
- 127.0.0.1:7575 端口已被占用:另一个程序占用了节点的本机配对页端口。运行
sudo ./setup.sh --admin-port 17575(任意空闲端口),脚本会同时把端口写入配置和 Compose 环境。 - 容器不是 healthy:用
sudo docker compose logs vonode查看原因。核心在内部套接字创建后即为 healthy;vonode-gateway在能访问该套接字并监听 2222 端口后为 healthy。最常见的原因是 2222 端口冲突(ss -ltn | grep 2222),请用--port换一个端口。 - 模组重置后端口变了:模组重置后会重新枚举,
ttyUSB编号可能改变。默认绑定整个/dev时,它们会自动出现;如果你用了--devices,请再运行一次sudo ./setup.sh。
法律信息
节点软件是 VONODE LLC 的专有软件。第三方组件及其许可证列在安装包的 THIRD_PARTY_NOTICES.txt 和 SBOM 中。Vonode 不是紧急通信服务:请只在你有权使用的 SIM 卡、号码和网络上使用,并遵守运营商的条款。