如何在 QNAP Container Station 運行 Nginx Proxy Manager

Nginx Proxy Manager 是一套以 Nginx 為核心的反向代理管理工具。它最大的特色是提供 Web 圖形化管理介面,讓你不必自己撰寫大量 nginx.conf,就能設定網域轉發、HTTPS、SSL 憑證與存取控制。

官方主要以 Docker 映像檔方式提供,今天我們就來教大家如何在 QNAP Container Station 運行 Nginx Proxy Manager。

https://hub.docker.com/r/jc21/nginx-proxy-manager

services:
  app:
    image: 'docker.io/jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

使用容器運行

我們先到儲存空間,建立容器稍後使用的 Volume。

這兩個 Volume 都是用來讓 Nginx Proxy Manager 的資料在容器重建、更新後仍然保留下來。

  • npm_data:Nginx Proxy Manager 本身的應用程式資料,例如 SQLite 資料庫、Proxy Host 與 Redirection Host 等相關設定。
  • npm_letsencrypt:專門存放 SSL/TLS 憑證相關資料,主要就是 Let’s Encrypt 憑證。

接著建立容器,輸入映像檔名稱,下一步。

  • 映像檔:jc21/nginx-proxy-manager:latest

設定容器,點選進階設定。

點選網路,網路模式選擇自訂 Bridge,勾選使用靜態 IP 位址,套用。

點選儲存空間,新增儲存空間對應如下。

  • npm_data:/data
  • npm_letsencrypt:/etc/letsencrypt

點選套用,下一步。

確認摘要無誤後,點選完成。

容器順利運行

訪問剛剛設定的 IP 位置,正常畫面如下。

訪問 Nginx Proxy Manager 的管理介面,正常畫面如下。

建立管理人員帳號與密碼,這樣就完成了。

使用應用程式運行

到應用程式,點選建立。

使用下列 YAML 來建立 Nginx Proxy Manager

version: '3'

services:
  npm:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    networks:
      qnet:
        ipv4_address: 192.168.0.100
    volumes:
      - npm_data:/data
      - npm_letsencrypt:/etc/letsencrypt

volumes:
  npm_data:
  npm_letsencrypt:

networks:
  qnet:
    external: true
    name: qnet-static-eth0-0fa2ce

應用程式與容器順利運行

應用程式會自動新增儲存空間如下

  • app-1_npm_data
  • app-1_npm_letsencrypt

如何讓應用程式建立的容器透過 Qnet 取得區域網路獨立 IP,可以參考之前寫過的文章。

今天的分享就到這邊,感謝收看。

參考文件

https://nginxproxymanager.com

https://github.com/NginxProxyManager/nginx-proxy-manager

https://hub.docker.com/r/jc21/nginx-proxy-manager?