type
status
date
slug
summary
tags
category
icon
password
菜单级别
Place
Verification
Owner
通过组合三个开源项目,我们可以搭建一套完整的自建订阅转换服务。本文将详细介绍如何使用 Docker 部署 subconverter(订阅转换后端)、sub-web(Web 前端界面)和 myurls(短链接服务)。
项目简介
核心组件
subconverter - 订阅转换后端
- 功能:将各种代理订阅格式相互转换(Clash、V2Ray、Surge 等)
- 支持规则定制和配置模板
sub-web - 订阅转换前端
- 功能:提供友好的 Web 界面,便于用户进行订阅转换操作
- 支持多种远程配置模板
myurls - 短链接服务
- 功能:将长订阅链接转换为简短链接,方便分享和管理
- 轻量级,无需数据库
部署架构
这三个服务通过 Docker 容器化部署,相互配合形成完整的订阅转换工作流:
一、部署 subconverter(后端服务)
1.1 运行 subconverter 容器
参数说明:
-p 25500:25500:映射端口,可根据需要修改
--restart=always:容器自动重启
- 使用
asdlokj1qpi23/subconverter:latest镜像(优化版本)
1.4 验证服务
访问 `http://your-server-ip:25500/version` 查看版本信息,确认服务正常运行。
二、部署 sub-web(前端界面)
2.1 拉取镜像
官方镜像:
自构建镜像(包含更多远程配置):
💡 提示:自构建镜像已经包含了本文提到的丰富的 remoteConfig 配置,可以直接使用,无需手动修改源码。
2.2 自定义远程配置
在部署 sub-web 之前,我们需要修改其
remoteConfig 配置,以支持更多的远程配置选项。配置文件修改
找到 sub-web 的配置文件(通常在
src/views/Subconverter.vue 或相关配置文件中),将 remoteConfig 替换为以下内容:remoteConfig 配置代码
配置说明:这个配置包含了丰富的远程规则选项,涵盖了通用规则、ACL 规则、全网搜集规则、各大机场专属规则等多个分类,为用户提供了灵活的选择。
2.3 运行容器
如果使用官方镜像(未修改配置):
如果需要使用自定义配置,建议:
- 克隆 sub-web 源码
- 修改配置文件中的
remoteConfig
- 重新构建镜像:
参数说明:
-p 58080:80:映射 Web 服务端口
-e SUBCONVERTER_URL:指定后端 API 地址
2.4 访问前端
打开浏览器访问 `http://your-server-ip:58080`,即可看到订阅转换界面。
三、部署 Redis + myurls(短链接服务)
myurls 使用 Redis 作为数据存储后端,因此需要先部署 Redis 服务。
3.1 创建 Docker 网络
首先创建一个自定义网络,让 Redis 和 myurls 容器能够相互通信:
3.2 部署 Redis 服务
参数说明:
--network redis-network:加入自定义网络
--restart always:容器自动重启
-v $PWD/redis/data:/data:持久化 Redis 数据
-v $PWD/redis/logs:/logs:持久化日志文件
--requirepass "your_secure_password_here":设置 Redis 密码(请务必修改为强密码)
--ignore-warnings ARM64-COW-BUG:针对 ARM64 架构的优化参数
⚠️ 安全提醒:请将your_secure_password_here替换为你自己的强密码,建议使用 16 位以上包含大小写字母、数字和特殊字符的组合。
3.3 部署 myurls 服务
参数说明:
--network redis-network:加入与 Redis 相同的网络
-p 8002:8002:映射短链接服务端口
-v /docker/myurls/logs:/app/logs:持久化日志文件
-domains.yourdomain.com:设置短链接域名(请修改为你自己的域名)
-port 8002:指定内部服务端口,一定不要修改
-conn redis:6379:连接 Redis 服务(使用容器名称)
-password 'your_secure_password_here':Redis 连接密码(必须与 Redis 的密码一致)
⚠️ 重要提醒:myurls 的-password参数必须与 Redis 的--requirepass密码完全一致,否则无法连接。
3.4 验证服务
访问
http://your-server-ip:8002 或 http://s.yourdomain.com(如果已配置域名),可以看到短链接生成界面。检查容器状态:
四、服务整合与使用
4.1 完整使用流程
- 访问 sub-web 前端:`http://your-server-ip:58080`
- 输入订阅链接:粘贴原始订阅地址
- 选择远程配置:从丰富的配置列表中选择合适的规则
- 生成订阅:点击生成,获得转换后的订阅链接
- 缩短链接(可选):将生成的长链接粘贴到 myurls(`http://your-server-ip:8002`)生成短链接
4.2 Docker Compose 一键部署
为了简化部署流程,可以使用 Docker Compose 统一管理:
创建
docker-compose.yml 文件:⚠️ 配置说明:
- 将your_secure_password_here替换为你的强密码(Redis 和 myurls 的密码必须一致)
- 将your-server-ip替换为你的服务器 IP 或域名
- 将s.yourdomain.com替换为你的短链接域名
启动所有服务:
查看运行状态:
停止所有服务:
五、进阶配置
5.1 Cloudflare Tunnel CORS 配置
如果你使用 Cloudflare Tunnel 部署服务并遇到跨域问题,需要为 subconverter 和 myurls 添加 CORS 规则。
方法一:Cloudflare 控制台配置(推荐)
- 登录 Cloudflare 控制台
- 进入你的域名 → Rules → Transform Rules → Modify Response Header
- 创建新规则,添加以下响应头:
适用域名:
- subconverter 域名(例如:
api.yourdomain.com)
- myurls 域名(例如:
s.yourdomain.com)
方法二:Nginx 反向代理添加 CORS
如果在服务器端使用 Nginx,可以在配置中添加 CORS 规则:
subconverter 服务配置:
myurls 短链接服务配置:
sub-web 前端服务配置:
重载 Nginx 配置:
方法三:Cloudflare Workers(高级)
如果需要更精细的控制,可以创建 Cloudflare Worker 来处理 CORS:
💡 提示:对于个人使用场景,推荐使用方法一或方法二,配置简单且安全性足够。
5.2 自定义 subconverter 规则
编辑
$PWD/subconverter/pref.ini 文件,可以自定义转换规则:修改后重启容器:
六、常见问题
Q1: 订阅转换失败?
解决方案:
- 检查 subconverter 后端是否正常运行:
docker logs subconverter
- 确认 sub-web 的
SUBCONVERTER_URL环境变量配置正确
- 检查防火墙是否开放相应端口
Q2: 远程配置无法加载?
解决方案:
- 确认服务器可以访问 GitHub 和其他配置源
- 考虑使用代理或镜像加速
- 检查配置文件中的 URL 是否有效
Q3: 短链接生成后无法访问?
解决方案:
- 确认 myurls 服务正常运行
- 检查数据目录权限:
chmod 755 $PWD/myurls
- 查看容器日志:
docker logs myurls
七、维护与更新
更新镜像
数据备份
总结
通过组合这三个容器服务,我们成功搭建了一套功能完善的自建订阅转换系统:
✅ subconverter 提供强大的订阅转换能力
✅ sub-web 提供友好的用户界面和丰富的远程配置选项
✅ myurls 生成便捷的短链接
这套系统具有以下优势:
- 🔒 隐私安全:数据完全自主可控
- 🚀 性能优秀:本地部署,响应速度快
- 🎨 高度定制:可根据需求修改规则和配置
- 📦 易于维护:Docker 容器化部署,管理便捷
相关链接:
- subconverter GitHub: https://github.com/asdlokj1qpi233/subconverter
- sub-web GitHub: https://github.com/CareyWang/sub-web
- myurls GitHub: https://github.com/CareyWang/MyUrls
💡 提示:建议使用反向代理配置 HTTPS,并设置访问认证,确保服务安全。
- 作者:Orz
- 链接:https://blog.1567890.xyz/technology/self-hosted-subscription-converter-guide
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

