41 lines
2.0 KiB
Markdown
41 lines
2.0 KiB
Markdown
# CMS 管理员恢复说明
|
||
|
||
本文档记录在 CMS 管理员密码丢失或 CMS 数据库需重建时的受控恢复步骤,
|
||
不包含任何真实凭据。所有凭据只在服务器上由 root 可读的秘密文件中管理。
|
||
|
||
## 管理员凭据存放位置
|
||
|
||
- /etc/kaotings/cms-admin.secrets(权限 0600,仅 root 可读)
|
||
- CMS_ADMIN_EMAIL:管理员邮箱
|
||
- CMS_ADMIN_PASSWORD:管理员密码
|
||
- CMS_ADMIN_NAME:展示名
|
||
|
||
该文件不在 Git 仓库或任何文档中,仅存在于服务器。
|
||
|
||
## 一次性初始化 Seed(已下线)
|
||
|
||
P4-02 曾提供一次性受控路由 `apps/cms/src/app/api/seed-admin/route.ts`,
|
||
该路由以 `x-cms-seed-token` 守卫,且只在 users 集合为空时创建管理员。
|
||
完成初始化后该路由已移除,初始化令牌 `CMS_SEED_TOKEN` 已从秘密文件中撤销。
|
||
|
||
## 密码重置 / 重新初始化流程
|
||
|
||
CMS 密码需重置时,使用 Payload 的本地脚本方式在服务器重建管理员,不要在
|
||
运行中的 web 端之外暴露任何管理接口。推荐做法:
|
||
|
||
1. 以 root 写入临时脚本到 `apps/cms` 构建目录的一个临时目录(不提交 Git)。
|
||
2. 脚本用 `getPayload({ config })` 查询用户,重置 `password` 字段或按需更新。
|
||
3. 运行完成后立即删除临时脚本和临时目录。
|
||
4. 重启 `kaotings-cms` 服务确认可用。
|
||
|
||
注意:`getPayload` 的独立运行依赖 Payload 的 Next 集成。若脚本无法独立连接,
|
||
可改用 Payload 管理员面板的“忘记密码”邮件流程;该流程依赖邮件适配器,
|
||
当前 CMS 未配置邮件适配器(按 DEFAULTS 写入控制台),因此未配置 SMTP 前
|
||
应使用受控的本地脚本方式,并确保只在服务器本地执行、完成后删除脚本。
|
||
|
||
## 安全边界
|
||
|
||
- 任何恢复操作都不应在浏览器端或日志中输出密码、令牌或完整用户文本。
|
||
- 恢复脚本只允许在 CMS 服务器本地、以 root 身份临时运行并即时清理。
|
||
- CMS 数据库迁移和重建见 `docs/phase-4-report.md` 与 `infra/scripts/provision-cms-db.sh`。
|