Files

infra/cloud-init —— 节点一段式安装

加速节点开机即用所需的全部物料。控制面(或 #14 弹性开机)在创建节点前,用 sed 把模板里的 __PLACEHOLDER__ 替换成真实值(沿用 deploy/ 渲染约定),再作为 user-data 注入。

文件

  • node.yaml.tmpl —— cloud-config 模板。写入 /etc/pangolin-agent/agent.env (含一次性 bootstrap token0600),下载并按 SHA-256 校验 install-node.sh 后执行。
  • install-node.sh —— 幂等安装脚本:下载锁定版本的 sing-box + pangolin-agent 二进制并校验 SHA-256,装 systemd 单元(agent 拉管 sing-box),生成 Hy2 自签证书, 启动 agent(首启即 Enroll/Register)。shellcheck -S warning 通过。

占位符

占位符 含义
__CONTROL_PLANE__ 控制面 gRPC 地址 host:port
__SERVER_NAME__ 校验控制面证书的 TLS SNI(留空取 host
__BOOTSTRAP_TOKEN__ 一次性引导 tokenmtls.BootstrapTokenManager15min TTL
__DERIVE_KEY__ Hy2 口令派生密钥(与控制面同源,见 agentd.DeriveHy2Password
__AGENT_VERSION__ agent 版本(与产物命名 + SHA 一致)
__SINGBOX_VERSION__ / __SINGBOX_SHA256__ sing-box 版本与校验和
__AGENT_SHA256__ agent 二进制校验和
__ARTIFACT_BASE__ 二进制 + 安装脚本下载根 URL
__INSTALL_SHA256__ install-node.sh 自身的 SHA-256(防篡改)

可复现性

版本与 SHA-256 全部锁定:install-node.sh 顶部的版本/校验和占位符由发布流水线渲染 为固定值并随产物一起发布;cloud-init 下载脚本后先校验脚本 SHA-256 再执行,脚本再逐个 校验二进制 SHA-256。任何一环不匹配即 set -e 中止,保证整链可复现、不可被中间人替换。

无状态红线

节点除 /etc/pangolin-agent/{node.key,node.crt,ca.crt,state.json}/etc/sing-box 外不落任何持久数据;state.json 仅含 dp_uuid + expires_at,无任何账号/设备/目的地址/ DNS 信息,亦无访问日志(见 doc/04 §2doc/06 §3)。