今日热门-什么值得买好文 ( ) • 2024-04-04 17:39

前言

随着家庭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图标表示下发成功。

[Docker]反向代理Nginx Proxy Manager安装设置安全访问NAS服务

2、在 系统设置>磁盘分区,重新分配磁盘分区(普通存储),然后挂载 opt 路径(路径可以自定义)

[Docker]反向代理Nginx Proxy Manager安装设置安全访问NAS服务

3、文件管理中建立2个目录:/opt/docker/npm/letsencrypt/opt/docker/npm/data,用于后续npm容器的数据持久化。

[Docker]反向代理Nginx Proxy Manager安装设置安全访问NAS服务

4、自定义docker镜像源:https://registry.hub.docker.com,存储位置主要用来存放下载的镜像,如果dockerhub官方镜像源无法访问,可以使用国内镜像。

[Docker]反向代理Nginx Proxy Manager安装设置安全访问NAS服务

5、镜像管理>添加,搜索镜像 jc21/nginx-proxy-manager,然后 下载 latest,等待下载完毕;如果无法下载或者进度条没有动静请按照步骤3将镜像源切换到国内源。

[Docker]反向代理Nginx Proxy Manager安装设置安全访问NAS服务

6、接口管理>添加,名字随意,IPV4地址:172.17.0.0/24,IPV4网关:172.17.0.1,主要是用于docker内部IP分配,可自行定义

[Docker]反向代理Nginx Proxy Manager安装设置安全访问NAS服务

7、容器列表>添加,名称随意,内存500M都够,IPV4和IPV6地址空着即可,容器路径按照截图映射下

[Docker]反向代理Nginx Proxy Manager安装设置安全访问NAS服务

8、此时容器已经启动,同时应该分配了内网IP:172.17.0.2;端口映射处新增映射,外网端口自定义记住即可,内网端口转发2条,58443到443(https端口),58081到81(npm管理面端口)

[Docker]反向代理Nginx Proxy Manager安装设置安全访问NAS服务[Docker]反向代理Nginx Proxy Manager安装设置安全访问NAS服务

9、设置完成后,通过域名+端口应该可以访问npm的管理面(域名ddns此处不做详述),默认账号:[email protected],密码:changeme;登录后记得修改账号密码

[Docker]反向代理Nginx Proxy Manager安装设置安全访问NAS服务[Docker]反向代理Nginx Proxy Manager安装设置安全访问NAS服务

10、SSL证书申请,填写自己的域名,建议直接申请泛域名,例如自己的域名为a.com,那么此处填写 *.a.com和a.com,所有子域名都可以用此证书;邮箱随便填写,DNS提供商主要是域名当前哪解析,需要授权进行DNS验证(此处也不做详述,如有需求后续细说),等待1分钟证书已经申请完毕;npm同时提供Let's Encrypt证书的自动续期,后续无需再手动续期。

[Docker]反向代理Nginx Proxy Manager安装设置安全访问NAS服务

11、配置代理,填写自定义的二级域名xxx.a.com,然后需要映射的服务IP地址和端口,选择刚才建立的SSL证书,开启强制SSL,保存完毕

[Docker]反向代理Nginx Proxy Manager安装设置安全访问NAS服务[Docker]反向代理Nginx Proxy Manager安装设置安全访问NAS服务

12、域名解析商新增一条cname到ddns对应的域名即可,然后通过:https://xxx.a.com:58443 访问对应的服务。

NPM反代的优势

  • 对外服务都通过https访问,通信安全有保障,同时NPM提供自动续签减少人工维护成本。

  • 只对外暴露一个https的端口:58443,通过不同的二级域名进行内网服务区分;即使端口被扫,不知道域名也无法访问服务,端口+域名二者缺一不可。

FAQ

问:npm安装后,登录时报错:Bad Gateway。

[Docker]反向代理Nginx Proxy Manager安装设置安全访问NAS服务

答:这种是拉取的镜像与当前架构不一致导致的问题,拉取镜像时指定 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等文章,记得点赞关注转发加一键收藏。

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~