diff --git a/README.md b/README.md index ca139d9..765707c 100644 --- a/README.md +++ b/README.md @@ -125,6 +125,42 @@ ssh -i /path/to/key root@your-server-ip --- +### 3. 配置加密密钥(重要!) + +系统使用 Fernet 对称加密保护用户账号密码。**首次部署或迁移时必须正确配置加密密钥!** + +#### 方式一:使用 .env 文件(推荐) + +在项目根目录创建 `.env` 文件: + +```bash +cd /www/wwwroot/zsgpt2 + +# 生成随机密钥 +python3 -c "from cryptography.fernet import Fernet; print(f'ENCRYPTION_KEY_RAW={Fernet.generate_key().decode()}')" > .env + +# 设置权限(仅 root 可读) +chmod 600 .env +``` + +#### 方式二:已有密钥迁移 + +如果从其他服务器迁移,需要复制原有的密钥: + +```bash +# 从旧服务器复制 .env 文件 +scp root@old-server:/www/wwwroot/zsgpt2/.env /www/wwwroot/zsgpt2/ +``` + +#### ⚠️ 重要警告 + +- **密钥丢失 = 所有加密密码无法解密**,必须重新录入所有账号密码 +- `.env` 文件已在 `.gitignore` 中,不会被提交到 Git +- 建议将密钥备份到安全的地方(如密码管理器) +- 系统启动时会检测密钥,如果密钥丢失但存在加密数据,将拒绝启动并报错 + +--- + ## 快速部署 ### 步骤1: 上传项目文件 @@ -662,6 +698,8 @@ docker logs knowledge-automation-multiuser | grep "数据库" | 变量名 | 说明 | 默认值 | |--------|------|--------| +| ENCRYPTION_KEY_RAW | 加密密钥(Fernet格式,优先级最高) | 从 .env 文件读取 | +| ENCRYPTION_KEY | 加密密钥(会通过PBKDF2派生) | - | | TZ | 时区 | Asia/Shanghai | | PYTHONUNBUFFERED | Python输出缓冲 | 1 | | WKHTMLTOIMAGE_PATH | wkhtmltoimage 可执行文件路径 | 自动探测 |