群晖相关
群晖部署 Sublink Worker 订阅转换工具:Docker Compose + HTTPS 443 反向代理完整教程
群晖部署 Sublink Worker 订阅转换工具:Docker Compose + HTTPS 443 反向代理完整教程
Sublink Worker 是一款轻量级代理订阅转换与管理工具,可以把自建节点的分享 URL 一键转换为 Clash、Sing-Box、Xray/V2Ray、Surge 等客户端的订阅链接,支持多条订阅导入、短链生成、规则组自定义。除了可以部署在 Cloudflare Workers、Vercel、Node.js 上,官方也提供了 Docker 镜像,非常适合跑在群晖 NAS 上自用。
这篇文章完整记录在群晖(DSM 7.x + Container Manager)上从零部署 Sublink Worker,并通过群晖自带反向代理 + Let's Encrypt 证书,以 HTTPS 443 端口对外提供服务的全过程,按照本文步骤操作即可一次成功。
一、部署前准备
- 群晖已安装 Container Manager(DSM 7.2 自带,或套件中心安装 Docker 套件)
- 一个域名,并在 Cloudflare 上管理 DNS(本文以 example.com 为例,子域名用 sublink.example.com)
- 路由器支持端口转发,且能登录管理界面
- 群晖内网 IP 固定(例如 10.10.10.2),避免重启后 IP 变化
- 数据持久化:订阅配置、短链等数据存 Redis,数据卷保存,容器重建、镜像更新都不会丢;
- 自动守护:两个容器都配置
restart: unless-stopped,群晖重启后自动恢复,无需手动干预。
二、部署方案:Docker Compose(worker + Redis)
Sublink Worker 官方推荐 Docker Compose 部署,自带 Redis,有两个好处:
整个部署只需要一个
docker-compose.yml 文件,不需要任何外部配置文件。三、创建 docker-compose.yml
在群晖 File Station 里新建目录
/volume1/docker/sublink,在里面创建 docker-compose.yml,内容如下:services:
worker:
image: ghcr.io/7sageer/sublink-worker:latest
container_name: sublink-8787-worker
restart: unless-stopped
ports:
- "8787:8787"
environment:
REDIS_HOST: redis
REDIS_PORT: 6379
REDIS_KEY_PREFIX: sublink
CONFIG_TTL_SECONDS: 2592000
depends_on:
- redis
redis:
image: redis:7-alpine
container_name: sublink-8787-redis
restart: unless-stopped
command:
- redis-server
- --save
- "900 1"
- --save
- "300 10"
- --save
- "60 10000"
- --dir
- /data
volumes:
- redis-data:/data
volumes:
redis-data:
配置说明:
--save)直接写在 compose 里,无需额外准备配置文件;redis-data 数据卷;8787 前缀,避免与机器上已有的旧容器重名冲突;四、Container Manager 部署
sublink,路径选择 /volume1/docker/sublink;docker-compose.yml,直接下一步 → 应用;http://群晖内网IP:8787,看到 Sublink Worker 界面即部署成功。五、Cloudflare DNS 解析
example.com,进入 DNS → 记录 → 添加记录;A,名称填 sublink(即 sublink.example.com),IPv4 地址填家里的公网 IP;六、路由器端口转发
登录路由器,把 TCP
80 和 443 端口都转发到群晖内网 IP(如 10.10.10.2):80 端口:Let's Encrypt 证书验证用;443 端口:HTTPS 访问用。如果之前已经为别的服务转发过 443,不需要改动,群晖反向代理会在 443 上按域名区分流量。
七、群晖反向代理(HTTPS 443)
控制面板 → 登录门户 → 高级 → 反向代理 → 新增:
HTTPS,主机名 sublink.example.com,端口 443,可勾选"启用 HSTS"HTTP,主机名 localhost(或 127.0.0.1),端口 8787保存即可。
关于端口复用:443 端口可以同时挂很多条反向代理规则,群晖根据域名(Host 头)把流量分给不同站点,多个站点共用 443 互不冲突。但宿主机端口不能重复占用——8787 同一时间只能被一个容器使用;以后想再跑一个服务,把新容器的映射改成
8788:8787,并把反向代理目的地端口改成 8788。八、申请并分配 Let's Encrypt 证书
sublink.example.com,邮箱填一个常用邮箱;sublink.example.com 对应的反向代理条目;https://sublink.example.com,地址栏出现小锁即成功。九、nginx 反代缓冲优化(短链必需)
Sublink Worker 的短链(形如
https://sublink.example.com/x/xxxx)本质是一个 302 跳转,Location 响应头里携带完整的订阅参数,大小可达 8KB 以上。群晖 nginx 反向代理读取上游响应头的默认缓冲只有 4KB,需要调大到 32KB,短链才能正常返回。SSH 登录群晖执行以下命令(全程无交互、无重启,平滑生效):
mkdir -p /usr/local/etc/nginx/custom
cat > /usr/local/etc/nginx/custom/sublink-buffers.conf <<'EOF'
proxy_buffer_size 32k;
proxy_buffers 8 32k;
large_client_header_buffers 8 32k;
EOF
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
sed -i '/^http {/a\ include /usr/local/etc/nginx/custom/*.conf;' /etc/nginx/nginx.conf
nginx -t
nginx -s reload
说明:
/usr/local/etc/nginx/custom/ 目录,群晖不会覆盖,长期有效;nginx -t 显示 syntax is ok、test is successful 即为正常;nginx -s reload 是平滑重载,不会中断现有连接;十、功能验证
https://sublink.example.com,确认首页正常且地址栏有小锁;如果本地网络使用代理类工具接管了 DNS(比如旁路由),ping 域名可能超时或解析到
198.18.x.x 这类地址,这属于代理的 fake-ip 机制,不代表网站异常,直接用浏览器访问即可。十一、日常维护
restart: unless-stopped,群晖重启后会自动拉起;redis-data 卷里,docker compose down 不会丢数据,只有 docker compose down -v 才会清空;docker compose pull
docker compose up -d
ginx -t && nginx -s reload\ 即可恢复。
结语
这套方案全程使用群晖自带能力(Container Manager + 反向代理 + Let's Encrypt),没有额外安装面板,也没有把 8787 直接暴露到公网(它只在局域网和反代内部使用)。配合 Cloudflare 的域名管理,一台群晖就能把订阅转换服务稳定、安全地跑起来。
评论(0)