www_site/docs/cms-admin-recovery.md

41 lines
2.0 KiB
Markdown
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.

# 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`