ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

Chatbox 团队共享:用 Docker + Caddy 把同一个 OpenAI API 密钥安全共享给全团队

Chatbox 团队共享:用 Docker + Caddy 把同一个 OpenAI API 密钥安全共享给全团队 Chatbox 团队共享用 Docker Caddy 把同一个 OpenAI API 密钥安全共享给全团队【免费下载链接】chatboxPowerful AI Client项目地址: https://gitcode.com/GitHub_Trending/ch/chatbox本篇指南基于 Chatbox 仓库中team-sharing/目录的官方教程与实现文件讲解如何在一台云服务器上用 Docker 容器化部署一个 Caddy 反向代理让团队成员共享同一个 OpenAI API 账号的资源同时 API KEY 只保存在服务器上、不出现在任何客户端。读完后你可以独立完成共享服务器选型、环境安装、HTTP/HTTPS 两种模式的启动命令配置并理解客户端API Host参数与代理转发之间的底层链路。整体原理把 KEY 留在服务器上只共享代理地址Chatbox 的团队共享方案本质上是一个“带鉴权注入的 OpenAI 反向代理”服务器端用 Caddy 反向代理把/流量转发到https://api.openai.com转发时统一把Authorization请求头替换为服务器上保存的Bearer KEY客户端团队成员在 Chatbox 设置中把API Host指向这台服务器不填写 API KEYChatbox 发出的 OpenAI 请求经代理中转后直接消耗你账号的额度。这个设计在仓库源码中可以直接验证。代理配置模板 Caddyfile 的全部内容如下HOST { reverse_proxy https://api.openai.com { header_up Host {http.reverse_proxy.upstream.hostport} header_up Authorization Bearer KEY } }其中两个尖括号占位符HOST、KEY在容器启动时会被脚本替换为真实值。容器入口脚本 main.sh 的执行逻辑若未注入环境变量HOST则默认HOST:80即监听 80 端口、走 HTTP用sed把 Caddyfile 中的HOST替换为环境变量HOST再用sed把KEY替换为环境变量KEY执行caddy run --config /etc/caddy/Caddyfile --adapter caddyfile启动代理。而 Docker 镜像由 Dockerfile 构建基础镜像为caddy:2.4.6将 Caddyfile 拷贝到/etc/caddy/Caddyfile、入口脚本放到/usr/src/www/main.sh并赋予可执行权限最终以sh -c /usr/src/www/main.sh作为ENTRYPOINT。这也解释了为什么运行命令只需传入HOST和KEY两个环境变量即可所有模板渲染都在容器启动时自动完成。客户端侧API Host 为什么能直接替代 API KEY理解了代理侧再看客户端如何配合。Chatbox 的 OpenAI 模型实现 openai.ts 中请求 URL 由apiHost与apiPath默认/v1/chat/completions拼接而成const apiPath this.options.apiPath || /v1/chat/completions const response await this.post( ${this.options.apiHost}${apiPath}, this.getHeaders(), requestBody, signal )构造函数中若apiHost为空会回退到默认值if (this.options.apiHost this.options.apiHost.trim().length 0) { this.options.apiHost https://api.openai.com }该默认值也与 defaults.ts 中settings()的apiHost: https://api.openai.com一致。设置界面由 OpenAISetting.tsx 渲染包含api key密码输入框与api host两个字段并对输入值做 trim、自动补https://前缀等处理onValueChange{(value) { value value.trim() if (value.length 4 !value.startsWith(http)) { value https:// value } setSettingsEdit({ ...settingsEdit, apiHost: value }) }}因此团队共享的工作流是把apiHost改成http://服务器IP:80或https://你的域名KEY 可以留空。请求链路为Chatbox 客户端 --POST /v1/chat/completions-- Caddy 代理服务器 --注入 Authorization-- api.openai.com需要注意代理只是“换了一个出口并注入统一 KEY”它并不做账号隔离或用量分账所有成员消耗的都是同一个 OpenAI 账号的额度与配额模型侧的限流由 OpenAI 按该 KEY 的并发/TPM 限制执行。第一步准备一台服务器你可以在 AWS、Google Cloud、DigitalOcean、或腾讯云海外等云平台上启动一台云服务器英文文档额外列出了 Vultr、Oracle Cloud。关键前提是服务器的网络环境必须可以正常访问openai.com否则代理无法完成转发。第二步安装 Docker 环境登录服务器后执行官方安装脚本安装 Dockercurl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh安装完成即可使用docker命令无需在服务器上手动安装 Caddy——Caddy 已经打包在bensdocker/chatbox-team镜像里。第三步启动共享服务器HTTP 模式操作步骤将下面命令中的YOUR_OPENAI_KEY替换成你的 OpenAI API KEY执行命令启动容器docker run -p 80:80 -p 443:443 \ -v ./caddy_config:/config -v ./caddy_data:/data \ -e KEYYOUR_OPENAI_KEY \ bensdocker/chatbox-team实际示例docker run -p 80:80 -p 443:443 \ -v ./caddy_config:/config -v ./caddy_data:/data \ -e KEYsk-xxxxxxxxxxxxxxxxxxx \ bensdocker/chatbox-team各参数含义参数作用-p 80:80 -p 443:443同时映射 HTTP 与 HTTPS 端口便于后续无缝切换为 HTTPS 模式-v ./caddy_config:/config持久化 Caddy 配置HTTPS 模式下包含自动签发的证书-v ./caddy_data:/data持久化 Caddy 运行时数据-e KEYYOUR_OPENAI_KEY注入唯一的 OpenAI API KEY容器启动时由main.sh写入 Caddyfilebensdocker/chatbox-team团队共享专用镜像即上述 Dockerfile 的产物HTTP 模式下未注入HOST变量入口脚本回退到HOST:80因此 Caddy 直接监听 80 端口。第四步启动共享服务器HTTPS 模式推荐如果你有域名推荐使用 HTTPS 启动所有对话消息在网络传输时都以密文加密隐私上更安全。Caddy 会根据HOST自动申请与续签证书这也是需要映射 443 端口并持久化/config、/data的原因。操作步骤将你的域名解析到这台服务器并等待约五分钟生效将YOUR_DOMAIN替换为你的域名将YOUR_OPENAI_KEY替换为你的 OpenAI API KEY执行命令启动docker run -p 80:80 -p 443:443 \ -v ./caddy_config:/config -v ./caddy_data:/data \ -e HOSTYOUR_DOMAIN \ -e KEYYOUR_OPENAI_KEY \ bensdocker/chatbox-team实际示例docker run -p 80:80 -p 443:443 \ -v ./caddy_config:/config -v ./caddy_data:/data \ -e HOSTproxy.chatbox.run \ -e KEYsk-xxxxxxxxxxxxxxxxxx \ bensdocker/chatbox-team与 HTTP 模式的唯一区别就是多了-e HOST你的域名它会让入口脚本把 Caddyfile 的HOST占位符替换为域名使 Caddy 以该域名提供服务并启用 TLS。第五步把地址分享给团队成员启动的是 HTTP 时地址为http://你的服务器IP:80启动的是 HTTPS 时地址为https://你的域名。把地址发给团队成员他们只需在 Chatbox 设置中把API Host填入该地址不需要填写 API KEY即可共享你的 OpenAI API 资源。官方文档附带的两张截图展示了两种模式下设置界面的填写效果部署注意事项与限制密钥安全边界KEY 只存在于服务器环境环境变量 容器内渲染后的 Caddyfile任何客户端都不会持有它但任何拿到代理地址的人都能消耗该 KEY 的额度请仅在可信团队内部分享并建议优先使用 HTTPS 模式。网络前提服务器必须能访问openai.com这是整个方案能工作的硬性前提。功能范围该代理只做 OpenAI Chat Completions 通道的转发客户端默认路径/v1/chat/completions流式 SSE 响应会原样透传镜像基于 Caddy 2.4.6属于固定版本部署。变更 KEY 的方式修改-e KEY的值后重新启动容器即可无需改动任何配置文件。如果你不熟悉服务器登录、命令行操作也可以请技术同事协助或直接参考 英文版教程内容与中文版一致并额外列出了更多可选云平台。整套方案的全部实现仅涉及 Caddyfile、main.sh、Dockerfile 三个文件逻辑简单、便于审计。【免费下载链接】chatboxPowerful AI Client项目地址: https://gitcode.com/GitHub_Trending/ch/chatbox创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表