NAS 篇一:[Docker]反向代理Nginx Proxy Manager安装设置安全访问NAS服务
前言
随着家庭nas对外服务日渐增多,便捷安全的访问家庭服务成为必不可少的一环。
场景一:群辉提供photos服务,家人手机客户端通过https连接访问,而群辉证书需要手动导入定期维护易用性差,如果让家人先接VPN再连photos = 软件不可用。
场景二:自建vaultwarden服务,对外连接时必须要https安全访问,要么利用群辉自有反代,要么自建反向代理服务。
场景三:自建emby服务,采用macvlan的方式单独分配了局域网ip(方便流控),而群辉(单网卡)作为宿主机无法与emby(容器)通信,无法使用群辉自有反代或者群辉docker容器自建反代。
综合上述等多个场景的问题最后选择在爱快中安装docker,同时部署容器nginx manager proxy(简称npm)反向代理,解决外网安全访问家庭NAS服务的问题。反向代理没有采用Lucky还是本着开源的项目进行挑选,同时nginx作为反向代理较为成熟,自定义配置自由度较高。
官网地址:https://nginxproxymanager.com/
github地址:https://github.com/NginxProxyManager/nginx-proxy-manager?tab=readme-ov-file
前提条件
域名一枚(任意运营商即可)
NAS一台
爱快(理论来说能跑docker就行,OP也可以)
NPM安装
1、绑定爱快云,同时在爱快云下发docker插件,在爱快 高级应用>插件管理 看到docker图标表示下发成功。
2、在 系统设置>磁盘分区,重新分配磁盘分区(普通存储),然后挂载 opt 路径(路径可以自定义)
3、文件管理中建立2个目录:/opt/docker/npm/letsencrypt和/opt/docker/npm/data,用于后续npm容器的数据持久化。
4、自定义docker镜像源:https://registry.hub.docker.com,存储位置主要用来存放下载的镜像,如果dockerhub官方镜像源无法访问,可以使用国内镜像。
5、镜像管理>添加,搜索镜像 jc21/nginx-proxy-manager,然后 下载 latest,等待下载完毕;如果无法下载或者进度条没有动静请按照步骤3将镜像源切换到国内源。
6、接口管理>添加,名字随意,IPV4地址:172.17.0.0/24,IPV4网关:172.17.0.1,主要是用于docker内部IP分配,可自行定义
7、容器列表>添加,名称随意,内存500M都够,IPV4和IPV6地址空着即可,容器路径按照截图映射下
8、此时容器已经启动,同时应该分配了内网IP:172.17.0.2;端口映射处新增映射,外网端口自定义记住即可,内网端口转发2条,58443到443(https端口),58081到81(npm管理面端口)
9、设置完成后,通过域名+端口应该可以访问npm的管理面(域名ddns此处不做详述),默认账号:admin@example.com,密码:changeme;登录后记得修改账号密码
10、SSL证书申请,填写自己的域名,建议直接申请泛域名,例如自己的域名为a.com,那么此处填写 *.a.com和a.com,所有子域名都可以用此证书;邮箱随便填写,DNS提供商主要是域名当前哪解析,需要授权进行DNS验证(此处也不做详述,如有需求后续细说),等待1分钟证书已经申请完毕;npm同时提供Let's Encrypt证书的自动续期,后续无需再手动续期。
11、配置代理,填写自定义的二级域名xxx.a.com,然后需要映射的服务IP地址和端口,选择刚才建立的SSL证书,开启强制SSL,保存完毕
12、域名解析商新增一条cname到ddns对应的域名即可,然后通过:https://xxx.a.com:58443 访问对应的服务。
NPM反代的优势
对外服务都通过https访问,通信安全有保障,同时NPM提供自动续签减少人工维护成本。
只对外暴露一个https的端口:58443,通过不同的二级域名进行内网服务区分;即使端口被扫,不知道域名也无法访问服务,端口+域名二者缺一不可。
FAQ
问:npm安装后,登录时报错:Bad Gateway。
答:这种是拉取的镜像与当前架构不一致导致的问题,拉取镜像时指定 2.10.4 版本即可,感兴趣的可以查看issue:https://github.com/NginxProxyManager/nginx-proxy-manager/issues/3631
问:群辉photos,ds file等都无法连接。
答:群辉photos,ds file软件http端口都是5000(一定不要用自定义端口),反向代理时指定到5000端口。群辉端口速查:https://kb.synology.cn/zh-cn/DSM/tutorial/What_network_ports_are_used_by_Synology_services
问:为啥一定要自定义端口?
答:家宽一般都屏蔽了80,443端口,所以需要用自定义端口替换
问:有没有不带端口的直接用二级域名访问的方案?
答:有,简单说下2个方案:隐性URL转发(域名须备案),CF配置端口转发(Page Rule)
问:没有公网IP如何访问家庭服务?
答:配置cloudflare tunnel,勉强能用;询问运营商开通IPV6,有IPV6会简单很多
后记
通过npm配置基本实现了家庭web服务的安全访问,分享相关的经验给小伙伴们,有问题可以评论区一起交流探讨,后续不定期更新软路由/网络/NAS等文章,记得点赞关注转发加一键收藏。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
solekg
校验提示文案
人猴泰山
校验提示文案
ChinaToby
校验提示文案
哈士奇不是狼
校验提示文案
永远海子
校验提示文案
DimRacker
校验提示文案
wainyang
校验提示文案
某年某月某天dj
校验提示文案
某年某月某天dj
校验提示文案
wainyang
校验提示文案
DimRacker
校验提示文案
永远海子
校验提示文案
哈士奇不是狼
校验提示文案
ChinaToby
校验提示文案
人猴泰山
校验提示文案
solekg
校验提示文案