Nginx Proxy Manager

前言

這個東西是等於是一個Web GUI界面的Nginx plug in,雖然他要用到SQL DB現在可以使用sqlite,但是說穿了就是把nginx的設定改成圖形化並且強化反向代理的設定以及加上certbot的功能不用自己再手動處理SSL KEY(不過我還是希望他可以直接load進已經有的key)

基本做法

MariaDB

基本上可以沿用Librenms那篇裡面已經建好的mariadb,建個帳號跟database就好,我實際上的作法是直接用phpAdmin建一個就解決了

Sqlite

現在什麼都不設定就預設會使用sqlite老實說對於現在我喜歡把各項服務與對應的DB分開建立的方法來說非常合適(尤其NPM是很輕量的DB需求…)

Nginx Proxy Manager

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#docker-compose.yml
--------------------------------------------------------------------------------------------------------------------------------
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80' #這個是正常的http
- '81:81' #這個是管理界面
- '443:443' #這個是正常的https
# 註解掉就會使用對應的sqlite
# environment:
# DB_MYSQL_HOST: "${your_db_ip}"
# DB_MYSQL_PORT: 3306
# DB_MYSQL_USER: "npm"
# DB_MYSQL_PASSWORD: "${your_passwd}"
# DB_MYSQL_NAME: "npm"
volumes:
- /var/lib/docker/volumes/nginx-proxy-manager/data:/data
- /etc/letsencrypt:/etc/letsencrypt

使用方法

  1. 設定帳號

架設好了之後先用預設的帳號密碼進入一進去他就會強迫你修改admin的帳號密碼

1
2
3
#預設的帳號密碼
Email: admin@example.com
Password: changeme
  1. 注意事項
    • 他不能直接用已經申請好的key,得利用他的界面重新申請cert.
    • 所有的DN主目錄不能是空的服務,所以我才會弄個heimdall來當首頁
    • 所有特殊設定請在custom location -> location旁的齒輪內貼上,不然不會動

曾經的問題

為什麼講曾經…因為後來一堆服務我都改用Traefik來做SSL+Reserve Proxy

所以就變成曾經…

Calibre-web問題

貼上下列敘述後就可以動了

1
2
3
4
5
proxy_bind $server_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Script-Name /${your_location};

Portainer-ce問題

目前還沒找到讓portainer-ce在location下正常運作的方法,其實可以很奢侈的每一種服務都掛一個DN的方法來做virtual host的作法應該就可以了

現在的問題

現在的主要應用是拿來做內部服務的轉址,在內部DNS設定好的情況下,只有一個重點達成就可以直接以container name來進行轉址(連port都不用maping)

重點

Nginx Proxy Manager跟其他需要他轉址的container在同一個docker network底下

然後就可以

1
http://emby.private --> http:// emby port 8096