NAS 中通过 Docker 安装 Lucky 实现公网反向代理访问 Docker 中的应用,简单记录一下,仅供参考。
添加阿里云 AccessKey
首先需要去域名服务商申请 AccessKey 便于后面做 DDNS。
以阿里云域名解析为例,在第三方添加阿里云主账号 AccessKey 不安全,推荐创建一个 RAM 访问控制账户。
创建一个 RAM 访问控制账户,在用户信息-凭证管理中创建此用户的 AccessKey,记录下 AccessKey ID 和 AccessKey Secret,等下需要填写到 Lucky 中。

在权限管理中创建一条权限策略,用于域名创建和更新,脚本可选择如下:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"alidns:DescribeDomainRecords",
"alidns:DescribeSubDomainRecords",
"alidns:UpdateDomainRecord",
"alidns:UpdateDomainRecordRemark",
"alidns:AddDomainRecord",
"alidns:DeleteDomainRecord"
],
"Resource": "acs:alidns:*:你的主id:domain/你的域名如:abc.com"
}
]
}

在权限管理-授权中找到刚才添加的权限策略授权
如果有问题在概览-管控事件中查看最近的事件,点击事件详情查看API请求ID,将ID复制到权限诊断中输入Request ID查看问题指引,在权限策略中添加对应的权限即可。
Lucky配置
动态域名
添加任务
以阿里云域名解析为例
- 操作模式:简易模式
- 托管服务商:阿里云
- AccessKey ID:来自阿里云
- AccessKey Secret:来自阿里云
添加同步记录
如果你的宽带可以获取 IPv4 公网地址,请添加abc.com和*.abc.com对应 IPv4 动态域名解析,将自动拆分两条
- 记录名:abc.com和*.abc.com,将自动拆分两条
- 同步开关:启用
- 记录类型:A(IPv4)
- 记录内容:{ipv4Addr}
如果你的宽带可以获取 IPv6 公网地址,则添加abc.com和*.abc.com对应 IPv6 动态域名解析,将自动拆分两条
- 记录名:abc.com和*.abc.com,将自动拆分两条
- 同步开关:启用
- 记录类型:AAAA(IPv6)
- 记录内容:{ipv6Addr}
添加成功,在阿里云云解析DNS中对应域名下面添加有相应的记录就对了。

为什么要添加 abc.com 和 *.abc.com 呢,这是方便等下添加应用的时候自定义一个二级域名,这样只会暴露abc.com这个域名,xx.abc.com这个域名没人知道也就避免了暴露了尴尬。如果没有二级域名,添加成 ddns.abc.com 和 *.ddns.abc.com 这样也行。
SSL/TLS证书
添加证书
- 添加方式:ACME
- 证书颁发机构:Let’s Encrypt或ZeroSSL
- 验证方式:阿里云
- 创建AccessKey:填写阿里云ID和Secret
- 域名/IP列表:abc.com和*.abc.com

添加成功后在列表中看见更新了到期时间了就表示ssl证书签发成功。

Web服务
添加Web 服务规则
- 规则开关:启用
- 操作模式:简易模式
- 监听类型:全选,IPv4,IPv6
- 监听端口:外部访问端口,默认为16666
- 防火墙自动放行:Docker部署点击关闭,否则可启用
- TLS:启用
- 默认规则:
- 服务类型:关闭连接
- 子规则列表,添加一个子规则
- 子规则名称:自定义,填写应用名称,比如 gitea
- 子规则开关:启用
- 服务类型:反向代理
- 前端地址:xxx.abc.com
- 后端地址:http://172.17.0.x:3000(改成具体地址),看应用部署 docker 的内部地址和端口,不要填写映射之后的nas地址和端口
- 万事大吉:启用
添加http重定制到https规则
- 规则开关:启用
- 操作模式:简易模式
- 监听类型:全选
- 监听端口:同上面的web端口,默认为16666
- 防火墙自动放行:Docker部署点击关闭,否则可启用
- TLS:禁用
- 默认规则:
- 服务类型:重定向
- 默认目标地址:https://{host}:{port}

防火墙安全加固
NAS或路由器中防火墙也应加固一下,添加如下规则:
- 添加本地网段子网所有端口和协议允许访问:192.168.x.0/24
- 添加docker网段子网所有端口和协议允许访问:172.17.0.0/16
- 添加ipv6本地网段允许访问:fe80::-fe80::ffff:ffff:ffff:ffff
- 添加docker网段子网udp 53端口允许访问:172.17.0.0/16
- 添加lucky公网端口允许访问:16666
- 添加nas地址和端口公网拒绝访问:来源IP所有
- 若上述规则皆不符合时:拒绝访问

路由器网关NAT转发
路由器中添加 Lucky 监听端口到公网端口映射,如 16666 – 16666
注意:如果是 ipv6,不需要端口映射就可以访问。大部分防火墙默认是已经阻止了 ipv6 的访问。

《NAS Docker 中安装 Lucky 实现反代备忘录》等您坐沙发呢!