# 同一机器 ID 的多个 Trojan 节点

适用于一个机器实例下绑定多个面板节点，每个节点有独立的域名和内部监听端口，多个域名共用一个外部端口（默认 443）。不需要为第二个节点创建第二个机器实例。

## 配置前提

- 面板内两个节点都绑定同一机器 ID；域名分别解析至节点服务器。
- 内部监听端口不同，例如 10443、10444；不得与 Nginx 外部端口、健康端口或证书续期端口冲突。
- 面板提供各节点的证书配置/域名，SNI 与证书域名保持一致。不能用面板 URL 代替节点域名。
- 自动 HTTP 证书验证需要公网 80 可达；不同节点使用不同本地验证端口，自动从 18080 开始选取。手动证书和 DNS 证书继续使用面板各节点配置。
- 先升级配套的 xbctl、xboard-node 和脚本；旧版程序不会读取新增加的节点级路由状态。

## 安装及新增节点

新版 easy-install 机器模式读取该机器下的全部 Trojan 节点，按面板域名/内部端口批量配置。--domain 用于安装时主域名预检和回落网站，不再用于覆盖所有节点的域名。--listen-port 指定外部端口。

已经安装后新增节点：输入 oo，菜单 10 → 选择机器实例 → 6 同步该机器的 Trojan 域名分流。先显示预览，输入 YES 才会写入并重启共享节点进程。无需重复执行安装和更换机器 ID。

亦可使用：

```sh
sudo oo nginx machine-sync --instance YOUR_INSTANCE_ID
sudo oo nginx machine-sync --instance YOUR_INSTANCE_ID --apply
```

非 443 可首次指定 --listen 9443，后续未指定时保留已存的端口组。

菜单列出节点 ID、域名、对外端口、内部端口、本机状态；顶层还显示本机 Nginx 的域名分流。配置记录不等于真实连通性。

## 安全与边界

新增节点后需要主动同步一次，不是后台自动改写 Nginx。同步仅处理选中机器的 Trojan，不修改其他协议或面板数据。域名/端口重复、旧节点改名/换端口/移除、现有 HTTP 验证规则冲突都会中止，要求先确认迁移，不会悄悄覆盖旧映射。

新配置经 nginx -t 检查；失败恢复文件。备份保存在 /root/oo-machine-nginx-backup.*，节点本地状态在该实例目录 machine-nginx.json。有效证书保留在各自 node-ID/certs 目录。证书申请异步进行，命令成功表示配置及服务重启已提交，需看日志确认证书和节点启动完成。

同步会短暂停止再启动共享 xboard-node 进程，同机其他实例会短暂重连。失败后尝试恢复进程；若系统服务本身启动失败，需要查看原始日志。
