基于docker搭建sub2api图文教程

2026-04-29 09:272阅读0评论SEO问题
  • 内容介绍
  • 相关推荐
问题描述:

本文作者:猫猫摸大鱼

1. 前言

本文隶属于 OpenClaw龙虾系列教程文章,建议按顺序阅读 ,可以访问OpenClaw龙虾系列教程文章目录 https://iloli.love/archives/1766849996690 查看其它文章,本文也可单独作为 sub2api 搭建教程文章阅读

本文基于sub2api v0.1.84版本,Github地址为 https://github.com/Wei-Shaw/sub2api

sub2api 能够将 GeminiCLI , ClaudeCode 等转换为不仅限于原客户端使用的API,从而供给OpenCode或其它客户端使用

搭建完才发现,当前版本的sub2api不能提供标准的OpenAI API,可用于OpenCode等,但我不知道能否用于OpenClaw

该项目有更多玩法,本文只赘述其中一部分,其他请自行探索

本系列教程全程使用腾讯云轻量应用服务器,可以参加腾讯云OpenClaw专属活动进行购买,新客68/年起,老客99/年起

活动链接 https://cloud.tencent.com/act/pro/lighthouse-moltbot (无AFF)

就算不买也强烈推荐使用有 快照 功能的厂商的服务器进行搭建,并且一定要经常打快照,不要问为什么,血的教训,血的教训,血的教训

1905×908 246 KB

1905×924 83.1 KB

2. 搭建

首先选择一个目录,本文中使用的是/data/sub2api

运行 mkdir -p /data/sub2api && touch /data/sub2api/compose.yaml ,创建docker compose文件

1072×344 14.6 KB

复制以下docker compose 配置(8080端口太常见容易被占用所以这里我改成了6780,可自行修改为其它端口)

services: # ================= 主程序 ================= sub2api: image: weishaw/sub2api:latest container_name: sub2api restart: unless-stopped ports: - "6780:8080" volumes: - ./data/sub2api:/app/data # 挂载到当前目录的 data/sub2api environment: - AUTO_SETUP=true # 开启自动初始化 - TZ=Asia/Shanghai # 设置时区 - SERVER_MODE=release # 运行模式 - DATABASE_HOST=postgres - DATABASE_PORT=5432 - DATABASE_USER=sub2api # 默认数据库用户 - DATABASE_PASSWORD=sub2api_password # 默认数据库密码 - DATABASE_DBNAME=sub2api # 默认数据库名 - REDIS_HOST=redis - REDIS_PORT=6379 - REDIS_PASSWORD=redis_password # 默认 Redis 密码 - ADMIN_EMAIL=admin@sub2api.local # 默认管理员账号 - ADMIN_PASSWORD=admin123456 # 默认管理员密码 - JWT_SECRET= # 固定 JWT 密钥 - TOTP_ENCRYPTION_KEY= # 固定 2FA 密钥 - SECURITY_URL_ALLOWLIST_ENABLED=false # 禁用白名单检查 - SECURITY_URL_ALLOWLIST_ALLOW_INSECURE_HTTP=true # 允许 HTTP URL(⚠️ 不安全) depends_on: postgres: { condition: service_healthy } redis: { condition: service_healthy } networks: - sub2api-network # ================= 数据库 (PostgreSQL) ================= postgres: image: postgres:18-alpine container_name: sub2api-postgres restart: unless-stopped volumes: - ./data/postgres:/var/lib/postgresql/data # 挂载到当前目录的 data/postgres environment: - POSTGRES_USER=sub2api - POSTGRES_PASSWORD=sub2api_password - POSTGRES_DB=sub2api - PGDATA=/var/lib/postgresql/data - TZ=Asia/Shanghai healthcheck: test: ["CMD-SHELL", "pg_isready -U sub2api -d sub2api"] interval: 10s timeout: 5s retries: 5 networks: - sub2api-network # ================= 缓存 (Redis) ================= redis: image: redis:8-alpine container_name: sub2api-redis restart: unless-stopped volumes: - ./data/redis:/data # 挂载到当前目录的 data/redis command: ["redis-server", "--requirepass", "redis_password", "--appendonly", "yes"] environment: - REDISCLI_AUTH=redis_password - TZ=Asia/Shanghai healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 networks: - sub2api-network networks: sub2api-network: driver: bridge

粘贴到刚刚新建的 compose.yaml 里,可选修改数据库信息,请务必修改账号密码

JWT密钥 和 2FA密钥 如果需要请自行生成(作用分别为)

如果使用HTTPS并且在意安全性,请删除 禁用白名单检查 和 允许HTTP URL 两项环境变量

如果只使用HTTP不使用HTTPS的话,这两个则似乎需要保留

765×916 50.7 KB

如果在上面修改了数据库信息,别忘了这里也要同步修改;如果没有修改则忽略此处

761×768 35.3 KB

修改好后运行如下命令 cd /data/sub2api && docker compose up -d ,创建容器,如图即为成功

1150×618 19.3 KB

3. 配置

访问 服务器IP:6780 (如果你修改了端口则替换为你的端口),进入主页,点击登录

1910×929 174 KB

输入你在前面配置的账号密码,登录

1920×927 115 KB

可以看到sub2api已经给出了配置向导,可以根据向导进行配置,也可以跟着我的教程走

1910×927 115 KB

点击 分组管理 ,点击创建分组(不同的平台需要创建不同分组)

1920×927 123 KB

本文以对接Codex作为教程,其它大同小异,请自行研究

输入名称,平台选择OpenAI,点击创建

1920×927 92.1 KB

这里可以看见我们已经创建好的分组

1910×929 130 KB

点击账号管理,点击添加账号

1920×927 128 KB

填写名称,平台选择OpenAI,账号类型选择OAuth

1920×927 128 KB

注意要下拉勾选前面创建的分组 点击下一步

1920×927 108 KB

点击生成授权链接

1920×927 140 KB

可以看到生成的授权链接,复制到浏览器打开它

1920×927 139 KB

接下来按照提示登录

1120×814 49.3 KB

登录后显示无法访问此网站,为正常现象,将网址栏的内容全部复制

1920×1045 98.2 KB

粘贴到如图所示位置,点击完成授权

1920×927 130 KB

可以看到我们刚刚添加的账号

1920×927 138 KB

接下来点击 API 密钥,点击创建密钥

1920×927 111 KB

填写名称,分组勾选我们之前创建的分组,点击创建

1920×927 116 KB

可以看到我们刚刚创建的 API 密钥

1920×927 117 KB

4. 使用

到此已经完成,可以使用该密钥了,BaseURL 即为你的服务器IP:项目端口,点击上图中的使用密钥 可以看到相关配置,这个项目不能提供标准的OpenAI API ,似乎只能给 OpenCode 使用,这里就不过多赘述了

网友解答:
--【壹】--:

问一下 cpa 能给每个 key 设置日额度吗? 或者有什么更好的方案吗


--【贰】--:

真好 mark一下


--【叁】--:

佬,我设置了俩号,一号量用完了不自动切换是怎么回事,直接报错502


--【肆】--:

飞牛里面按步骤部署,要把

- DATABASE_HOST=postgres ... - REDIS_HOST=redis

改成

- DATABASE_HOST=sub2api-postgres ... - REDIS_HOST=sub2api-redis

不然一重启容器就日志报错找不到数据库


--【伍】--:

可以 基于docker搭建CLIProxyAPI图文教程


--【陆】--:

麻烦问一下,CPA 可以转成标准的openAI api吗


--【柒】--:

那我就继续用CPA了,谢谢佬


--【捌】--:

没尝试过,不知道


--【玖】--:

突然这么多教程,看不过来了


--【拾】--:

谢谢大佬,能批量添加吗?类似CPA导入,要用什么格式。
之前注册机注册的CPA直接能导入,sub2api不行


--【拾壹】--:

佬,这个sub2api和CPA有什么区别吗?


--【拾贰】--:

d9c593fccffce100ffbfa4005cba96311726×422 42 KB
账号授权的时候报错,这可咋整。不支持地区?


--【拾叁】--:

支持大佬,mark了,留着慢慢看


--【拾肆】--:

谢谢教程


--【拾伍】--:

同类型的,但是个人感觉不好用,还是CPA最好用,另外这个不能转成标准的OPENAIapi

问题描述:

本文作者:猫猫摸大鱼

1. 前言

本文隶属于 OpenClaw龙虾系列教程文章,建议按顺序阅读 ,可以访问OpenClaw龙虾系列教程文章目录 https://iloli.love/archives/1766849996690 查看其它文章,本文也可单独作为 sub2api 搭建教程文章阅读

本文基于sub2api v0.1.84版本,Github地址为 https://github.com/Wei-Shaw/sub2api

sub2api 能够将 GeminiCLI , ClaudeCode 等转换为不仅限于原客户端使用的API,从而供给OpenCode或其它客户端使用

搭建完才发现,当前版本的sub2api不能提供标准的OpenAI API,可用于OpenCode等,但我不知道能否用于OpenClaw

该项目有更多玩法,本文只赘述其中一部分,其他请自行探索

本系列教程全程使用腾讯云轻量应用服务器,可以参加腾讯云OpenClaw专属活动进行购买,新客68/年起,老客99/年起

活动链接 https://cloud.tencent.com/act/pro/lighthouse-moltbot (无AFF)

就算不买也强烈推荐使用有 快照 功能的厂商的服务器进行搭建,并且一定要经常打快照,不要问为什么,血的教训,血的教训,血的教训

1905×908 246 KB

1905×924 83.1 KB

2. 搭建

首先选择一个目录,本文中使用的是/data/sub2api

运行 mkdir -p /data/sub2api && touch /data/sub2api/compose.yaml ,创建docker compose文件

1072×344 14.6 KB

复制以下docker compose 配置(8080端口太常见容易被占用所以这里我改成了6780,可自行修改为其它端口)

services: # ================= 主程序 ================= sub2api: image: weishaw/sub2api:latest container_name: sub2api restart: unless-stopped ports: - "6780:8080" volumes: - ./data/sub2api:/app/data # 挂载到当前目录的 data/sub2api environment: - AUTO_SETUP=true # 开启自动初始化 - TZ=Asia/Shanghai # 设置时区 - SERVER_MODE=release # 运行模式 - DATABASE_HOST=postgres - DATABASE_PORT=5432 - DATABASE_USER=sub2api # 默认数据库用户 - DATABASE_PASSWORD=sub2api_password # 默认数据库密码 - DATABASE_DBNAME=sub2api # 默认数据库名 - REDIS_HOST=redis - REDIS_PORT=6379 - REDIS_PASSWORD=redis_password # 默认 Redis 密码 - ADMIN_EMAIL=admin@sub2api.local # 默认管理员账号 - ADMIN_PASSWORD=admin123456 # 默认管理员密码 - JWT_SECRET= # 固定 JWT 密钥 - TOTP_ENCRYPTION_KEY= # 固定 2FA 密钥 - SECURITY_URL_ALLOWLIST_ENABLED=false # 禁用白名单检查 - SECURITY_URL_ALLOWLIST_ALLOW_INSECURE_HTTP=true # 允许 HTTP URL(⚠️ 不安全) depends_on: postgres: { condition: service_healthy } redis: { condition: service_healthy } networks: - sub2api-network # ================= 数据库 (PostgreSQL) ================= postgres: image: postgres:18-alpine container_name: sub2api-postgres restart: unless-stopped volumes: - ./data/postgres:/var/lib/postgresql/data # 挂载到当前目录的 data/postgres environment: - POSTGRES_USER=sub2api - POSTGRES_PASSWORD=sub2api_password - POSTGRES_DB=sub2api - PGDATA=/var/lib/postgresql/data - TZ=Asia/Shanghai healthcheck: test: ["CMD-SHELL", "pg_isready -U sub2api -d sub2api"] interval: 10s timeout: 5s retries: 5 networks: - sub2api-network # ================= 缓存 (Redis) ================= redis: image: redis:8-alpine container_name: sub2api-redis restart: unless-stopped volumes: - ./data/redis:/data # 挂载到当前目录的 data/redis command: ["redis-server", "--requirepass", "redis_password", "--appendonly", "yes"] environment: - REDISCLI_AUTH=redis_password - TZ=Asia/Shanghai healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 networks: - sub2api-network networks: sub2api-network: driver: bridge

粘贴到刚刚新建的 compose.yaml 里,可选修改数据库信息,请务必修改账号密码

JWT密钥 和 2FA密钥 如果需要请自行生成(作用分别为)

如果使用HTTPS并且在意安全性,请删除 禁用白名单检查 和 允许HTTP URL 两项环境变量

如果只使用HTTP不使用HTTPS的话,这两个则似乎需要保留

765×916 50.7 KB

如果在上面修改了数据库信息,别忘了这里也要同步修改;如果没有修改则忽略此处

761×768 35.3 KB

修改好后运行如下命令 cd /data/sub2api && docker compose up -d ,创建容器,如图即为成功

1150×618 19.3 KB

3. 配置

访问 服务器IP:6780 (如果你修改了端口则替换为你的端口),进入主页,点击登录

1910×929 174 KB

输入你在前面配置的账号密码,登录

1920×927 115 KB

可以看到sub2api已经给出了配置向导,可以根据向导进行配置,也可以跟着我的教程走

1910×927 115 KB

点击 分组管理 ,点击创建分组(不同的平台需要创建不同分组)

1920×927 123 KB

本文以对接Codex作为教程,其它大同小异,请自行研究

输入名称,平台选择OpenAI,点击创建

1920×927 92.1 KB

这里可以看见我们已经创建好的分组

1910×929 130 KB

点击账号管理,点击添加账号

1920×927 128 KB

填写名称,平台选择OpenAI,账号类型选择OAuth

1920×927 128 KB

注意要下拉勾选前面创建的分组 点击下一步

1920×927 108 KB

点击生成授权链接

1920×927 140 KB

可以看到生成的授权链接,复制到浏览器打开它

1920×927 139 KB

接下来按照提示登录

1120×814 49.3 KB

登录后显示无法访问此网站,为正常现象,将网址栏的内容全部复制

1920×1045 98.2 KB

粘贴到如图所示位置,点击完成授权

1920×927 130 KB

可以看到我们刚刚添加的账号

1920×927 138 KB

接下来点击 API 密钥,点击创建密钥

1920×927 111 KB

填写名称,分组勾选我们之前创建的分组,点击创建

1920×927 116 KB

可以看到我们刚刚创建的 API 密钥

1920×927 117 KB

4. 使用

到此已经完成,可以使用该密钥了,BaseURL 即为你的服务器IP:项目端口,点击上图中的使用密钥 可以看到相关配置,这个项目不能提供标准的OpenAI API ,似乎只能给 OpenCode 使用,这里就不过多赘述了

网友解答:
--【壹】--:

问一下 cpa 能给每个 key 设置日额度吗? 或者有什么更好的方案吗


--【贰】--:

真好 mark一下


--【叁】--:

佬,我设置了俩号,一号量用完了不自动切换是怎么回事,直接报错502


--【肆】--:

飞牛里面按步骤部署,要把

- DATABASE_HOST=postgres ... - REDIS_HOST=redis

改成

- DATABASE_HOST=sub2api-postgres ... - REDIS_HOST=sub2api-redis

不然一重启容器就日志报错找不到数据库


--【伍】--:

可以 基于docker搭建CLIProxyAPI图文教程


--【陆】--:

麻烦问一下,CPA 可以转成标准的openAI api吗


--【柒】--:

那我就继续用CPA了,谢谢佬


--【捌】--:

没尝试过,不知道


--【玖】--:

突然这么多教程,看不过来了


--【拾】--:

谢谢大佬,能批量添加吗?类似CPA导入,要用什么格式。
之前注册机注册的CPA直接能导入,sub2api不行


--【拾壹】--:

佬,这个sub2api和CPA有什么区别吗?


--【拾贰】--:

d9c593fccffce100ffbfa4005cba96311726×422 42 KB
账号授权的时候报错,这可咋整。不支持地区?


--【拾叁】--:

支持大佬,mark了,留着慢慢看


--【拾肆】--:

谢谢教程


--【拾伍】--:

同类型的,但是个人感觉不好用,还是CPA最好用,另外这个不能转成标准的OPENAIapi