一直以來,老蘇都是使用群暉內置的反向代理,雖然很方便易用,但在某些情況下顯得並不靈活。比如老蘇打算安裝 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 埠號
本地埠容器埠2443443208080208181環境
可變值DB_MYSQL_HOST群暉主機 IP 地址DB_MYSQL_PORT默認為 3306DB_MYSQL_USER根據前面的設置,資料庫用戶為 npmDB_MYSQL_PASSWORD資料庫用戶 npm 的密碼DB_MYSQL_NAME根據前面的設置,庫名為 npm運行在瀏覽器中輸入 http://群暉IP:2081 就能看到主界面
默認的帳號:admin@example.com,密碼:changeme
登錄後可以編輯用戶信息
之後是密碼
frp因為老蘇的寬帶沒有公網 IP ,一直以來都是用 frp 做內網穿透,所以首先要對 frpc.ini 做相應的修改
local_ip 是運行 frpc 的群暉的 IPlocal_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 而不是用群暉內置的反向代理的原因,老蘇在一開始就講了,裝完之後老蘇還發現了幾個優點:
不用再依賴群暉,這使得老蘇將來可以很方便的切換到其他平臺題外最終 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