把散落在代码里的真实部署值统一收进 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 未被误建)。
68 lines
2.7 KiB
Bash
68 lines
2.7 KiB
Bash
# ============================================================================
|
||
# DSH 平台 — 部署配置模板
|
||
# ----------------------------------------------------------------------------
|
||
# 用法:cp config/platform.env.example config/platform.env → 按本机实际填写
|
||
# · platform.env 已被 .gitignore 排除,**不会入库、不会进入开源导出**
|
||
# · 代码里不含任何真实部署值;所有部署相关的值都从本文件(或同名 env)读取
|
||
# · 也可以用系统级 env 覆盖(systemd drop-in / /etc/dshs.env),优先级见 config/README.md
|
||
# ============================================================================
|
||
|
||
# --- 数据根:每用户 home / ws / 平台库 都在这下面 -------------------------
|
||
DSHS_DATA_ROOT=/var/lib/dshs
|
||
|
||
# --- 平台私有目录的父目录:其下放 state / backups / artifacts -------------
|
||
# 代码里的 stateDir / backupDir / artifactDir 都由它派生,见 src/config.ts
|
||
DSH_PLATFORM_DIR=/opt/dsh
|
||
|
||
# --- 代码安装根(lib/ 与 scripts/ 所在)----------------------------------
|
||
DSH_INSTALL_DIR=/opt/dshs
|
||
|
||
# --- 对外域名 -------------------------------------------------------------
|
||
DSHS_BASE_DOMAIN=example.com
|
||
DSHS_COOKIE_DOMAIN=.example.com
|
||
|
||
# --- 监听端口 / 隔离方式 --------------------------------------------------
|
||
DSHS_PORT=3080
|
||
DSHS_ISOLATION_MODE=account
|
||
DSHS_BASE_UID=100000
|
||
|
||
# --- 部署形态:local | cluster | k8s --------------------------------------
|
||
DSHS_DEPLOY_MODE=local
|
||
DSHS_CLUSTER_HOST_ID=<host-id>
|
||
DSHS_CLUSTER_INSTANCE_HOST=127.0.0.1
|
||
DSHS_CLUSTER_WORKER_DATA_ROOT=/var/lib/dshs
|
||
|
||
# --- 覆盖网络引导种子(逗号分隔;留空 = 功能关闭)------------------------
|
||
DSHS_OVERLAY_BOOTSTRAP_SEEDS=
|
||
|
||
# --- 本机地址(出网护栏脚本用;填自己的公网/内网地址)--------------------
|
||
DSH_HOST_PUBLIC_IP=<server-public-ip>
|
||
DSH_HOST_LAN_IP=<host-lan-ip>
|
||
|
||
# --- 控制面 PG(cluster 形态用)-------------------------------------------
|
||
DSHS_PG_HOST=127.0.0.1
|
||
DSHS_PG_PORT=<pg-port>
|
||
DSHS_PG_USER=dshs
|
||
DSHS_PG_DB=dshs
|
||
DSHS_PG_PASSWORD=<pg-password>
|
||
DSH_PG_DATA_DIR=/var/lib/dsh-pg
|
||
|
||
# --- Worker 注册凭据(cluster 形态必填)----------------------------------
|
||
DSHS_CLUSTER_AGENT_TOKEN=<worker-token>
|
||
|
||
# --- 反向隧道目标(可选;留空 = 隧道关闭)--------------------------------
|
||
# 形如 root@<host>:<port> 或 ssh://root@<host>:<port>
|
||
DSHS_TUNNEL_TARGET=
|
||
|
||
# --- 平台库连接(cluster 形态用 PG;local 形态留空走 SQLite)-------------
|
||
DSHS_DB_URL=
|
||
|
||
# --- 注册验证外发(留空 = 该能力关闭)-----------------------------------
|
||
DSHS_MAIL_DRIVER=
|
||
DSHS_MAIL_API_KEY=
|
||
DSHS_MAIL_FROM=
|
||
DSHS_MAIL_FROM_NAME=
|
||
DSHS_TURNSTILE_SITE_KEY=
|
||
DSHS_TURNSTILE_SECRET=
|
||
DSHS_TURNSTILE_HOSTNAMES=
|