上面是lucky系列集锦,下面是本文正文。
反代神器,懒人利器!Docker网络工具Lucky部署使用流程记录
本篇目的为后续文章引用方便,截取自
NAS外网安全访问!公网IP、端口转发、域名解析、反向代理、https访问全流程记录!
部署Lucky
先在文件管理器中创建一个主机挂载目录,这样就算删除容器后配置也不会丢失
打开Container Station,创建应用
代码如下
version: '3'
services:
lucky:
image: gdy666/lucky:latest
container_name: lucky
ports:
- "16601:16601"
volumes:
- /share/CACHEDEV2_DATA/Container/lucky:/goodluck
restart: always
network_mode: host
这个端口就不做修改保持默认,反正以后不会冲突,如下图所示
也可ssh工具进入后台,直接输入Docker run命令安装,标红的可进行修改,参照上面docker compose
-p 16601:16601
-v /root/luckyconf:/goodluck
#挂载主机目录, 删除容器后配置不会丢失。可替换 /root/luckyconf 为主机目录, 配置文件为lucky.conf
docker run -d --name lucky --restart=always --net=host -p 16601:16601 -v /root/luckyconf:/goodluck gdy666/lucky
运行成功后,我们便可在web端输入 NAS_IP:16601进行访问,默认账户密码:666/666
首次进入建议先去设置中修改账户密码
接下来开始进行动态域名解析
DDNS(动态域名解析)
左侧菜单,点击【动态域名】,继续点击【添加任务】
任务名称随意(比如**NAS外网),选择对应域名服务商,并填写域名服务商提供的SecretID/KEY
选择公网类型,域名列表填写示例 “abcd.com 按下回车 继续输入 *.abcd.com”,保证一行一条域名。填写完毕后如下图所示,点击右下角的【添加任务】
像下图这样便是成功了
SSL证书
左侧菜单,点击【安全管理】后,选择右上的【添加证书】
让我们来看看该如何设置:
初始的界面可能会不一样,证书的添加方式选择【ACEM】即可
域名颁发机构为Let's Encrypt,SSL证书有效期三个月,但是Lucky支持自动续签,我们无需理会
验证方式还有密钥以及域名列表同上文,填写方式相同
更多设置勾选“DNS查询强制IPv4”和“DNS查询仅使用TCP通道”
其它内容无需做额外改动,最终如下图所示,点击右下角【添加】
证书不会立刻申请下来,我们得等个十几秒或一分钟,就会看到已经成功更新
申请日志
接下来就是最后一步,反向代理!
反向代理
左侧菜单,点击【Web服务】,再选择顶部的【添加Web服务规则】,弹出下图窗口
规则名称随便填
监听类型根据宽带情况选择,我这是IPv4
监听端口,填写可用端口,标准端口443国内基本是关闭状态,默认是16666 我改成了8881
我们要实现https访问,TLS是必须的,必须开启!
接下来要做的是点击上图中的【添加Web服务子规则】
如下图所示,会出新的子规则窗口
名称依旧随意(比如 **nas)
服务类型默认为反向代理,无需修改
前端域名/地址:填写一个好记忆的二级域名,我用来访问NSA,就可以填写成 nas.abcd.com;若是webdav,就可以填写 webdav.abcd.com;甚至lucky本身也做个反代,就可以填写 lucky.abcd.com
后端地址即为NAS局域网地址 标准填写示例:http://192.168.66.66:5000
BasicAuth认证就是通过域名访问进入服务前再加一道锁,保护服务安全,有需要的服务可以开启
检查一遍,没问题就点击右下角【添加】
还差最后一步,回到我们的路由器后台将监听端口转发一下,我之前设置成了8881,把它转发出来!
最终展示
浏览器输入 nas.xxx.love:8881,访问我的NAS,可以看到小🔒出现,目的达成
NAS搞完,Lucky自身也顺路反代一下,只需要在原来的规则下添加第二个子规则即可
二级域名设置为 lucky.xxx.love
最后点击右下加【修改】,因为是同一个监听端口,路由器也不需要再次转发,保存后,Web直接输入域名+端口就可成功访问
▲后面发现移动端输入域名:端口,默认还是http访问,必须手打 https://,这就很麻烦,解决方法如下:
▼回到Lucky,左菜单点击【Web服务】,添加一条全新的规则
规则名称自定
操作模式选择“定制模式”
监听类型按照公网类型选择
监听端口跟上面设置的监听端口相同,我这里为8881
TLS千万不要开启,因为要让http自动重新定向到https
▲点击上图的【默认子规则】
服务类型选择“重定向”
默认目标地址填写 https://{host}:{port}
▲最后点击右下角的【修改】即可~
评论区问题收集。
问:申请lets encrypt证书的时候,最后日志里提示: acme: error: 400 :: urn:ietf:params:acme:error:dns :: During secondary validation: DNS problem: server failure at resolver looking up TXT for _acme-challenge.***.cn,证书申请不下来。多次重试均失败。
答:上网没找到办法,进了lucky的QQ群问,让申请freessl证书。后来自己继续研究,采取了几个步骤,也不知道到底是哪个环节搞定的。1、域名解析(我的是腾讯云)增加了一个TXT的解析,主机记录_acme-challenge,记录值从网上搜的,v=spf1 a mx ~all。2、lucky里申请SSL证书的部分,“更多设置”里的“通过DNS查询获取主域名、CNAME支持、使用IPv4通道申请证书、DNS查询强制IPv4、DNS查询仅使用TCP、禁用完整传播要求、忽略传播检查错误”等各个选项都去掉。
就这样搞定了。也不知道是lets encrypt突然正常了,还是上边的措施起作用了,反正就是申请下来了。
问:出现acme: Waiting for DNS record propagation.用腾讯云申请证书显示waiting for dns record propagation是怎么回事呢
答:是不是开了科学,关了试试
问:你好,大佬问一下,我这添加子规则之后,emby和calibre等容器就远程进不去了,显示502 bad gateway,其他的像是nas,lucky却是能正常进去,请问一下这是什么原因导致的
答:建议一,emby这些的内部IP不一样的,桥接模式创建每次重启还会变ip,重建设置固定IP,再反代这个IP。建议二,已经解决了,却是没想到需要使用127.0.0.1
还没有评论,来说两句吧...