一直以来,老苏都是使用群晖内置的反向代理,虽然很方便易用,但在某些情况下显得并不灵活。比如老苏打算安装 Authelia
,需要修改 nginx
转发规则,必须通过 SSH
登录后找到相应的文件修改,这一点上不如 nginx-proxy-manager
,当你习惯后,你会发现 npm
的优点远不止这点。
什么是 Nginx Proxy Manager ?
Nginx Proxy Manager
是用于管理Nginx
代理主机的Docker
容器,具有简单、强大的界面。它使您可以轻松地转发到您在家里或其他地方运行的网站,包括免费的SSL
,而无需对Nginx
或Letsencrypt
了解太多。
安装
数据库
通过 phpMyAdmin
在 MariaDB 10
中新建用户 npm
,创建同名的库 npm
并授予所有权限。
老苏试过
MariaDB 5
,写数据库有问题,表现为登录不成功,显示Bad Gateway
错误
安装镜像
在群晖上以 Docker 方式安装。
在注册表中搜索 nginx-proxy-manager
,选择第一个 jc21/nginx-proxy-manager
,版本选择 latest
。
卷
在 docker
文件夹中,创建一个新文件夹,并将其命名为 npm
,再建 2
个子目录,分别命名为 data
和 letsencrypt

文件夹 | 装载路径 | 说明 |
---|---|---|
docker/npm/data | /data | 存放数据 |
docker/npm/letsencrypt | /etc/letsencrypt | 存放自动申请证书 |
端口
端口不冲突就行,不确定的话可以用命令查一下
# 查看端口占用
netstat -tunlp | grep 端口号复制
本地端口 | 容器端口 |
---|---|
2443 | 443 |
2080 | 80 |
2081 | 81 |
环境
可变 | 值 |
---|---|
DB_MYSQL_HOST | 群晖主机 IP 地址 |
DB_MYSQL_PORT | 默认为 3306 |
DB_MYSQL_USER | 根据前面的设置,数据库用户为 npm |
DB_MYSQL_PASSWORD | 数据库用户 npm 的密码 |
DB_MYSQL_NAME | 根据前面的设置,库名为 npm |
运行
在浏览器中输入 http://群晖IP:2081
就能看到主界面
默认的账号:
admin@example.com
,密码:changeme
登录后可以编辑用户信息
之后是密码
frp
因为老苏的宽带没有公网 IP
,一直以来都是用 frp
做内网穿透,所以首先要对 frpc.ini
做相应的修改
local_ip
是运行frpc
的群晖的IP
local_port
要根据前面设置的端口进行变更custom_domains
用了泛域名,没有像在『 frp基础设置示例详解 』一文中指向了具体的子域名,例如:nas.laosu.ml
[http_xxxxxx]
type = http
local_ip = 192.168.0.199
local_port = 2080
custom_domains = *.laosu.ml
[https_xxxxxx]
type = https
local_ip = 192.168.0.199
local_port = 2443
custom_domains = *.laosu.ml复制
证书
进入主菜单的 SSL Certificates
Add SSL Certificate
有两种方式,一种是在线申请,另一种是添加已有证书
在线申请和我们在『 免费的泛域名https证书自动续期 』一文中介绍的非常类似,需要选择 DNS
解析服务提供商,以及填写 token
等参数
老苏因为已经配置了 Certbot
并实现了自动续期,所以只需要导入现有证书就可以了,Name
老苏用了域名,这样比较容易识别
私钥 Certificate Key
对应privkey.pem
证书 Certificate
对应fullchain.pem
中间证书 Intermediate Certificate
对应chain.pem
上传成功后,证书存放在 /data/custom_ssl/
目录中以 npm-1
、 npm-2
等子目录保存
反向代理
进入主菜单的 Hosts
以将 http://192.168.0.197:5000
映射到 https://nas.laosu.ml
为例
因为是 Docker
容器方式运行的,所以即便是本机也不要用localhost
,一定要用IP
默认 Cache Aeeets
、Block Common Exploits
、Websocket Support
建议都勾上
选择 SSL
证书
因为准备用 https
协议访问,所以必须勾选 Force SSL
其他的 HTTP/2
和 HSTS
和群晖内置的是一样的,可根据需要勾选,没啥问题的话老苏建议都勾上
小结
为什么要另外安装 nginx proxy manager
而不是用群晖内置的反向代理的原因,老苏在一开始就讲了,装完之后老苏还发现了几个优点:
不用再依赖群晖,这使得老苏将来可以很方便的切换到其他平台 即便是 DSM6.1.7
也不再有 『 HomeAssistant设置https访问后的问题 』一文中的情况,只要简单勾选Websockets support
即可,而不需要各种修改速度快,也许只是心理感觉
题外
最终 Authelia
并没安装成功,原因是不能在非标的端口上使用。
由于没有备案的缘故,https
协议不能使用 443
端口
假设你用了非标的 444
, Authelia
会自动截掉端口(因为 443
是可以不用写的),从而导致资源加载失败👇
Refused to load the image 'https://auth.laosu.ml/favicon.ico' because it violates the following Content Security Policy directive: "default-src 'self'". Note that 'img-src' was not explicitly set, so 'default-src' is used as a fallback.
复制
已经在 Authelia
的 issues
提了,但是作者目前没有回复
参考文档
Nginx Proxy Manager
地址:https://nginxproxymanager.com/jc21/nginx-proxy-manager: Docker container for managing Nginx proxy hosts with a simple, powerful interface
地址:https://github.com/jc21/nginx-proxy-managerNGINX proxy manager
地址:https://www.blackvoid.club/nginx-proxy-manager/Running authelia on a non standard HTTPs port. Base href is not valid. · Issue #2765 · authelia/authelia
地址:https://github.com/authelia/authelia/issues/2765