Subconverter自建教程:Docker部署私有订阅转换,不再把节点配置喂给公共网站

先说依据

这篇依据 tindy2013/subconverter 官方仓库的 README 和 README-docker.md(2026-10-18 读取)。Docker 部署步骤没有在真机上逐条实测运行,以官方文档为准。

Subconverter是什么

Subconverter 是订阅格式转换工具:把各种代理订阅(ss、ssr、ssd、V2Ray、Clash、Quantumult 等)转换成目标客户端要的配置格式。支持的目标格式很多:clash、clashr、surge(2/3/4)、quan、quanx、loon、surfboard、ss、ssr、v2ray 等。

为什么要自建

网上有很多公共的 subconverter 转换网站,粘贴订阅链接就能转。但问题很直接:你的订阅链接里是全部节点的地址、端口、密码,用公共网站转换,等于把整套节点配置明文喂给一个陌生服务器。自建之后,转换只发生在你自己的机器上——可以在本地电脑跑,也可以在自己的 VPS 上跑。

Docker部署

官方给了最简的运行方式(需要机器上装好 Docker):

1
2
3
4
# 后台运行,把容器内25500端口映射到宿主机25500
docker run -d --restart=always -p 25500:25500 tindy2013/subconverter:latest
# 检查是否起来了
curl http://localhost:25500/version

看到返回 subconverter vx.x.x backend 就说明跑起来了。

用 docker-compose 的话,官方示例:

1
2
3
4
5
6
7
8
version: '3'
services:
subconverter:
image: tindy2013/subconverter:latest
container_name: subconverter
ports:
- "25500:25500"
restart: always

安全提醒

官方镜像默认没有鉴权,任何人访问到 25500 端口就能用你的转换服务(还能顺手看到你传的订阅)。所以:

  • 只给自己用:映射到 127.0.0.1:25500(-p 127.0.0.1:25500:25500),不要暴露到公网;
  • 放 VPS 上给多台设备用:前面加 Nginx 反向代理并做好访问控制(IP 白名单或 basic auth),不要裸奔。

怎么用:/sub 接口

转换接口格式(官方 README 原样):

1
http://127.0.0.1:25500/sub?target=%TARGET%&url=%URL%&config=%CONFIG%
参数 必填 说明
target 是 目标格式,取值看上表(如 clash、surge&ver=4、quanx)
url 是 要转换的订阅链接,先做 URL 编码
config 否 外部配置文件 URL(自定义分组、规则),先做 URL 编码

举例:把一个订阅转成 Clash 配置,就访问

1
http://127.0.0.1:25500/sub?target=clash&url=<URL编码后的订阅链接>

把这条链接填进 Clash 的订阅地址就行。

多个订阅合并

多个订阅先用 | 拼起来,再整体做 URL 编码(官方 README 的原话):

1
https://aaa.com/sub?x=1|https://bbb.com/sub?y=2

编码后再填进 url 参数,一次转成一份合并后的配置。

进阶:自定义分组和规则

默认的分组规则是官方自带的,想自己定义(比如按地区/用途分组、加自己的分流规则),两种方式:

  1. 传 config 参数:把写好的 ini 配置文件放网上(或本地路径),config 参数指向它。示例可以看官方仓库 tindy2013/subconverter 里 base 目录的 pref.example.ini(原来常被引用的 subconverteriniexample 示例仓库已经下线)。
  2. 替换容器内配置:按官方 Dockerfile 写法,把自己的 pref.ini、规则文件放进 replacements/ 目录,构建自己的镜像:
1
2
3
FROM tindy2013/subconverter:latest
COPY replacements/ /base/
EXPOSE 25500
1
2
docker build -t subconverter-custom:latest .
docker run -d --restart=always -p 25500:25500 subconverter-custom:latest

容器内配置在 /base/ 目录,结构和仓库里的 base/ 文件夹一致。改完配置后可以用官方接口热更新:

1
curl -F "data=@newpref.ini" "http://localhost:25500/updateconf?type=form&token=<redacted>"

token 在配置文件里改(官方 README 提醒过要改默认 token)。

和公共转换网站的对比

公共转换网站 自建
隐私 订阅明文经过第三方 只在自己机器上
可用性 看站长心情,可能挂 自己维护
自定义规则 一般固定 随便改
成本 免费 一台能跑 Docker 的机器

注意事项

  • 镜像默认无鉴权,不要把 25500 直接暴露到公网;
  • target 的取值以官方 README 的 Supported Types 表为准,不同版本可能增减;
  • 以上部署命令来自官方文档,未在真机逐条验证,跑起来后先用 curl http://localhost:25500/version 确认,再配订阅。