基于docker搭建sub2api图文教程
- 内容介绍
- 相关推荐
本文作者:猫猫摸大鱼
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

