feat(config): 涉密内容外置到配置目录(档案 140)

把散落在代码里的真实部署值统一收进 config/,代码改为引用配置,
使仓库副本/开源导出不再带出生产域名、IP、内网路径与凭据。

新增 config/:platform.env.example(模板)· load.sh(shell 加载器)·
index.cjs(node 加载器)· README.md(键一览与优先级)。
真实值放 config/platform.env —— 已 .gitignore 排除,不入库、不进导出。

TS 侧新增 src/platform-paths.ts 作部署路径的唯一解析处(零副作用):
platformDir/stateDir/backupDir/artifactDir/installDir/scriptPath。
config.ts 接入这些字段;内置中继种子由生产 URL 改为空(改由
DSHS_OVERLAY_BOOTSTRAP_SEEDS 提供)。修掉 5 处硬编码绝对路径,
src/** 注释中性化 116 行/53 文件。

scripts/** 36 个内部运维脚本:真令牌/PG 口令/隧道目标/主机号/路径
一律改从配置取;web/wake.html 的注册域白名单改为运行时从
location.hostname 推导;test/** 夹具 119 行/13 文件改 RFC 2606/5737
保留值,并把「内置种子必须为空」固化为回归断言。

取证:tsc 0 错;npm test 373/375(唯一失败 lease 属既有);
全仓扫描(大小写不敏感)代码面涉密标识 = 0;已部署 47 并零回归
(/opt/dsh/* 未搬家,/var/lib/dshs/platform 未被误建)。
This commit is contained in:
admin committed 2026-09-19 15:12:19 +08:00
1 parent 9c2e7975ac
commit 452924d89c
100 files changed
+1167 -453

No files matched your search

+5 -4
View File
@@ -1,8 +1,9 @@
#!/usr/bin/env bash
. "$(cd "$(dirname "$0")/.." && pwd)/config/load.sh"
#
# bootstrap-worker.sh —— 把一台机器拉到「可承接实例的集群节点」状态
#
# 立稿 2026-09-16。起因:把 guest 从 w-47 迁到 w-106 时,节点侧缺的东西全是**手工**补的
# 立稿 2026-09-16。起因:把 guest 从 <host-a> 迁到 <host-b> 时,节点侧缺的东西全是**手工**补的
# (装 dsh、传 runtime、改目录权限、useradd)—— 用户明确要求「该谁处理就让对应功能处理」。
# 本脚本就是那个「功能」:**幂等**、可重复执行、只做正向补齐。
#
@@ -10,7 +11,7 @@
# 1. dsh 主程序 —— 缺则按指定版本从 npm 装(内网/镜像优先)
# 2. dsh-runtime —— jq / rg / ffmpeg / ffprobe 走本机包管理(**不要从别的机器搬**)
# python 见 §3 的「运行时路径契约」
# 3. 数据根与权限 —— /var/lib/dshs 711、users 711(**漏了会让实例必崩,且不报权限错**)
# 3. 数据根与权限 —— <data-root> 711、users 711(**漏了会让实例必崩,且不报权限错**)
# 4. 旧角色残留 —— 可选(--prune-legacy)
# 5. 自检 —— 四件套 + 权限 + 端口 + 数据根,任一项失败 ⇒ 退出码非 0
#
@@ -21,13 +22,13 @@
#
# 环境变量:
# DSH_VERSION 要安装的 @deepseek-ai/dsh 版本(默认 0.1.5-rc.1,须与 Manager 一致)
# DSHS_DATA_ROOT 数据根(默认 /var/lib/dshs)
# DSHS_DATA_ROOT 数据根(默认 <data-root>)
# DSHS_RUNTIME_DIR 运行时目录(默认 /usr/local/dsh-runtime)
#
set -uo pipefail
DSH_VERSION="${DSH_VERSION:-0.1.5-rc.1}"
DATA_ROOT="${DSHS_DATA_ROOT:-/var/lib/dshs}"
DATA_ROOT="${DSHS_DATA_ROOT:-"$DSHS_DATA_ROOT"}"
RUNTIME_DIR="${DSHS_RUNTIME_DIR:-/usr/local/dsh-runtime}"
CHECK_ONLY=0
PRUNE_LEGACY=0