更新日期:2026-10-31。install 专用于全新客户环境,start/restart/stop 用于日常运行,configure --existing 用于关联已有项目。不要对已有业务库重新执行安装来修复启动问题。
应生成哪些材料
| 材料 | 用途与生成位置 | 交付方式 |
|---|---|---|
| 平台 Ed25519 私钥 | 每个新安装独立随机生成;签署平台证据,并派生结果存储加密密钥 | 只保存在客户服务器/持久卷内,独立加密备份,不放进镜像或代码包 |
平台公钥 platform.pub | 从本次平台私钥导出,用于验证平台证据 | 通过独立可信渠道交给核验方;公钥可以交付,不能从待验证证据包自行建立信任 |
初始管理员密码 bootstrap-password | 每次安装独立随机生成,至少48个URL安全字符 | 写入客户私有目录,不打印到终端;交给指定管理员后修改登录密码 |
| 数据库管理/业务密码 | Docker新安装分别随机生成,两类账号权限分离 | 保存在客户私有目录;平台容器只读取业务连接文件 |
| 企业连接器私钥 | 各企业节点自行运行连接器初始化生成 | 企业侧保管,平台只登记其公钥;不共用平台私钥 |
| HTTPS证书 | 内置Caddy根据正式域名申请,或由客户已有网关提供 | 与平台签名密钥不同,需域名、端口和实际TLS验收 |
不能把开发环境 .runtime、演示账号密码、平台私钥、企业连接器私钥一起复制给所有客户。代码与镜像中不携带这些安装秘密。平台生成的是实际随机Ed25519密钥,不是一个大家共用的默认口令或固定示例密钥。
Docker:推荐的新客户安装路径
服务器需要可用Docker Engine、Compose v2和Python 3.9+。在客户部署目录执行:
./run.sh docker install --email admin@your-company.com --origin https://data.your-company.com
./run.sh docker status
这个流程依次检查已有容器/数据卷、生成缺失秘密、构建镜像、启动数据库、验证空库、生成平台密钥和管理员、导出公钥,最后启动平台及Caddy并等待健康检查。不会先启动一个未经初始化的平台来生成无法追踪的默认账号。
- 默认启用同域名的内置Caddy。正确解析域名并开放80/443;真实证书签发仍需从外部验证。
- 已有客户网关可加
--external-proxy,保留HTTPSorigin,由网关转发到宿主机回环端口。 - 若8090被占用,加
--http-port 8110,不会停止旧实例。 - 已拿到本版镜像的客户可设置公开的
DATANOUS_IMAGE,并加--skip-build;镜像必须支持本版安装契约。不要把不明旧版镜像当作兼容版本。 - 单主机默认Compose项目名固定为
datanous。发现已有该项目容器或卷时拒绝新安装;未提供多项目同主机自动分配方案。
公开配置在 .runtime/deploy/compose.env。初始密码在 .runtime/deploy/bootstrap-password,公钥在 .runtime/deploy/platform.pub,安装进度在 .runtime/deploy/install.json。秘密目录权限0700;绑定给非root容器的数据库秘密为只读0444,宿主其他普通用户不能穿过父目录访问。安装日志、安装记录和导出公钥保存在该私有目录。
**平台私钥位于 datanous_platform_state 持久卷的 /app/state/platform.key**,不会打印,也不会自动复制到客户操作员电脑。交付前按客户密钥备份制度单独导出并加密保管该文件,同时备份数据库和部署秘密目录。仅备份镜像不能恢复历史加密结果。
本地/原生部署:客户已有独立 PostgreSQL
先为客户创建专用空数据库,准备权限0600的数据库URL文件,内容是一行完整PostgreSQL连接串。初始化需业务库创建对象/迁移权限,不自动安装宿主PostgreSQL,也不接管已有库。
./run.sh build
./run.sh install --email admin@your-company.com --database-url-file /secure/customer-postgres-url
./run.sh start
需要其他端口时,安装时加 --listen 127.0.0.1:8110;HTTP来源默认与监听端口一致。安装前不要先执行普通 configure;已有配置会被视为既有实例而拒绝覆盖。
原生模式的私钥、公钥、初始密码和安装记录分别位于:
.runtime/launcher/platform.key
.runtime/launcher/platform.pub
.runtime/launcher/bootstrap-password
.runtime/launcher/install.json
均放在0700的私有目录内;私钥、口令和配置文件为0600。数据库连接文件继续由客户保管,安装配置仅引用路径,不复制连接口令。安装会生成同版启动配置,随后用日常启停命令管理。
重复执行、失败恢复与已有客户
安装在数据库迁移锁内检查业务数据库是否为空;非空时先拒绝,尚不生成替代平台私钥。init -fresh-install 同样拒绝已有密钥路径。普通 init 保留为人工管理入口,不是自动重装命令。
安装记录/配置/密钥或既有Docker卷存在时,不覆盖、不删除、不自动清空数据库。安装成功后不再运行install,直接使用start。Docker初始化已完成但启动/TLS检查失败时,记录状态为 initialized_start_pending,应修复环境后使用 docker start。
若在构建、迁移、密钥写入或管理员初始化之间中断,保留秘密及记录,由运维先核对 install.log、数据库和原密钥,再从相应阶段人工恢复。本版没有提供任意中断点的一键自动续装;不要删除安装记录/密钥或数据卷来强制重装,也不要生成新密钥代替旧密钥。
已有客户升级使用备份、迁移与发布流程;遗失平台私钥不是重新install能修复的问题。各企业连接器和浏览器签名设备仍按各自登记流程建立身份,不由服务器安装器代签。
本轮验证
已用全新私有PostgreSQL及真实平台验证安装、生成密钥与公钥对应、两个独立客户密钥不同、重复安装拒绝,以及非空数据库在生成替代密钥前被拒绝。原项目8090及schema6保持原版本运行。
Docker安装顺序和已有卷拒绝已做组件测试,CI已加入新安装流程;当前开发机无可用Docker Engine,真实容器卷权限、镜像实跑、TLS签发及远端CI仍待目标环境验证,不据此宣称正式部署已验收。
相关:快速启动与Docker部署、本轮验证记录。