前言
绿联 NAS 对使用端口映射(bridge 模式)的 Docker 容器提供了官方反向代理地址,这在一定程度上降低了外网访问的配置成本。
然而,对于使用 host 网络模式运行的 Docker 容器,官方方案基本无能为力,外网访问几乎没有可用解法
在这种情况下,我们可以通过 DDNS + Caddy 反向代理 的方式,优雅地解决这一痛点,实现对宿主机端口服务的 HTTPS 外网访问。
重要前提(非常关键)
使用 DDNS 的前提是:
必须拥有公网 IP 地址!
必须拥有公网 IP 地址!
必须拥有公网 IP 地址!
若为 NAT、CGNAT、或运营商内网环境,本方案不适用。
一、DDNS 绑定配置
1. 前置准备:域名购买
如果你已经有可用域名,可以直接跳过本步骤。
以 阿里云 为例:
登录阿里云官网
在域名服务中搜索并注册自己心仪的域名

完成实名认证并支付购买
至此,域名准备工作完成。
2. 获取 AccessKey(用于 DDNS)
DDNS 需要通过 API 动态更新 DNS 记录,因此必须获取 AccessKey。
操作步骤如下:
将鼠标移动到右上角头像
点击 AccessKey
选择 使用 RAM AccessKey
按页面提示完成验证
创建并保存好 AccessKey ID 与 AccessKey Secret
请务必妥善保存,该密钥后续将用于 DDNS 配置。
3. 在绿联 NAS 中启用 DDNS
打开 绿联云 App
进入控制面板 → 设备连接 → 远程访问
勾选下方的 DDNS 支持
点击 新增
填写域名信息与 AccessKey
执行连接测试,确保状态正常
测试通过后,DDNS 即配置完成。
此时你的域名将自动解析到当前公网 IP。
二、使用 Caddy 部署反向代理
1. 部署 Caddy 容器
在 Docker 项目中创建如下 docker-compose.yml:
version: '3.9'
services:
caddy:
image: caddy:latest
container_name: caddy_home
network_mode: host
restart: unless-stopped
volumes:
- ./conf:/etc/caddy
- ./data:/data
- ./config:/config
- ./srv:/srv
关键说明:
network_mode: host
Caddy 将直接使用宿主机网络,从而可以反代所有 host 模式下的服务Caddy 会自动管理 HTTPS 证书,无需手动配置 TLS
部署完成后,进入 Caddy 所在目录,可以看到一个名为 Caddyfile 的文件。
2. 配置 Caddyfile
为了便于编辑,可以先将 Caddyfile 临时改名为 Caddyfile.txt。
假设我们要反代 Jellyfin 媒体服务器(端口 8096),配置示例如下:
(common) {
encode gzip zstd
}
jellyfin.example.com {
import common
reverse_proxy 127.0.0.1:8096
}
配置说明
(common)
定义一个全局可复用配置块encode gzip zstd
启用响应压缩,用于:减少传输体积
提升访问速度
降低公网带宽占用
jellyfin.example.com
表示你用于访问 Jellyfin 的子域名reverse_proxy 127.0.0.1:8096
指向宿主机上 Jellyfin 实际监听的地址
3. 启用配置并申请证书
保存文件
将 Caddyfile.txt 改回 Caddyfile
重启 Caddy 容器
此时 Caddy 会自动完成以下操作:
验证域名解析
向 ACME 机构申请 HTTPS 证书
启用反向代理
无需任何额外 TLS 配置。
三、路由器端口转发(公网 IPv4 必须)
如果你使用的是 公网 IPv4,还需要在路由器中进行以下配置之一:
端口转发
TCP 80 → NAS IP
TCP 443 → NAS IP
或启用 DMZ(不推荐但最省事)
完成后,即可在外网通过:https://jellyfin.example.com安全、稳定地访问你部署在 NAS 上的 Docker 服务。