差異處
這裏顯示兩個版本的差異處。
兩邊的前次修訂版 前次修改 下次修改 | 前次修改 | ||
tech:nginx_proxy_manager [2022/09/03 19:27] – jonathan | tech:nginx_proxy_manager [2024/09/11 10:38] (目前版本) – 強化 Proxy Host - NextCloud 的進階設定 jonathan | ||
---|---|---|---|
行 1: | 行 1: | ||
- | ====== | + | ====== Nginx Proxy Manager(NPM) 當 Revers Proxy Server(Docker) |
* 環境 : [[tech/ | * 環境 : [[tech/ | ||
* 安裝的主機 IP : 192.168.11.231 | * 安裝的主機 IP : 192.168.11.231 | ||
行 5: | 行 5: | ||
===== 編輯與啟動 ==== | ===== 編輯與啟動 ==== | ||
* 編輯 yml 檔案 <cli> | * 編輯 yml 檔案 <cli> | ||
- | cd ~ | + | vi docker-compose.yml</ |
- | mkdir -p nginx-proxy-manager | + | services: |
- | cd nginx-proxy-manager | + | nginx-proxy-manager: |
- | vi docker-compose.yml</ | + | image: jc21/nginx-proxy-manager:latest |
+ | | ||
+ | | ||
+ | ports: | ||
+ | - ' | ||
+ | - ' | ||
+ | - ' | ||
+ | volumes: | ||
+ | - ./ | ||
+ | - ./ | ||
+ | |||
+ | goaccess: | ||
+ | image: xavierh/ | ||
+ | container_name: | ||
+ | restart: always | ||
+ | ports: | ||
+ | - ' | ||
+ | environment: | ||
+ | - TZ=Asia/ | ||
+ | - SKIP_ARCHIVED_LOGS=False #optional | ||
+ | - DEBUG=False #optional | ||
+ | - BASIC_AUTH=False #optional | ||
+ | - BASIC_AUTH_USERNAME=user #optional | ||
+ | - BASIC_AUTH_PASSWORD=pass #optional | ||
+ | - EXCLUDE_IPS=127.0.0.1 #optional - comma delimited | ||
+ | - LOG_TYPE=NPM #optional - more information below | ||
+ | - ENABLE_BROWSERS_LIST=True #optional - more information below | ||
+ | - CUSTOM_BROWSERS=Kuma: | ||
+ | - HTML_REFRESH=5 #optional - Refresh the HTML report every X seconds. https:// | ||
+ | - KEEP_LAST=30 #optional - Keep the last specified number of days in storage. https:// | ||
+ | volumes: | ||
+ | - ./ | ||
+ | |||
+ | watchtower: | ||
+ | image: containrrr/ | ||
+ | container_name: | ||
+ | volumes: | ||
+ | - /var/run/docker.sock:/ | ||
+ | environment: | ||
+ | | ||
+ | - WATCHTOWER_SCHEDULE=0 0 4 * * * | ||
+ | - WATCHTOWER_CLEANUP=true | ||
+ | labels: | ||
+ | - " | ||
+ | restart: unless-stopped | ||
+ | </ | ||
+ | * 啟動服務 < | ||
+ | docker | ||
+ | </ | ||
+ | |||
+ | ===== 進入網頁設定 ===== | ||
+ | * http://192.168.11.231: | ||
+ | * 登入後會要求更改與設定 Administrator 的帳號密碼 \\ {{: | ||
+ | * 新增一個 Proxy Host : | ||
+ | * Hosts -> Porxy Hosts -> Add Proxy Host -> Exp. www.ichiayi.com ichiayi.com | ||
+ | * Detail -> Exp. 內部實際主機的 IP 是 https:// | ||
+ | * Custom locations -> Add location -> Exp. 將之前的 /wiki 導到現在的沒有 /wiki 的網址 \\ {{: | ||
+ | * SSL -> Exp. 設定由 Let's Encrypt 簽發 SSL 憑證, 並透過 Cloudflare DNS 進行驗證 \\ {{: | ||
+ | * 需要至 Cloudflare 的管理介面產生一個可以修改 Domain Name 權限的 API Token \\ {{: | ||
+ | * 將產生的 API Token 設定到 dns_cloudflare_api_token | ||
+ | * 要勾選同意 Let's Encrypt 服務條款, | ||
+ | |||
+ | ===== 更版升級 ===== | ||
+ | * 只要執行以下命令就可以直接更版 < | ||
+ | docker compose pull && docker compose up -d | ||
+ | </ | ||
+ | * 查看啟動過程 Logs <cli> | ||
+ | docker compose logs -f | ||
+ | </ | ||
+ | |||
+ | ===== 問題處理 ===== | ||
+ | ==== 1. 使用 Cloudflare 當 CDN 時傳入實際用戶 IP 的設定 ==== | ||
+ | * 參考 - https:// | ||
+ | * 編輯 Proxy Host -> Advanced -> Custom Nginx Configuration 加入 < | ||
+ | |||
+ | ==== 2. 解決無法下載Proxy Host 超過 1GB 大檔案的設定 ==== | ||
+ | * Proxy Host 是 NextCloud 要提供檔案下載時發現預設下載檔案大小限制為 1GB | ||
+ | * 參考 - https:// | ||
+ | * 另外 NextCloud/ | ||
+ | * 編輯 Proxy Host -> Advanced -> Custom Nginx Configuration 加入 < | ||
+ | client_body_buffer_size 512k; | ||
+ | proxy_read_timeout 86400s; | ||
+ | client_max_body_size 0; | ||
+ | if ($request_method !~ ^(GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS)$) { | ||
+ | return 405; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ==== 3. 解決忘記登入資訊的做法 ==== | ||
+ | * 參考 - https:// | ||
+ | * 主要就是還原成預設登入帳號密碼的作法 | ||
+ | * login: [email protected] | ||
+ | * pass: changeme | ||
+ | |||
+ | ==== 4. 統計分析紀錄的做法 ==== | ||
+ | * 可使用 [[https:// | ||
+ | * 安裝方式可參考 [[tech/ | ||
+ | |||
+ | ==== 5. 安裝環境無 IPv6 的議題 ==== | ||
+ | * 參考 - https:// | ||
+ | * 無 IPv6 的環境啟動時 log 內會出現類似以下的錯誤訊息 < | ||
+ | : | ||
+ | app-1 | ❯ Starting nginx ... | ||
+ | app-1 | nginx: [emerg] socket() [::]:80 failed (97: Address family not supported by protocol) | ||
+ | app-1 | ❯ Starting nginx ... | ||
+ | app-1 | nginx: [emerg] socket() [::]:80 failed (97: Address family not supported by protocol) | ||
+ | : | ||
+ | </ | ||
+ | * 只要在 docker-compose.yml 內的環境變數加上 **DISABLE_IPV6=true** 即可 Exp. <file> | ||
version: ' | version: ' | ||
services: | services: | ||
行 18: | 行 126: | ||
- ' | - ' | ||
- ' | - ' | ||
+ | environment: | ||
+ | - DISABLE_IPV6=true | ||
volumes: | volumes: | ||
- ./ | - ./ | ||
- ./ | - ./ | ||
+ | </ | ||
+ | |||
+ | ==== 6. 升級到 v2.11 後 Custom locations 無法運作議題 ==== | ||
+ | * 參考 - https:// | ||
+ | * 目前 Workaround 作法 | ||
+ | - 在 docker-compose.yml 目錄新增 _hsts_map.conf 檔案< | ||
+ | touch _hsts_map.conf | ||
</ | </ | ||
- | * 啟動服務 | + | - 修改 docker-compose.yml 內增加 < |
- | docker-compose up -d | + | vi docker-compose.yml |
+ | </ | ||
+ | : | ||
+ | - ./ | ||
+ | </ | ||
+ | - 重新啟動 | ||
+ | docker compose up -d | ||
</ | </ | ||
- | ===== 進入網頁設定 | + | ==== 7. 匯出設定資料到另外一台主機匯入的作法 |
- | | + | |
- | | + | cd nginx-proxy-manager |
+ | tar -cvf data.tar data/ | ||
+ | tar -cvf letsencrypt.tar letsencrypt/ | ||
+ | </ | ||
+ | - 將 data.tar 與 letsencrypt.tar 複製到目標主機 Exp.< | ||
+ | scp *.tar 172.16.1.99:/ | ||
+ | </ | ||
+ | | ||
+ | mv *.tar nginx-proxy-manager/ | ||
+ | cd nginx-proxy-manager | ||
+ | |||
+ | docker compose down | ||
+ | |||
+ | mv data data.org | ||
+ | mv letsencrypt letsencrypt.org | ||
+ | |||
+ | tar -xvf data.tar | ||
+ | tar -xvf letsencrypt.tar | ||
+ | |||
+ | docker compose up -d | ||
+ | docker compose logs -f | ||
+ | </ | ||
===== 參考網址 ===== | ===== 參考網址 ===== | ||
* https:// | * https:// | ||
+ | |||
{{tag> | {{tag> |