自建Clash订阅转换
搭建后端Subconverter
docker compose部署
项目地址:https://github.com/tindy2013/subconverter
Docker官方指引:https://github.com/tindy2013/subconverter/blob/master/README-docker.md
#docker部署
docker run -d --name subcon --restart=always -p 25500:25500 tindy2013/subconverter:latest
#docker-compose部署
subconverter:
image: tindy2013/subconverter:latest
container_name: subconverter
restart: always
ports:
- 25500:25500
MetaCubeX版后端
subconverter-mate:
image: ghcr.io/metacubex/subconverter:latest
container_name: subconverter-metacubex
restart: always
ports:
- 25501:25500
#docker部署
docker run -d --name subconverter-metacubex --restart=always -p 25501:25500 ghcr.io/metacubex/subconverter:latestSubconverter负责渲染分流规则,后端原版作者是tindy2013,但一直不支持vless,后来MetaCubeX修改了作者的后端,支持vless hy2等
搭建前端Subweb
项目地址:https://github.com/CareyWang/sub-web
配置前端
如果用docker搭建,需要配置前端之后,重新build镜像。
# Clone项目到本地
git clone https://github.com/CareyWang/sub-web.git
cd sub-web
# 编辑.env配置文件
vi .env
# 修改后端地址、短链接地址
# API 后端
VUE_APP_SUBCONVERTER_DEFAULT_BACKEND = "你的后端地址"
因为我这里不需要短链因此其他不做配置🚀 使用
开发环境
# 启动开发服务器
yarn dev访问 http://localhost:5173/ 查看应用。
生产构建
# 构建生产版本
yarn build构建完成后,dist 目录包含所有生产文件。
🐳 Docker 部署
本地构建
如需修改代码并自定义构建:
# 构建镜像
docker build -t subweb-local:latest .
# 运行容器
docker run -d \
-p 58080:80 \
--restart always \
--name subweb \
subweb-local:latestDocker Compose 部署
使用 Docker Compose 一键部署完整服务栈(包含 MyUrls 短链接服务):
# 进入 services 目录
cd services
# 编辑 .env 文件,修改端口和域名配置
# 默认配置:SUBWEB_PORT=58080, MYURLS_PORT=8002
vim .env
# 启动所有服务
docker-compose up -d🌐 部署
Nginx 配置示例
配置 Nginx 作为反向代理和静态文件服务器:
server {
listen 80;
server_name your-domain.com;
# HTTPS 重定向(可选)
# return 301 https://$server_name$request_uri;
root /var/www/sub-web/dist;
index index.html index.htm;
# SPA 路由支持
location / {
try_files $uri $uri/ /index.html;
}
# Gzip 压缩
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 6;
gzip_types
text/plain
text/css
text/javascript
application/json
application/javascript
application/x-javascript
application/xml
text/xml;
gzip_vary on;
# 静态资源缓存
location ~* \.(css|js|png|jpg|jpeg|gif|gz|svg|mp4|ogg|ogv|webm|htc|xml|woff|woff2|ttf|eot)$ {
access_log off;
add_header Cache-Control "public,max-age=86400";
add_header Vary Accept-Encoding;
}
}
# HTTPS 配置示例(可选)
server {
listen 443 ssl http2;
server_name your-domain.com;
ssl_certificate /path/to/your/cert.pem;
ssl_certificate_key /path/to/your/key.pem;
# SSL 安全配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
root /var/www/sub-web/dist;
index index.html index.htm;
location / {
try_files $uri $uri/ /index.html;
}
}get方式Url长度问题
#nginx设置
client_max_body_size 24M;
client_body_buffer_size 128k;
client_header_buffer_size 5120k;
large_client_header_buffers 16 5120k;
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员小航
评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果

