EGINX PROXY MANAGER 備忘録と雑感

Server
Photo by hyt.

Eginx Proxy Manager 備忘録と雑感です.

いつもの通り結論から書くと,

自宅で複数 Web サービスを運用するときの飛び道具!

だと思います.

NGINX PROXY MANAGER って?

高速が売りの Web Server である NGINX を用いたリバースプロキシアプライアンスソフトウェアです.

Nginx Proxy Manager
Docker container and built in Web Application for managing Nginx proxy hosts with a simple, powerful interface, providin...

このページを見にくるような人には釈迦に説法だと思いますが,リバースプロキシとは,内部ネットワークから外部に接続するときに使う中継サーバーがプロキシなので,その逆,つまり,外部ネットワークからの通信を内部に中継するサーバーです.

  • Web サービスの複数サーバーへの負荷分散
  • セキュリティ対策
  • Web サービス管理の容易化

などのため,ある程度以上の規模の業務用途ウェブサービスだとほぼ必須で,有名どころの Web Server プログラムである Apache, Nginx, IIS 等を用いて構築できます.また,アプライアンスとして有名どころだと,

辺りなんじゃないかなと思います(まぁ,リバースプロキシと言うよりロードバランサーですが,単に呼び方が違うだけだと思う).

実はかなり昔,本 blog でも IIS を WordPress のリバースプロキシとして使うという記事

IIS の ARR で Wordpress のリバースプロキシ
備忘録と情報交換を目的に Wordpress でローカルにblogサーバーを構築し,外部からのアクセスは,既存のSSL導入済みのIIS(Internet Information Service) からのリバースプロキシ経由で行えるよう,随分...

を書いているのですが,Apache にしろ Nginx にしろリバースプロキシとして使うにはそれなりの理解も必要だし設定も必要で,個人で気軽に使うものって感じは少なくとも私の場合はしませんでした.

しかし,NGINX PROXY MANAGER でこの感覚,完全に過去のものとなってしまいました.

NGINX PROXY MANAGER の導入

NGINX PROXY MANAGER を導入するには docker と docker-compose が必要です.最近の Linux ならどのディストリビューションでも簡単に導入できるはずです.

私の場合は自宅の VMWare ESXi7 環境上に Alpine Linux を導入し,

# apk update
# apk add docker docker-compose
# service docker start
# rc-update add docker boot
# groupadd hyt docker

のように docker を導入しました(最後の groupadd は hyt で docker を操作できるようにするため).

Alpine Linux インストール備忘録
Apine Linux インストール備忘録です. Alpine Linux ってなに? Alpine Linux と言えば,最近 Docker なんかのコンテナのベースとして利用されるディストリビューションです.これ,Linux のディスト...
Alpine Linux に open-vm-tools を追加する備忘録
Alpine Linux に open-vm-tools を追加する備忘録です. 公式の情報は以下の通り. 手順は以下の通りでした. まず,apk の Community Repository を以下の通り有効化します.単に communi...

あとは,以下のように docker-compose.yml を作って,

$ mkdir compose
$ cd compose
$ mkdir nginxproxymanager
$ cd nginxproxymanager
$ vi docker-compose.yml
version: '3.8'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    container_name: nginxproxymanager
    restart: unless-stopped
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    volumes:
      - /var/lib/docker/volumes/nginxproxymanager_data:/data
      - /var/lib/docker/volumes/letsencrypt:/etc/letsencrypt

networks:
  default:
    enable_ipv6: true
    ipam:
      config:
        - subnet: fd3a:3aa4:b089:2::/64
          gateway: fd3a:3aa4:b089:2::1

最後に,

$ docker-compose up -d

とすれば EGINX PROXY MANAGER が起動します.

NGINX PROXY MANAGER の初期設定

NGINX PROXY MANAGER のログイン画面へのアクセスは,

  • http://192.168.0.100:81

です.ここで 192.168.0.100 は Alpine Linux の IP アドレスです.初期ユーザーとパスワードは,

で,ログインすると Email と Password の変更を求められるので,求めに応じて適当に変更すれば初期設定は終了です.

NGINX PROXY MANAGER を使う

ここまでで,NGINX PROXY MANAGER を使う準備はできましたが,実際に便利に使うにはさらに,

  • DNS の設定(もしくはローカルに導入)
  • 認証局の導入(もしくはサーバー証明書の取得)
  • ルーターのポート開放やPBRの設定

が必要になってきます.このうち DNS のローカルネットへの導入については別記事を準備しようと思っていますが,これは NAS のパッケージとして導入できるものを使っても良いと思います.実際に Synology の NAS にも DNS Server というパッケージが用意されていて GUI で簡単に管理できます.

Synology NASに DNS サーバーを設定する方法は - Synology ナレッジセンター
Synologyナレッジセンターは、総合的なサポートをお届けするもので、よくある質問に対する回答の提供、トラブルシューティング手順、ソフトウェア チュートリアル、そして必要になるすべての技術文書が提供されます。

また,認証局の導入についてはかなり昔に以下の記事を書いていますので,こちらをご覧いただければと思います.

ローカルな認証局 を CentOS7 で作り,運用する備忘録
ローカルな認証局 を CentOS7 で作る備忘録です. はじめに 早いもので, から2年経ち,使っていた証明書の期限が迫ってきました.もちろん証明書を更新しないといけないのですが,以前使っていた Windows 2012 の認証局は廃止し...

以下,flame.labohyt.net を実際に EGINX PROXY MANAGER で公開する例を示しますが,あらかじめ,

  1. 適当な DNS の A, AAAA, CNAME レコードのいずれかに flame.labohyt.net が登録されており,きちんと名前解決ができる
  2. ルーターのポート解放や PBR の設定がきちんと出来ていて,NGINX PROXY MANAGER を導入したサーバーの80番と443番ポートにアクセスできる

状態であると仮定します.ここまで出来ていれば,EGINX PROXY MANAGER で簡単に Web サービスをネットに公開することができます.

EGINX PROXY MANAGER の設定例

まず,flame については以下の記事をご覧頂ければと思いますが,見た目の綺麗な Web ランチャーアプリです.

Flame 備忘録と雑感
Flame 雑感と備忘録です. いつもの通り結論から書くと, 見た目シンプルな Web ランチャーアプリを探しているならオススメ! です. Flame ってなに? Flame と言われても……という方が大半だと思いますので,まずはこのアプリ...

本アプリ,残念ながら SSL に対応していませんので,そのままウェブに公開することはできません.したがって,このアプリを NGINX PROXY MANAGER で SSL 対応させることにしましょう.

本アプリの導入は上の記事に従い既に行われているとします.また,ローカルからは http://192.168.0.100:5005 でアプリにアクセスできるとします.このとき,ENGIX PROXY MANAGER で行う設定は以下の通りです.

  1. NGINX PROXY MANAGER 上部のメニューの SSL Certificates を選び,「Add SSL Certificate」を選択し,メニューから「Let’s Encrypt」を選択する.
  2. 出てきた設定画面の Domain Names に「flame.labohyt.net」を,Email Address for Let’s Encrypt に自分のメールアドレスを設定し,I Agree to the Let’s Encrypt Terms of Service を有効化して「save」をクリックする.

これで flame.labohyt.net の SSL 証明書が発行され,NGINX PROXY MANAGER に登録されます.あとはこの証明書を用いてリバースプロキシを構成するだけです.実際の手順は以下の通りです.

  1. NGINX PROXY MANAGER 上部のメニューの Hosts から Proxy Hosts を選ぶ.
  2. 出てきた一覧画面の右上にある「Add Proxy Host」を選択する.
  3. New Proxy Host の設定画面が出てくるので,以下のとおり設定し「save」を選択する.
    Details メニュー
    Domain Names: flame.labohyt.net
    Scheme: http
    Forward Hostname/IP: 192.168.0.100
    Forward Port: 5005
    Cache Assets: 有効化
    Block Common Exploits: 有効化
    Websockets Support: 有効化
    SSL メニュー
    SSL Certificates: flame.labohyt.net を選択
    Force SSL: 有効化
    HTTP/2 Support: 有効化
    HSTS Enabled: 有効化
    HSTS Subdomains: 有効化

これで公開設定は完了です.実際に以下をクリックすれば https://flame.labohyt.net にアクセスできるはずです.

Flame
Flame - self-hosted startpage for your server

なお,Wordpress を NGINX PROXY MANAGER を使って公開するにはもう少し設定する必要がありますが,この辺りについてはまた別記事で紹介したいと思います.


WordPress の NGINX PROXY MANAGER を用いた公開については記事

Nginx Proxy Manager で Wordpress 備忘録
Nginx Proxy Manager で Wordpress 備忘録です. Nginx Proxy Manager について Nginx Proxy Manager は高速が売りの Web Server である NGINX を用いたリバー...

をご覧ください.


NGINX PROXY MANAGER 雑感

EGINX PROXY MANAGERは docker さえ使えれば簡単に導入でき,導入してしまえばあとは GUI で簡単に Web サービスを SSL 対応にして公開できます.また,Web サービスとそのサービスに用いる証明書の管理を完全に分けることができるので,いままでサービスごとに設定しなければならなかった SSL 対応の設定のほとんどを NGINX PROXY MANAGER にまとめることができ非常に管理しやすくなりました.

いやいや,個人でそんな Web サービス使ってるなんてそれはあなたのご自宅が『逸般の誤家庭』だからでしょう

と言われそうですし,実際それは否定できないです(笑).

しかし,文字通り一般の御家庭だったとしても,ルーターとか NAS とか Web の管理画面を持っているものがそれなりにあるのが普通です.そしてそれらの機器にアクセスすると オレオレ証明書が使われていたり SSL 化されていなかったりで,警告画面が出てきてかなりうざったいです.つまり,同様の機能を持つサーバーが,文字通り一般の御家庭にあっても良いような気がするのですが……これは私だけ?かもしれないですね.

以上!

Server
スポンサーリンク
Following hyt!
タイトルとURLをコピーしました