项目地址:GPT-Load (求star)
升级说明
安全最重要,所以v1.1版本进行了安全加固,强烈建议升级。主要改动如下:
- 系统会自动进行安全检查,并在首页给出提醒,建议大家根据提示提升安全相关配置。
- 增加了密钥加密功能,数据库泄露也不怕。可以通过环境配置
ENCRYPTION_KEY启用(下文有详细介绍)。 - 请求头安全增强。
- cors安全头更严格。默认关闭cors,并且ALLOWED_ORIGINS也不再有默认值。如需此功能,需要自己手动配置ENABLE_CORS=true以开启,并且需要配置ALLOWED_ORIGINS指定允许的域列表。
- 取消密钥长度限制,超长密钥福音!
- 密钥大小写敏感,sk-abc和sk-abC判定为两个不同的密钥。
- 前端UI暗黑模式,晚上再也不会被GPT-Load的管理端闪瞎了。
- 官网也增加了暗黑模式,实在是太贴心了我。
暗黑模式效果展示。
本次升级考虑到使用中的用户,所以没有破坏性更新,强制要求强安全设置。但也建议佬友们自行提高安全措施。
密钥加密
可以通过配置 ENCRYPTION_KEY 开启密钥。
注意:在配置密钥加密之前,一定要备份好数据(或者导出密钥),避免意外导致的密钥丢失!!!
请一定做好备份!!!做好备份!!!
密钥默认是明文存储在数据库中的,按下列方式使用密钥迁移命令来对密钥进行加密存储。
命令说明:
gpt-load migrate-keys --from [旧密码] --to [新密码]
如果是docker部署方式,这样执行命令:
docker compose run --rm gpt-load migrate-keys --from [旧密码] --to [新密码]
如果是源码部署,这样执行命令:
make migrate-keys ARGS="--from [旧密码] --to [新密码]"
使用场景:
启用加密:gpt-load migrate-keys --to [新密码]
禁用加密:gpt-load migrate-keys --from [旧密码]
修改加密:gpt-load migrate-keys --from [旧密码] --to [新密码]
操作步骤:
下面安装docker部署的方式来说明。
# 1. 更新镜像(确保使用最新版本)
docker compose pull
# 2. 停止服务
docker compose down
# 3. 备份数据
# 执行迁移前,必须手动备份数据库或者导出你的密钥,避免因操作或者异常导致的密钥丢失。
# 4. 执行迁移命令
# 启用加密(your-32-char-secret-key 为你的密钥,建议使用32位以上的随机字符串)
docker compose run --rm gpt-load migrate-keys --to "your-32-char-secret-key"
# 如果要禁用,使用这个命令
# docker compose run --rm gpt-load migrate-keys --from "your-current-key"
# 如果要修改密码,用这个命令
# docker compose run --rm gpt-load migrate-keys --from "old-key" --to "new-32-char-secret-key"
# 5. 更新配置文件
# 编辑 .env 文件,设置 ENCRYPTION_KEY 与 --to 参数一致
# 如果禁用加密,则删除 ENCRYPTION_KEY 或设置为空
# 6. 启动服务
docker compose up -d
一定要记住或者保存好加密密码,一旦加密密钥丢失了,数据库里的密钥就无法解析,也找不回来了!!!
一定要保存好加密密码!!!一定要保存好加密密码!!!一定要保存好加密密码!!!
以上就是密钥加密的全部流程了,加密的密码一定要强密码,建议32位以上的随机。可以使用命令 openssl rand -base64 32 | tr -d "=+/" | cut -c1-32 来方便生成密码。
已有密钥数据需要按照以上步骤进行加密。如果新部署则直接配置好密码启动服务就行,后续添加密钥会自动加密。
如果进行了密钥加密迁移操作,日志里面的历史数据密钥会无法显示,暂时没必要对日志进行迁移,所以请忽略。
如果无法执行迁移命令
也许有些环境或者云平台不能进入容器,或者无法执行命令,那么操作方式就只能把所有密钥导出,改了加密密码后再重新添加。虽然麻烦,但是还好只需要操作一次。
- 从GPT-Load后台手动导出所有密钥
- 配置ENCRYPTION_KEY,并重启
- 手动添加密钥
网络安全
使用GPT-Load的过程中,请务必注意安全防护,不要公网裸奔,不要使用弱密码甚至默认密码。
项目的措施只是一部分,自身的安全防护才最重要。
更多安全配置说明,请查看官方文档:
常见问题
升级后反馈会出现以下两个情况:
- 新服务无法运行报错:
CORS is enabled but ALLOWED_ORIGINS is not set
解决:添加环境配置:ALLOWED_ORIGINS=* 。或者关闭cors: ENABLE_CORS=false 二选一。
- 启动成功,但是前端无法访问。
大概率是数据迁移中,如果数据量大可能需要等的时间久一点。可以看一下gpt-load的启动日志,是否sql语句一直在更新。

