Lazy loaded image
自建订阅转换服务完整部署指南
字数 3536阅读时长 9 分钟
2025-11-29
2025-11-30
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 运行容器

如果使用官方镜像(未修改配置):
如果需要使用自定义配置,建议:
  1. 克隆 sub-web 源码
  1. 修改配置文件中的 remoteConfig
  1. 重新构建镜像:
参数说明:
  • -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:持久化日志文件
  • -domain s.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:8002http://s.yourdomain.com(如果已配置域名),可以看到短链接生成界面。
检查容器状态:
 

四、服务整合与使用

4.1 完整使用流程

  1. 访问 sub-web 前端`http://your-server-ip:58080`
  1. 输入订阅链接:粘贴原始订阅地址
  1. 选择远程配置:从丰富的配置列表中选择合适的规则
  1. 生成订阅:点击生成,获得转换后的订阅链接
  1. 缩短链接(可选):将生成的长链接粘贴到 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 控制台配置(推荐)

  1. 登录 Cloudflare 控制台
  1. 进入你的域名 → RulesTransform RulesModify Response Header
  1. 创建新规则,添加以下响应头:
适用域名:

方法二: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 容器化部署,管理便捷

相关链接:
💡 提示:建议使用反向代理配置 HTTPS,并设置访问认证,确保服务安全。
上一篇
OpenWrt 安装 frpc 客户端教程
下一篇
哪吒探针(Nezha Monitor)部署完全指南