feat: add file-based admin settings panel at /admin

Settings saved in the panel are written to data/settings.json and
overlaid onto process.env, taking precedence over environment
variables and applying immediately without restart. Enable by setting
ADMIN_PASSWORD; on serverless platforms without persistent disk the
panel degrades to read-only.
This commit is contained in:
dayuan.jiang
2026-06-10 20:41:17 +09:00
parent 54ff8d982c
commit e2e499e5c7
12 changed files with 1928 additions and 1 deletions

View File

@@ -222,6 +222,23 @@ npm run dev
注意:`claude` 系列已在带有 AWS、Azure、GCP 等云架构 Logo 的 draw.io 图表上进行训练,因此如果您想创建云架构图,这是最佳选择。
### 管理面板
无需手动编辑 `.env`,您可以在 Web 管理面板中管理大部分服务端设置(提供商密钥、模型行为、访问码、配额、功能开关):
1. 设置 `ADMIN_PASSWORD` 环境变量(不设置则面板禁用)。
2. 访问 `/admin` 并登录。
3. 保存的设置会写入 `data/settings.json` 并立即生效,无需重启(少数设置如 Langfuse 和 DynamoDB 标记为"需要重启")。
优先级:面板中保存的设置覆盖环境变量,环境变量覆盖内置默认值。删除已保存的值会回退到环境变量。
注意事项:
- 密钥以明文形式存储在 `data/settings.json` 中(文件权限 600请妥善保管该文件。
- 在无服务器平台Vercel、Cloudflare Workers上没有持久化磁盘面板为只读 — 请改用环境变量配置。
- 使用 Docker 时,`data/` 目录通过 `docker-compose.yml` 中的卷持久化。
- `NEXT_PUBLIC_*` 变量在构建时固化,无法在面板中修改。
## 工作原理