Skip to content

管理员初始化与恢复 ​

建表完成后还需创建账号,站点没有默认管理员密码。ADMIN_USERNAMES 只预留注册用户名。

Actions 首次初始化 ​

在 Repository Secrets 成对配置 EDGECHAT_ADMIN_USERNAME 和 EDGECHAT_ADMIN_PASSWORD,重新运行 00 Deploy Worker。漏配后补齐即可,沿用现有数据库。

EDGECHAT_ADMIN_DISPLAY_NAME 可选。旧 CFCHAT_ADMIN_* 名称仍兼容,新名称优先。已有有效超管时,后续更新可以省略初始化凭据。

初始化仅创建不存在的账号。已有账号改密码在站内完成;修改 GitHub Secret 不会重置密码。

手动初始化 ​

先按D1 迁移完成 schema 和验证,再在项目根目录使用 Node.js 24 执行 npm ci。确认 wrangler.toml 中 DB 是本站数据库,并在终端设置自己的 CLOUDFLARE_API_TOKEN 和 CLOUDFLARE_ACCOUNT_ID。

PowerShell ​

powershell
$env:EDGECHAT_ADMIN_USERNAME = 'admin'
$env:EDGECHAT_ADMIN_PASSWORD = [System.Net.NetworkCredential]::new('', (Read-Host '设置管理员密码' -AsSecureString)).Password
npm run admin:bootstrap
$bootstrapExit = $LASTEXITCODE
Remove-Item Env:EDGECHAT_ADMIN_PASSWORD
if ($bootstrapExit -ne 0) { throw '管理员 SQL 生成失败' }
npx wrangler d1 execute DB --remote --config wrangler.toml --file .tmp/edgechat-admin-upsert.sql

Bash / macOS / Linux ​

bash
export EDGECHAT_ADMIN_USERNAME=admin
read -r -s -p 'Set administrator password: ' EDGECHAT_ADMIN_PASSWORD
export EDGECHAT_ADMIN_PASSWORD
if npm run admin:bootstrap; then
  unset EDGECHAT_ADMIN_PASSWORD
  npx wrangler d1 execute DB --remote --config wrangler.toml --file .tmp/edgechat-admin-upsert.sql
else
  unset EDGECHAT_ADMIN_PASSWORD
fi

admin:bootstrap 生成的 SQL 只含密码盐和哈希。应用成功后,已部署站点即可登录;本地开发将 --remote 改为 --local。执行完可删除临时 SQL。

恢复已有超级管理员 ​

适用于忘记密码、同名账号已存在或站点没有有效超管的情况。先备份 D1,再按仓库显式恢复步骤操作:

  1. 确定要恢复的本地用户 ID。
  2. 在终端环境设置 EDGECHAT_RECOVER_USER_ID 和 EDGECHAT_RECOVER_PASSWORD。
  3. 执行 node .github/scripts/generate-admin-recovery-sql.mjs --confirm-super-admin-recovery。
  4. 核对生成的 SQL 和数据库目标,再按恢复说明应用。

恢复会重设该账号密码、失效旧会话并记录审计,属于一次性人工操作。

基于 Cloudflare 构建 · 为自主部署而设计