Nginx Proxy Managerとは、ウェブサービスのプロキシを担ってくれるシステムです。

主に以下の機能があります。

  • ネットワーク内のウェブサービスを外部へ公開
  • 管理UI
  • 複数ユーザーのサポート
  • Docker上で動作
  • Let’s Encryptを利用したサイトのセキュア化

環境

OS Debian 11 Bullseye
vCPU 2 Core
vMEM 2GB
vDISK 25G

事前準備

Docker環境が構築済みである必要があります。

Debian上でのDocker構築については以下をご参照ください。

Test

インストール

ディレクトリを用意し、docker-compose.ymlを作成します。

1
2
3
mkdir /opt/nginx-proxy-manager
cd /opt/nginx-proxy-manager
vim docker-compose.yml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
version: "3"
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      # These ports are in format <host-port>:<container-port>
      - '80:80' # Public HTTP Port
      - '443:443' # Public HTTPS Port
      - '81:81' # Admin Web Port
      # Add any other Stream port you want to expose
      # - '21:21' # FTP

    # Uncomment the next line if you uncomment anything in the section
    environment:
      # Uncomment this if you want to change the location of
      # the SQLite DB file within the container
      DB_SQLITE_FILE: "/data/database.sqlite"

      # Uncomment this if IPv6 is not enabled on your host
      DISABLE_IPV6: 'true'

    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

Nginx Proxy Managerでは、データベースを利用します。MySQLやMariaDBなどのRDBを利用できますが、規模が小さいためsqliteを利用します。

初期設定

ホスト名:81で管理画面へアクセスします。

ログイン画面

admin@example.com / changemeでログインできます。ログイン後、デフォルトユーザーの情報を変更します。

情報変更画面

パスワードを変更します。

パスワード変更画面

ダッシュボードが表示されました。 ダッシュボード

外向きでは以下のように表示されます。 プロキシ画面

終わりに

とても簡単に構築することができたので非常に驚きました。 リソースにも限りがあるため、ルーターとして利用しているpfSenseのグローバルIPにNATを設定して運用したいと思います。