Files
dsh_shenxian/config/platform.env.example
T
admin e6207aa691
build / build-and-scan (push) Waiting to run
chore(仓库对齐): 文档库结构治理 + IM/插件线落地
文档库:目录改为编号制(01-规范/02-架构设计/03-数据库/04-调整方案/
05-交接单/06-ops/07-scripts/08-skills/09-archive),顶层散文件归入 01-规范/;
INDEX.md 与 docs-manifest.json 重刷(档案 146 篇);旧目录名引用全量对齐。

IM 线:src/im/**(SDK / hub / store / presence / ws / gateway-token)、
src/web/routes/im.ts、src/db/plugin-data/**、src/supervisor/plugin-assembly.ts
及对应 test/**。

插件线:poc/{im-agent-bridge,im-connection-gateway,im-conversation-tabs,
business-plugins-im,carbon-mcp-probe}、src/web/routes/{sessions,overlay-device}.ts、
src/net/relay/{device-grant,instance-credential}.ts。

仓库卫生:清出 40 个历史误入库 / 已改名文件(34 个交接单归档 + 6 个旧结构,
本地均有副本);dsh-server-docs/.gitignore 补 tmp/;交接单不入库(政策)。
2026-09-24 07:25:16 +08:00

97 lines
4.6 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ============================================================================
# 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_DATA_ROOT>/bundled-plugins)----
# 每个节点各自建目录:`install -d -m 0755 -o root -g root <该路径>`。
# 实例内以 `--ro-bind-try` 只读挂入;留空 = 关闭该功能。
DSHS_BUNDLED_PLUGIN_DIR=/var/lib/dshs/bundled-plugins
# --- 对外域名 -------------------------------------------------------------
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=
# --- 覆盖网络 · 设备登录接入(序㊻ S0)------------------------------------
# 在线签名者私钥(签发 per-device grant 用)。⚠️ 只读、0600;留空 = 取代码内缺省路径。
DSHS_OVERLAY_SIGNER_KEY_FILE=
# relay HMAC 密钥表(控制面签发设备时写入;relay 侧**热加载**本文件)。
# ⚠️ 与 relay 单元的 DSHS_RELAY_KEYS_FILE **必须是同一个文件**,否则签了也不生效。
DSHS_RELAY_KEYS_FILE=
# 设备 grant 租约(小时)与每用户设备上限。
DESKTOP_GRANT_TTL_HOURS=24
DESKTOP_GRANT_MAX_DEVICES=10
# --- 会话并存的每用户上限(序㊼ S1 / E3)----------------------------------
# 同一账号**同时**可持有的平台会话数上限;超限淘汰 `created_at` 最小者并落
# `audit_log: session_evicted`。留空 = 取代码内中性默认 20。
# ⚠️ 它只约束**平台会话**;设备 grant 配额是上面的 DESKTOP_GRANT_MAX_DEVICES。
DSHS_MAX_SESSIONS_PER_USER=20
# --- 服务器实例的设备凭据(序㊼ S4/S5)------------------------------------
# 实例(role=main)设备凭据的**定时续签**扫描间隔(毫秒)。控制面按此间隔扫
# `overlay_devices`(kind='instance' 且 status='active'),租约剩余不足 TTL 一半即重签。
# 留空 = 取代码内中性默认 300000(5 分钟);0 = 关闭定时续签(只剩"实例启动时检查")。
# ⚠️ 实例凭据的**文件**落在实例 home(`.overlay-device.json`),平台不留私钥副本。
# ⚠️ 与浏览器会话的 TTL(DSHS_SESSION_TTL)无关:实例常驻靠**设备租约**续签。
DSHS_INSTANCE_GRANT_RENEW_MS=300000
# --- 本机地址(出网护栏脚本用;填自己的公网/内网地址)--------------------
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=