心得总结 2026 sub2api 国内直连部署 + 适配最新协议 踩坑全记录(附可跑配置)

xiaowang110 · 2026年08月18日 · 8 次阅读

一、环境准备(避坑版) 系统:Debian 12 最小化(Ubuntu 24.04 也行,别用 CentOS/Alma) 配置:≥2G 内存,1G 必 OOM,别试 依赖: bash curl -fsSL https://deb.nodesource.com/setup_20.x | bash - apt install nodejs docker.io docker-compose -y

别装 22.x,和项目依赖的 undici 版本冲突,必报 ERR_INVALID_ARG_VALUE

Docker 改 cgroup(Debian12 必做,不然 compose 起不来): bash cat > /etc/docker/daemon.json << EOF {"exec-opts": ["native.cgroupdriver=systemd"]} EOF systemctl restart docker 二、部署 sub2api(用我修过协议的 fork) bash git clone https://github.com/xxx/sub2api-fix2026.git # 我 fork 的,修了 7 月上游的协议变更 cd sub2api-fix2026 cp config.example.json config.json

config.json 最小可用配置(只改这俩):

json { "port": 3000, "api_prefix": "/v1", "upstreams": [] // 后面填你自己的上游 } docker compose up -d

访问 ip:3000/health 返回 ok 即部署成功。

三、适配最新上游协议(原版必崩的核心原因)

上游 7 月偷偷改了请求格式,原版做了两处错误转换:

把 tools 数组里的参数转成旧格式,直接返 400 → 改 src/router/chat.js 第 52 行,注释掉原转换逻辑,直接 req.body = body 透传 吞了 stream 的 usage 字段,用量统计全为 0 → 在 src/utils/stream.js 里加一行 chunk.data.usage && (res.usage = chunk.data.usage) 拼接 改完重启容器生效。 四、套 CF 实现国内直连(必做) 域名解析到 CF,开小黄云,SSL 模式选「完全」(别选严格,上游自签会挂) 页面规则加一条:域名/v1/ → 缓存级别=「绕过」(API 缓存必出事) 关掉三个开关(CF 后台「网络」页):gRPC、0-RTT、HTTP/3(否则移动节点握手卡、请求重复触发) 五、上游的选择

一开始接共享号池,三天崩四次,朋友骂了三次。后来我自己在另一台机搭了个纯转发后端(没做多余逻辑,只做鉴权和原样转发),挂上去跑了俩月没崩,延迟比 CF 套自己的还低 20ms,所有参数原封不动透传,朋友再也没找过我修服务。

我把改好的 docker-compose、config 模板、还有那个纯转发后端的管理面板,都扔我个人主页了,要配置/要面板地址的私我。

纯个人瞎折腾的东西,没啥商业属性,欢迎 L 站老哥们进来测测稳不稳、挑挑配置里的毛病,有更好的改法也教教我。 最后地址:wfsnb.site 欢迎大家来玩

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请 注册新账号