【T佬】GPT-Load 1.1 版本发布-安全加固!!!

项目主帖: 【T佬】GPT-Load 1.0正式版发布,支持多渠道Key池轮询代理服务!

项目地址:GPT-Load (求star)


升级说明

v1.1.0 Release

安全最重要,所以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的过程中,请务必注意安全防护,不要公网裸奔,不要使用弱密码甚至默认密码。
项目的措施只是一部分,自身的安全防护才最重要。

更多安全配置说明,请查看官方文档:

常见问题

升级后反馈会出现以下两个情况:

  1. 新服务无法运行报错:CORS is enabled but ALLOWED_ORIGINS is not set

解决:添加环境配置:ALLOWED_ORIGINS=* 。或者关闭cors: ENABLE_CORS=false 二选一。

  1. 启动成功,但是前端无法访问。

大概率是数据迁移中,如果数据量大可能需要等的时间久一点。可以看一下gpt-load的启动日志,是否sql语句一直在更新。

183 个赞

牛啊 前排支持

5 个赞

前排支持

8 个赞

前排前排,支持T佬

3 个赞

前排帮顶

2 个赞

前排支持

2 个赞

前排支持

2 个赞

已经更新,不过我记得昨晚上就发了来着

2 个赞

牛啊佬,刚好最近有个新的容器平台,回头试试 :tieba_087:

1 个赞

后排支持

2 个赞

留名,t佬稳如泰山

2 个赞

牛啊,立马更新

2 个赞

牛啊 支持支持

2 个赞

前排支持

2 个赞

支持支持,太牛了!

2 个赞

T佬牛逼 :clap:t2:

1 个赞

大佬:cow_face::beer_mug:

嗯,版本是昨晚发布的,今天发帖说明一下。

2 个赞

T佬强的可怕

唐佬太牛了!