Xboard Next/ooPublic mirror

多协议节点程序 · 机器模式 / 节点模式 · 安装、迁移与日常管理

⑂ dev 自托管文件下载 ▾
oo /192 个文件 · 实际托管内容

这里展示实际托管文件,不是 Git 提交记录。点击目录浏览,点击文件进入代码详情页。

☷ README · 安装与使用

oo 节点程序

当前自托管版本

v1.0.16-dev.20260925。新增独立的 SOCKS5 出站教程,可为一个 AnyTLS / Trojan 子节点设置专用出口。公开教程仅使用示例凭据。

先选安装方式

oo 是节点程序名称,不代表必须使用 oo 协议,也不只支持 Trojan。机器模式 / 节点模式是“如何连接面板”;Shadowsocks、VMess、VLESS、Trojan、Hysteria2、TUIC 等才是节点协议。

机器模式:面板后台有“机器管理”,使用机器 ID 和机器 Token,自动加载该机器下绑定的节点。

节点模式:使用单个节点 ID 和节点通信 Token,只加载指定节点。普通 Xboard 没有机器管理时选这一项。

机器 ID 与节点 ID 不能混用。是否支持机器模式以面板实际接口为准,不只看面板名称。

先选“通用机器模式”或“通用节点模式”。只有需要自动搭建 Trojan + Nginx 时,才使用后面的专用安装方案。

以下安装命令仅用于新机。已有节点请先看“更换面板地址”和“更新程序”,不要重复全新安装。

SOCKS5 出站教程

需要让已有节点的出站流量经过上游 SOCKS5 代理,请阅读独立教程。它不是 SOCKS5 入站节点安装;最低版本为 v1.0.16-dev.20260925(v1.0.16 系列),旧版本请先备份并更新。

https://node.xboardnext.com/oo/socks5-outbound.html

通用机器模式 · 所有支持的协议

适用于面板具有机器管理功能的部署。先创建机器,再把需要的 Shadowsocks、VMess、VLESS、Trojan、Hysteria2、TUIC、AnyTLS 等节点绑定到这台机器。

机器安装只需要面板地址、机器 Token 和机器 ID。协议、节点端口、传输、TLS / Reality 参数在面板配置,节点程序自动获取;不要填写 --node-type、--node-id 或 --domain。

curl -fL https://node.xboardnext.com/oo/dev/install.sh -o /tmp/oo-install.sh && sudo bash /tmp/oo-install.sh install \
  --mode machine \
  --panel 'https://panel.example.com' \
  --token 'MACHINE_TOKEN' \
  --machine-id MACHINE_ID \
  --kernel auto

这条命令适用于所有当前程序和面板共同支持的协议,不需要每种协议安装一次,也不会自动安装 Nginx。已部署机器后,在面板把新节点绑定到同一机器,等待程序同步;不要反复安装或创建多个机器实例。

同一台机器可以同时运行多个协议,但同一个监听 IP、端口和传输类型不能重复占用。先检查 Nginx 或其他服务是否已占用该端口。

通用节点模式 · 指定一个协议节点

适用于普通 Xboard 的单节点接入。先在面板创建对应协议的节点,使用节点通信 Token 和节点 ID;PROTOCOL 必须与面板节点真实类型一致。

curl -fL https://node.xboardnext.com/oo/dev/install.sh -o /tmp/oo-install.sh && sudo bash /tmp/oo-install.sh install \
  --mode node \
  --panel 'https://panel.example.com' \
  --token 'NODE_TOKEN' \
  --node-id NODE_ID \
  --node-type PROTOCOL \
  --kernel auto

PROTOCOL 替换示例:Shadowsocks 用 shadowsocks;VMess 用 vmess;VLESS 用 vless;Trojan 用 trojan;TUIC 用 tuic;AnyTLS 用 anytls;Naive 用 naive;SOCKS 用 socks;HTTP 用 http;Mieru 用 mieru。

Hysteria / Hysteria2:面板 API 常统一使用 hysteria,并在节点配置中指定版本 1 或 2。若面板生成的是 --node-type hysteria,就保留 hysteria,不要只根据客户端显示名改成 hysteria2。以该面板生成的命令和实际支持的节点类型为准。

示例:安装 VLESS 单节点,只需将上述命令的 PROTOCOL 改为 vless。TLS、Reality 或 XHTTP 不通过 --node-type 区分,而是在面板对应节点中设置。普通 Trojan 直连同样使用此通用命令,不要求必须配 Nginx。

各协议部署条件 · 端口与证书

Shadowsocks:设置加密方式和节点端口;需要 UDP 转发时同时放行对应 UDP 端口。普通 Shadowsocks 不需要 TLS 证书。

VMess:设置端口和 TCP / WS / gRPC 等传输;启用 TLS 时配置域名与证书。WS / gRPC 反向代理需按面板路径和服务名另行配置,通用安装脚本不会自动配置 Nginx。

VLESS:设置传输方式和 TLS / Reality 参数。TLS 使用有效证书;Reality 在面板配置密钥及 server_name / dest 等参数,不要把 Reality 当作普通 ACME 证书模式。XHTTP / splithttp 使用支持该传输的 Xray 内核。

Trojan:通常需要 TLS 证书,放行节点 TCP 端口;若配置 Reality,应使用相应密钥和参数。可以直接监听空闲端口,也可以使用下方 Trojan + Nginx 专用方案。

Hysteria / Hysteria2:需要 TLS 证书,放行节点 UDP 端口。只开 TCP 443 不够,普通 Nginx HTTP 反向代理不能代替 UDP 入口。

TUIC:需要 TLS 证书,放行节点 UDP 端口,并确保客户端使用与服务端兼容的协议版本。

AnyTLS:需要 TLS 证书和节点 TCP 端口,同时确认客户端支持 AnyTLS。

Naive:按面板配置 HTTPS、证书和认证;需要兼容的客户端。不要仅因为程序支持该协议,就假定你的面板也能生成完整配置。

SOCKS / HTTP:使用面板支持的认证设置,并限制不必要的公网访问。普通 SOCKS 和 HTTP 代理默认不提供传输加密,不要把它们当作 TLS 代理。

Mieru:在面板设置对应的传输和端口,放行实际使用的 TCP / UDP,并使用兼容客户端。

云厂商安全组和系统防火墙都要放行实际节点端口。多个协议不是都走同一个 443;TCP 与 UDP 是不同监听类型,也要分别检查。

使用 ACME HTTP-01 自动签发证书时,域名需正确解析,外部 80 端口的验证请求需能到达程序。已有 Nginx 占用 80 时要配置验证转发,或使用受支持的 DNS 验证 / 已有证书方式,不要为了签证书盲目停止网站。

内核怎么选

默认使用 --kernel auto,由程序根据面板节点配置选择内核;当前源码中 XHTTP / splithttp 选择 Xray,其他受支持传输默认选择 sing-box。

Hysteria2、TUIC、AnyTLS、Naive、Mieru 等优先保留 auto,不要给所有协议强制 --kernel xray。支持范围取决于面板、实际下载的内核版本与客户端三者,不能仅凭节点类型名称保证可用。

如果日志提示 unsupported protocol / transport,请先检查面板配置、程序版本和实际选择的内核,不要反复安装。机器模式的同一程序可管理多个节点,每个节点仍需满足自己的内核与协议要求。

机器部署后新增其他协议

1. 在面板创建新协议节点,设置独立端口、传输和证书参数。

2. 将节点绑定到已部署的机器 ID,确认节点处于启用状态。

3. 放行该节点实际使用的端口;如需反向代理,单独配置对应入口。

4. 查看日志是否发现新节点并成功启动,再更新客户端订阅验证。

sudo journalctl -u oo.service -n 100 --no-pager
sudo ss -lntup

如果出现 discovered 0 nodes,先检查面板是否真的绑定并启用了节点。如果出现端口冲突,调整面板的监听端口或检查残留服务,而不是再安装一遍。

机器模式 · Trojan + Nginx

先在面板创建机器并绑定 Trojan 节点。设置节点域名解析到本机;本教程默认 Nginx 对外监听 443,Trojan 内部监听 10443,节点证书域名与下方 --domain 保持一致。放行所需的 80、443 端口。

将 PANEL_URL、MACHINE_TOKEN、MACHINE_ID 和 node.example.com 替换为自己的值,粘贴到终端运行。机器模式不填写 --node-id 或 --node-type。

curl -fL https://node.xboardnext.com/oo/dev/easy-install.sh -o /tmp/oo-easy-install.sh && sudo bash /tmp/oo-easy-install.sh \
  --mode machine \
  --panel 'https://panel.example.com' \
  --token 'MACHINE_TOKEN' \
  --machine-id MACHINE_ID \
  --domain node.example.com

机器下新增节点前,检查监听端口是否重复。这个示例为一个 Trojan 域名配置 Nginx;新增其他域名、端口或协议时,还需按实际情况配置入口,不能假定一个域名会自动覆盖全部节点。

节点模式 · Trojan + Nginx

在面板创建 Trojan 节点,取得节点 ID 和节点通信 Token。域名与端口要求同上。节点模式不填写 --machine-id。

curl -fL https://node.xboardnext.com/oo/dev/easy-install.sh -o /tmp/oo-easy-install.sh && sudo bash /tmp/oo-easy-install.sh \
  --mode node \
  --panel 'https://panel.example.com' \
  --token 'NODE_TOKEN' \
  --node-id NODE_ID \
  --node-type trojan \
  --domain node.example.com

域名只填主机名,不带 https://。多行命令每行末尾的反斜杠后面不要加空格。不要把 Markdown 链接格式一起粘贴进终端。

原作者安装链接怎么替换

面板生成的命令如果使用上游 GitHub 安装地址,只替换脚本下载地址,保留面板给出的 --mode、--panel、--token 和 ID 参数,不要随意把 node 改为 machine。

oo 自托管基础安装脚本:

https://node.xboardnext.com/oo/dev/install.sh

基础安装只负责节点程序,不等于完成 Trojan + Nginx。需要完整部署时,请使用上面的 easy-install.sh 示例,并补上 --domain。

基础安装的新机机器模式示例:

curl -fL https://node.xboardnext.com/oo/dev/install.sh -o /tmp/oo-install.sh && sudo bash /tmp/oo-install.sh install \
  --mode machine \
  --panel 'https://panel.example.com' \
  --token 'MACHINE_TOKEN' \
  --machine-id MACHINE_ID

不要同时执行基础安装和完整安装来“补装”。已有安装请使用更新流程。

快捷菜单 · 输入 oo

已安装 oo 菜单入口后,执行:

sudo oo

1 新增 / 修改实例;2 更新程序;3 查看状态;4 启动;5 停止;6 重启;7 查看日志;8 更新网站;9 卸载;10 节点服务管理;11 查看版本;12 退出;13 回收站。

注意:选项 1 不是可靠的“替换旧绑定”操作。更换面板或模式时,先按下一节备份并检查现有实例。选项 8 会改写网站文件,不是日常更新所必需。

如果提示 oo 命令不存在,先检查现有部署路径,不要为了补菜单重新安装:

systemctl show oo.service -p ExecStart -p WorkingDirectory
command -v oo
command -v ooctl

更换面板地址 / Token / 接入模式

先确认新面板的协议、节点监听端口、证书域名与现有配置兼容。新机器 ID 和新 Token 应从新面板取得,不能沿用旧节点 ID。

先备份,再编辑服务实际加载的配置。下面的备份命令适用于 /etc/oo;如果 ExecStart 显示其他目录,请按实际路径处理。

systemctl show oo.service -p ExecStart -p WorkingDirectory
sudo sh -c 'umask 077; tar -czf /root/oo-before-panel-change-$(date +%Y%m%d-%H%M%S).tgz /etc/oo /etc/nginx /etc/systemd/system/oo.service'
sudoedit /etc/oo/config.yml
sudoedit /etc/oo/credentials.env

只更换面板域名:修改目标实例的 panel.url。Token 保存在 credentials.env,修改 config.yml 中 token_env 对应的变量,不要直接把 Token 写入公开教程、截图或日志。

切换 node / machine:这是替换实例,不是只改一个 ID。节点模式使用 panel.node_id、panel.node_type、panel.token_env;机器模式使用 machine.machine_id、machine.token_env。只保留需要的绑定,保留证书、Nginx 回落、续期端口等已有设置。不要把两套模式合并到同一个实例。

配置含多个实例时,不得让两个实例共用 health_port 或监听端口。不要通过再次运行 easy-install.sh 来替换旧绑定;它可能合并旧配置,导致重复实例。

确认配置正确后重启并检查。如果启动失败,恢复备份中的原配置与凭据后重启,不要连续反复重装。

sudo nginx -t
sudo systemctl restart oo.service
sudo systemctl status oo.service --no-pager
sudo journalctl -u oo.service -n 60 --no-pager

常用命令

查看状态与当前配置位置:

sudo systemctl status oo.service nginx --no-pager
systemctl show oo.service -p ExecStart -p WorkingDirectory

启动、停止、重启节点程序(按需执行其中一条):

sudo systemctl start oo.service

停止:

sudo systemctl stop oo.service

重启:

sudo systemctl restart oo.service

实时日志,按 Ctrl+C 退出:

sudo journalctl -u oo.service -f -n 100

检查 Nginx 和本机健康接口(仅适用于启用默认健康端口 65530):

sudo nginx -t
curl -fsS http://127.0.0.1:65530/healthz

更新程序

先备份,再在 oo 菜单选择 2。更新会重启节点服务,连接可能短暂中断。不要用全新安装命令代替更新。

从 v1.0.15 起,服务名统一为 oo.service,节点程序为 oo-node,管理工具为 ooctl,快捷命令为 oo。下载文件为 oo-node-linux-amd64 / oo-node-linux-arm64 和 ooctl-linux-amd64 / ooctl-linux-arm64;不要再使用旧二进制文件名覆盖新版程序。

sudo oo upgrade

首次迁移旧版服务命名,请下载新版安装脚本执行 upgrade。升级会备份旧服务,验证 oo.service 正常后归档旧程序;失败则回滚。自定义服务或重复安装不会强行迁移。

curl -fL https://node.xboardnext.com/oo/dev/install.sh -o /tmp/oo-install.sh && sudo bash /tmp/oo-install.sh upgrade

完成后统一使用 sudo oo restart 或 sudo systemctl restart oo.service;实时日志使用 sudo oo logs。

卸载程序

卸载会停止节点转发。默认保留配置;不要加入 --purge,除非明确需要删除配置。Nginx 与证书应单独确认,不要一并清理。

sudo oo uninstall

没有 oo 菜单时,仅适用于确认当前部署位于 /etc/oo 的情况:

sudo bash /etc/oo/install.sh uninstall

旧部署请先确认实际配置位置,不要直接删除配置目录。新版管理工具保留旧路径兼容识别。

常见报错

health_port ... used by both:两个实例重复占用健康端口。先确认是否残留旧绑定,不是证书故障。

machine nodes status 401/403:核对面板是否支持机器模式,以及机器 ID / Token 是否属于该面板;不要因此盲目更换域名或证书。

等待证书超时:先查看节点启动日志。如果服务因配置冲突未启动,先修配置;服务启动正常后再检查 DNS、80/443、域名与 ACME 日志。

Nginx 正常不代表 Trojan 客户端一定可用:还需验证节点用户同步、订阅参数和真实客户端连接。

下载与源码

完整安装脚本:

https://node.xboardnext.com/oo/dev/easy-install.sh

基础安装与菜单脚本:

https://node.xboardnext.com/oo/dev/install.sh

Linux amd64 节点程序:

https://node.xboardnext.com/oo/releases/latest/download/oo-node-linux-amd64

Linux arm64 节点程序:

https://node.xboardnext.com/oo/releases/latest/download/oo-node-linux-arm64

Linux amd64 管理工具:

https://node.xboardnext.com/oo/releases/latest/download/ooctl-linux-amd64

Linux arm64 管理工具:

https://node.xboardnext.com/oo/releases/latest/download/ooctl-linux-arm64

源码与原有文档目录:

https://node.xboardnext.com/oo/dev/source/

v1.0.6:回收站与已删除实例

主菜单 10 显示已删除实例;13 进入回收站,输入编号恢复;12 仍为退出。删除整套实例后,运行绑定和默认实例目录移入回收站,保留面板记录。恢复前检查端口、面板连接和证书;过期自动证书尝试续期,失败不启动。手动证书过期需更换。

旧版已删除实例需显式从备份导入,不会因更新自动恢复。删除和恢复会重启共享进程,其他实例可能短暂重连。

curl -fL https://node.xboardnext.com/oo/dev/install.sh -o /tmp/oo-install.sh && sudo bash /tmp/oo-install.sh upgrade --version v1.0.16-dev.20260925

https://node.xboardnext.com/oo/releases/download/v1.0.6-dev.20260913/recycle-bin.md

https://node.xboardnext.com/oo/releases/download/v1.0.6-dev.20260913/SHA256SUMS

v1.0.7:多端口 SNI 与 Nginx 目录修复

支持不同域名共用 443 或非 443 端口;新增 --listen-port,默认 443。不同端口组独立配置,内部服务端口需分别配置。

更新节点程序(会短暂重启):

curl -fL https://node.xboardnext.com/oo/dev/install.sh -o /tmp/oo-install.sh && sudo bash /tmp/oo-install.sh upgrade --version v1.0.16-dev.20260925

Nginx 目录误删或仅剩 stream 残缺配置时,单独修复基础配置(Debian/Ubuntu;保留 oo 配置与证书,软件包操作可能启停 Nginx):

curl -fL https://node.xboardnext.com/oo/dev/easy-install.sh -o /tmp/oo-easy-install.sh && sudo bash /tmp/oo-easy-install.sh --mode machine --repair-nginx

基础修复不等于恢复已删除的 SNI 规则。升级后使用 --resume-nginx、--instance、--domain、--trojan-upstream、--acme-http-port 按实例重建;非 443 加 --listen-port。不会强制重新申请仍有效的证书。

[多套服务与修复说明](https://node.xboardnext.com/oo/releases/download/v1.0.7-dev.20260918/nginx-multiple-trojan.md)

[版本说明](https://node.xboardnext.com/oo/releases/download/v1.0.7-dev.20260918/release-v1.0.7-dev.20260918.md)

v1.0.8:同一机器 ID 多 Trojan 节点

同一机器 ID 绑定多个 Trojan 节点:每个节点使用不同域名和内部端口,Nginx 按域名共用外部 443(亦支持非 443)。域名和证书配置取自各面板节点,不再统一覆盖整个实例。

升级配套程序与菜单(会短暂重启):

curl -fL https://node.xboardnext.com/oo/dev/install.sh -o /tmp/oo-install.sh && sudo bash /tmp/oo-install.sh upgrade --version v1.0.16-dev.20260925

新增节点后输入 oo → 10 → 选择机器 → 6 同步域名分流;预览确认后才写入,并短暂重启共享节点进程。不用重装机器实例。同步不是后台自动执行。菜单显示节点域名、外部端口及内部端口。证书签发异步进行,需查看日志确认完成。

https://node.xboardnext.com/oo/releases/download/v1.0.8-dev.20260918/machine-trojan-domains.md

https://node.xboardnext.com/oo/releases/download/v1.0.8-dev.20260918/release-v1.0.8-dev.20260918.md

v1.0.9:节点管理菜单优化

菜单 10 查看、停用、恢复后留在当前机器子菜单。选返回先回机器列表,再选 0 回主菜单。端口重复时不再误显示为运行中。本机停用保留面板数据,可恢复。彻底删除面板记录尚未接入管理员权限,选项标为暂不可用,不会执行删除。

升级配套程序与菜单(会短暂重启共享节点进程):

curl -fL https://node.xboardnext.com/oo/dev/install.sh -o /tmp/oo-install.sh && sudo bash /tmp/oo-install.sh upgrade --version v1.0.16-dev.20260925

管理菜单版本:2026.09.18.3。

https://node.xboardnext.com/oo/releases/download/v1.0.9-dev.20260918/release-v1.0.9-dev.20260918.md

子菜单删除、恢复针对选中的子节点 ID,保留机器实例及其他子节点;子菜单不提供移除整个实例的操作。

v1.0.10:删除本机子节点配置

菜单 10 → 选择机器 → 3 删除指定子节点服务 → 选择子节点编号 → 2 删除本机子节点配置。已停用的子节点也可删除。仅清理本机子节点运行目录,保留私有备份、本地删除标记、面板记录、机器实例及其他节点。共享 Nginx 配置不清除。恢复时从面板重新下发配置。需同时更新节点程序与菜单,不能只更新脚本。

升级命令(会短暂重启共享节点进程):

curl -fL https://node.xboardnext.com/oo/dev/install.sh -o /tmp/oo-install.sh && sudo bash /tmp/oo-install.sh upgrade --version v1.0.16-dev.20260925

管理菜单版本:2026.09.18.4。

https://node.xboardnext.com/oo/releases/download/v1.0.10-dev.20260918/release-v1.0.10-dev.20260918.md

v1.0.11:选择并删除整套机器配置

输入 oo → 10 → 选择机器配置编号 → 7 删除当前机器配置及全部子节点 → 输入 YES。仅将所选机器配置及其全部本机子节点目录移入回收站,保留面板记录和其他机器配置;共享 Nginx 配置不作清除。主菜单 13 可恢复。新增共享凭据和目录引用保护。删除及升级会重启共享节点进程,其他实例可能短暂重连。

升级完整程序与菜单:

curl -fL https://node.xboardnext.com/oo/dev/install.sh -o /tmp/oo-install.sh && sudo bash /tmp/oo-install.sh upgrade --version v1.0.16-dev.20260925

管理菜单版本:2026.09.18.5。

https://node.xboardnext.com/oo/releases/download/v1.0.11-dev.20260918/release-v1.0.11-dev.20260918.md

v1.0.13:插件自动识别中转节点

面板安装并启用 OoRelayMetadata 1.0.0,正确设置中转父节点。新版 oo 根据 parent_id 跳过中转入口的本机监听,不删除面板记录;初次启动、定时刷新和 WebSocket 更新均支持。插件接口 404 时兼容旧接口,其他错误明确报错。原有手动停用策略保留。

插件下载:[OoRelayMetadata 1.0.0](https://node.xboardnext.com/oo/releases/download/v1.0.13-dev.20260920/OoRelayMetadata-1.0.0.zip)

升级节点(会重启共享节点进程,连接短暂中断):

curl -fL https://node.xboardnext.com/oo/dev/install.sh -o /tmp/oo-install.sh && sudo bash /tmp/oo-install.sh upgrade --version v1.0.16-dev.20260925

升级后运行 `oo version` 和 `oo nodes list`。插件生效后,新机器安装无需手填中转 ID;未安装插件仍可使用 --relay-nodes。