群晖相关

群晖部署 Sublink Worker 订阅转换工具:Docker Compose + HTTPS 443 反向代理完整教程

2026-08-06 21 次阅读 3005 字 · 8 分钟

群晖部署 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 变化


  • 二、部署方案:Docker Compose(worker + Redis)



    Sublink Worker 官方推荐 Docker Compose 部署,自带 Redis,有两个好处:

  • 数据持久化:订阅配置、短链等数据存 Redis,数据卷保存,容器重建、镜像更新都不会丢;

  • 自动守护:两个容器都配置 restart: unless-stopped,群晖重启后自动恢复,无需手动干预。


  • 整个部署只需要一个 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:
    


    配置说明:

  • Redis 的快照持久化参数(--save)直接写在 compose 里,无需额外准备配置文件;

  • 订阅数据存放在 redis-data 数据卷;

  • 容器名加了 8787 前缀,避免与机器上已有的旧容器重名冲突;

  • 8787 端口可根据实际情况调整(比如改成 8788),后续反向代理的目的地端口跟着改即可。


  • 四、Container Manager 部署



  • 打开群晖的 Container Manager → 左侧"项目"→"新增";

  • 项目名称填 sublink,路径选择 /volume1/docker/sublink;

  • 系统会自动识别目录里的 docker-compose.yml,直接下一步 → 应用;

  • 等待拉取镜像并启动两个容器(worker + redis);

  • 浏览器打开 http://群晖内网IP:8787,看到 Sublink Worker 界面即部署成功。


  • 五、Cloudflare DNS 解析



  • 登录 Cloudflare,选择域名 example.com,进入 DNS → 记录 → 添加记录;

  • 类型选 A,名称填 sublink(即 sublink.example.com),IPv4 地址填家里的公网 IP;

  • 代理状态选择"仅 DNS(灰云)",让 Let's Encrypt 能直接验证到群晖;

  • 保存后等待生效(DNS 通常几分钟内生效)。


  • 六、路由器端口转发



    登录路由器,把 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 证书



  • 控制面板 → 安全性 → 证书 → 新增 → 添加新证书;

  • 选择"从 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,确认首页正常且地址栏有小锁;

  • 在面板里导入节点、生成短链;

  • 浏览器访问短链,应能直接返回订阅内容;

  • 把订阅链接或短链导入 Clash、Sing-Box 等客户端测试拉取。


  • 如果本地网络使用代理类工具接管了 DNS(比如旁路由),ping 域名可能超时或解析到 198.18.x.x 这类地址,这属于代理的 fake-ip 机制,不代表网站异常,直接用浏览器访问即可。

    十一、日常维护



  • 自动恢复:两个容器都设置了 restart: unless-stopped,群晖重启后会自动拉起;

  • 数据持久化:订阅配置存 Redis,数据写在 redis-data 卷里,docker compose down 不会丢数据,只有 docker compose down -v 才会清空;

  • 更新镜像:在 Container Manager 的项目上点"构建/更新",或 SSH 到项目目录执行:


  • docker compose pull
    docker compose up -d
    


  • 短链 502 自查:如果 DSM 升级、或删除重建反向代理后短链又变 502,通常是 \/etc/nginx/nginx.conf\ 里的 include 行被系统重置(custom 配置文件本身不会被删),重新执行第九节的 \sed\ 命令补回 include,再 \

ginx -t && nginx -s reload\ 即可恢复。

结语



这套方案全程使用群晖自带能力(Container Manager + 反向代理 + Let's Encrypt),没有额外安装面板,也没有把 8787 直接暴露到公网(它只在局域网和反代内部使用)。配合 Cloudflare 的域名管理,一台群晖就能把订阅转换服务稳定、安全地跑起来。

评论(0)

2 + 1 =
← 返回首页