马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 zzstar 于 2025-12-15 15:53 编辑
前言
绿联 NAS 对使用端口映射(bridge 模式)的 Docker 容器提供了官方反向代理地址,这在一定程度上降低了外网访问的配置成本。
然而,对于使用 host 网络模式运行的 Docker 容器,官方方案基本无能为力,外网访问几乎没有可用解法。 在这种情况下,我们可以通过 DDNS + Caddy 反向代理 的方式,优雅地解决这一痛点,实现对宿主机端口服务的 HTTPS 外网访问。 重要前提(非常关键)
使用 DDNS 的前提是:
必须拥有公网 IPv4 地址!
必须拥有公网 IPv4 地址!
必须拥有公网 IPv4 地址!
若为 NAT、CGNAT、或运营商内网环境,本方案不适用。
一、DDNS 绑定配置
1. 前置准备:域名购买
如果你已经有可用域名,可以直接跳过本步骤。 以 阿里云 为例: 在域名服务中搜索并注册自己心仪的域名
完成实名认证并支付购买
至此,域名准备工作完成。
2. 获取 AccessKey(用于 DDNS)
DDNS 需要通过 API 动态更新 DNS 记录,因此必须获取 AccessKey。 操作步骤如下: 请务必妥善保存,该密钥后续将用于 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
复制代码
关键说明: 部署完成后,进入 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. 启用配置并申请证书
此时 Caddy 会自动完成以下操作: 验证域名解析 向 ACME 机构申请 HTTPS 证书 启用反向代理
无需任何额外 TLS 配置。 三、路由器端口转发(公网 IPv4 必须)
如果你使用的是 公网 IPv4,还需要在路由器中进行以下配置之一: 端口转发
TCP 80 → NAS IP TCP 443 → NAS IP
或启用 DMZ(不推荐但最省事)
|