メインコンテンツへスキップ
50% off 全プラン対象、期間限定。月額 $2.48/mo
14 min left
Webアプリとビジネスアプリ

VPS 上の Nginx Proxy Manager:レビューとセットアップガイド

C 著者 Chike 14 分で読めます
Nginx Proxy Manager on a VPS routing one public IP to Dashboard, Media Server, Database, and Blog containers over HTTPS

5〜6 個の Docker サービスが載った VPS があるとします。Nextcloud、Uptime Kuma、Ghost ブログ、おそらく Vaultwarden。パブリック IP は 1 つ。そして、コンテナを追加するたびに Nginx の設定ファイルを手作業で編集することなく、それぞれを HTTPS 付きの独自サブドメインで公開したいと考えています。それこそが Nginx Proxy Manager が解決するために存在する、まさにその問題です。

これは、レビューと Nginx Proxy Manager の完全な VPS セットアップを 1 つにまとめたガイドです。Nginx Proxy Manager(NPM)は、Nginx を Web UI で包み込む Docker アプリです。ディレクティブを手作業で書く代わりに、サブドメインをバックエンドコンテナに向け、ダッシュボードを通じて Let's Encrypt 証明書を要求します。このガイドは、すでに Docker を実行しており、今度は次を触る必要のないリバースプロキシを必要としているセルフホスターやシステム管理者向けです nginx.conf.

読み終える頃には、NPM が自分のケースに合うかどうかがわかり、VPS 上で HTTPS 付きで動作させられ、NPM が適切なツールでなくなったときに Caddy や Traefik に切り替える基準もわかるようになります。

短いバージョン

  • NPM とは何か: プロキシホストの管理と Let's Encrypt による自動 HTTPS のために、Nginx の上に Web UI を載せる Docker アプリです。GUI を求め、小規模で比較的変化の少ないサービス群を運用する人に向いています。
  • トレードオフ: 構成は SQLite データベースに保存されるため、設定ファイルのようにバージョン管理や差分比較ができません。2026 年 7 月 12 日時点で、最新のタグ付きリリースは CVE-2026-40519 の影響を受けているため、新規デプロイは修正を含むタグ付きリリースを待つべきです。ポート 81 の管理パネルが、ロックダウンすべき主な対象です。
  • サイジング: NPM 自体はアイドル時に約 50 MB の RAM を使います。1 GB の VPS が実用的な基準線で、その背後にサービスを追加するなら 2 GB が快適です。
  • いつ切り替えるか: GUI が重要で、小規模かつほぼ静的なスタックなら NPM のままにします。設定をコードとして扱いたい、フットプリントを小さくしたい場合は Caddy を使います。コンテナの頻繁な変更により、手動でのホスト登録よりも Docker の自動検出のほうが価値が高い場合は Traefik を使います。

このガイドが扱わないこと

これは VPS デプロイガイドであり、リファレンスマニュアルではありません。焦点を絞るため、以下は対象外とします:

  • Nginx ディレクティブの高度なカスタマイズ(NPM の UI が公開する範囲を超えるカスタム location ブロックなど)。
  • 大規模な負荷分散アーキテクチャ。
  • Kubernetes の ingress の比較。
  • Windows 上の NPM。
  • 固定 IP のないセットアップ向けの Cloudflare Tunnel の手順。

Nginx Proxy Manager にできること(そして落とし穴)

Nginx Proxy Manager taking one public IP and routing subdomains such as app, status, cloud, and vault.example.com to separate backend containers, each with SSL enabled

Nginx Proxy Manager は、内部で Nginx を実行し、その上に Web ダッシュボードを追加する Docker アプリケーションです。プロキシホスト(サブドメインからバックエンドコンテナとポートへ)を作成し、設定ファイルの代わりにフォームを通じて Let's Encrypt 証明書を要求します。1 台の VPS 上で、小規模で比較的静的なセルフホストアプリ群に向いています。

基本機能を超えて、ダッシュボードはアクセスリストや生の TCP/UDP ストリーム転送も扱います。1 台の VPS 上のアプリ群にとって、これは実際に便利です。コンテナを追加し、ダッシュボードを開き、サブドメインをそこに向け、クリックして証明書を発行する。完了です。

主なトレードオフは、NPM の信頼できる構成源がデフォルトで SQLite データベースに存在することです。NPM は読み取り可能な Nginx ファイルを次の下に生成します /data/nginx/proxy_host/しかし、それらのファイルは、あなたが編集しバージョン管理する宣言的な構成ではなく、生成された成果物です。確認はできますが、Caddyfile や Traefik のラベルのきれいな代替にはならず、デプロイを確実に再現する方法は NPM のデータと証明書のボリュームを復元することです。小規模で静的なスタックなら、これは許容できるかもしれません。Git 駆動のインフラワークフローにとっては、実際の制約になります。

2026 年 7 月 12 日時点で、 最新のタグ付きリリース は 2026 年 6 月 3 日に公開された v2.15.1 です。プロジェクトは引き続きアクティブで、 MIT ライセンスですが、現在のセキュリティ状況には重要な注意点が必要です。NVD はバージョン 2.9.14 から 2.15.1 を次の影響を受けるものとして掲載しています CVE-2026-40519これは認証済みのコマンドインジェクションの脆弱性で、次のコミットで修正されています a5db5ed ただし、まだ新しいタグ付きリリースには含まれていません。デプロイする前に、リリースページを確認し、その修正を含む最初のタグ付きバージョンを使用してください。NPM はメンテナンスされていますが、v2.15.1 は現時点で完全にパッチ済みとは言えません。

フットプリントについて、NPM はアイドル時に約 50 MB の RAM を使います。これは次によります byte-guard のリバースプロキシ比較。これは十分に軽いため、VPS に負荷をかけているのが NPM であることはほとんどありません。負荷をかけているのはその背後のサービスです。

私の見解: GUI を求め、小規模な Docker スタックを運用しているなら、NPM は 2026 年でも妥当な選択です。バージョン管理を中心に生活し、プロキシ構成を Git に置きたいなら、代わりに Caddy を検討してください。決め手は SQLite ベースの構成であって、プロキシ機能そのものに問題があるわけではありません。

NPM は構成の可搬性を GUI と引き換えにしています。そのトレードオフは、小規模で静的なスタックには問題なく、Git 駆動のワークフローには煩わしいものです。

NPM 対 Caddy 対 Traefik:どのリバースプロキシがあなたの VPS に合うか

NPM, Caddy, and Traefik compared: NPM is a GUI for small static stacks at about 50 MB idle, Caddy is config-as-code for simple deployments at about 30 MB, and Traefik uses Docker auto-discovery for changing containers at about 80 MB

3 つのツールは、選択を決める 4 つの軸で分かれます。どのように構成するか、HTTPS をどう扱うか、サービス数に応じてどうスケールするか、そしてアイドル時にどれだけの RAM を使うか。以下が比較です。

属性Nginx プロキシマネージャーCaddyTraefik
構成モデルWeb GUI、SQLite に保存Caddyfile(テキスト、バージョン管理可能)Docker ラベル / YAML
自動 HTTPSあり、UI でホストごとに要求あり、デフォルトで、設定不要あり、ACME リゾルバーの設定が必要
Docker 自動検出NoNoあり、コンテナラベル経由
アイドル時 RAM~50 MB約 30 MB約 80 MB
最適なケースGUI 利用者、小規模/静的なスタックコードとしての構成、最小のフットプリントコンテナの変更が頻繁な動的な Docker スタック

アイドル時 RAM の数値は次からのおおよその観測値です ある 2026 年の比較固定された要件ではありません。実際の使用量は、イメージのバージョン、有効化された機能、トラフィック、ログ出力によって異なります。

切り替えの基準は、その表から直接導かれます。ダッシュボードを求め、あまり変化しない少数のサービスを運用しているなら、NPM が適切なツールです。設定をコードとして扱いたい、最小のフットプリントを求める、または Caddy の次の点を評価するなら、 ACME の設定なしでの自動 HTTPS のプロビジョニングと更新Caddy を使ってください。私自身、単一サイトのデプロイでは Caddy に手を伸ばします。SSL 処理が自動で、Caddyfile が短いからです。コンテナを頻繁に追加、削除、再デプロイする場合、Traefik のラベルベースの自動検出により、新しいホストを毎回手作業で登録する必要がなくなります。

Certbot を組み合わせた素の Nginx もあり、精密な制御や非 Docker のデプロイのためにこれを好む管理者もいます。Certbot は証明書の更新を自動化できますが、バーチャルホストのルーティングと Nginx 構成は依然として自分で管理します。NPM を検討する主な理由が手動でのプロキシ構成を避けることであるなら、素の Nginx がより適している可能性は低いでしょう。

選択に関する 1 つの注意点:byte-guard の比較では、その比較において最も軽い選択肢として Caddy に落ち着いており、2026 年の新規な単一ホストのセットアップにはこれは妥当な選択です。Caddy は NPM より軽い点で勝りますが、特に GUI を求めるなら最善の選択肢ではありません。

基盤エンジンのより詳しい比較については、次を参照してください VPS 上の Caddy 対 Nginx の比較.

前提条件:必要になるもの

デプロイの前に、これらを用意しておいてください。短いリストですが、いずれかの項目を飛ばすと後で証明書のステップが失敗します。

  • 次を備えた VPS Docker と Docker Compose がインストール済み (Ubuntu 22.04 LTS または Debian 12 で問題ありません)。
  • ドメイン名。次を伴います DNS A レコード (IPv6 を使う場合は AAAA も)が VPS のパブリック IP を指していること。
  • VPS への SSH アクセス。
  • ファイアウォールでポート 80 と 443 がインターネットに開放されていること。
  • ポート 81 は自分だけが到達可能で、一般には公開しないこと(セキュリティのセクションで扱います)。

Docker Compose を使って VPS に Nginx Proxy Manager をセットアップする

Deploying Nginx Proxy Manager with Docker Compose: ports 80 and 443 public, the admin UI on port 81 bound to 127.0.0.1, and backend containers joined to a shared proxy Docker network

このセクションでは、Docker Compose を使って NPM をデプロイします。DNS レコードが VPS に解決されれば、コンテナのセットアップ自体は素早く済みますが、DNS の伝播と証明書の発行にはもっと時間がかかる場合があります。

このセットアップでは、1 つの Docker Compose ファイルと、共有 Docker ネットワークを作成する一度きりのコマンドを使います。ディレクトリを作成し、ネットワークを作成し、次を追加します docker-compose.yml 以下のファイルを追加し、コンテナを起動します。

まず、共有 Docker ネットワークを作成します:

docker network create proxy

次に、以下を作成します docker-compose.yml ファイル:

# docker-compose.yml
services:
  npm:
    image: 'jc21/nginx-proxy-manager:<PATCHED_VERSION>'
    restart: unless-stopped
    ports:
      - '80:80'                 # public HTTP
      - '443:443'               # public HTTPS
      - '127.0.0.1:81:81'       # admin UI, reachable only from the VPS itself
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    networks:
      - proxy
networks:
  proxy:
    external: true

NPM がサービス名で到達する必要のあるすべてのバックエンドコンテナを、同じ外部の次に接続します proxy ネットワークです。これにより NPM は、バックエンドアプリケーションのポートを VPS 上で公開することなく、サービス名でコンテナを解決できます。

両方をバックアップします ./data./letsencrypt アップグレードの前に。データディレクトリには NPM のデータベースと生成された構成が含まれ、Let's Encrypt ディレクトリには証明書の情報が含まれます。

このファイルについていくつか。イメージはデフォルトで、次に保存される SQLite データベースを使用します ./data ボリュームです。これはデフォルトのバックエンドで、ほとんどの単一 VPS デプロイに適しています。外部データベースが必要な場合、NPM は MariaDB/MySQL と PostgreSQL をサポートしており、その場合はデータベースサービスと対応する環境変数を追加します。単一 VPS では、データベースをデータボリュームの外に移す明確な理由がない限り、SQLite が依然として最もシンプルなデフォルトです。 restart: unless-stopped ポリシーは、VPS が再起動しても NPM が復帰することを意味し、これは他のすべての前面に位置するサービスにとって望ましい動作です。

起動して、動作していることを確認します:

docker compose up -d
docker compose ps

想定される出力: npm 状態が次のコンテナ Upポート 80 と 443 がパブリックにマッピングされ、ポート 81 は次のみにバインドされています 127.0.0.1。NPM が JWT キーを生成し、データベースを初期化し、デフォルトの管理者ユーザーを作成する間、初回起動には数分かかります。 公式のセットアップドキュメント がこの初回実行のシーケンスを説明しています。

管理インターフェースを開く前に、ローカルコンピューターから SSH トンネルを作成します:

ssh -L 8181:127.0.0.1:81 user@your-vps

次に開きます http://127.0.0.1:8181 ブラウザで。新規インストールでは、次でサインインします [email protected]changemeそしてただちにデフォルトのメールアドレスとパスワードを置き換えます。デフォルトの認証情報が有効な間は、ダッシュボードを一般に到達可能にしないでください。

管理者の認証情報を変更したら、最初のプロキシホストを追加します:

  1. ダッシュボードで、次に移動します Hosts、続いて Proxy Hosts、続いて Add Proxy Host.
  2. 設定する ドメイン名 を自分のサブドメインに(例えば cloud.example.com).
  3. 設定 転送ホスト名 / IP をバックエンドのコンテナ名または IP に、そして 転送ポート をそれが待ち受けるポートに。
  4. 保存します。プロキシホストが一覧に表示され、そのサブドメインへのトラフィックがコンテナに到達するようになります。

これと並行して Docker 管理 UI を実行している場合も、同じパターンが当てはまります。同じ方法でサブドメインをコンテナ管理ツールに向け、次についても同じことを行います PrometheusとGrafanaの監視スタック プロキシの背後に置きたいもの。

サブドメインの自動 HTTPS を構成する

Configuring automatic HTTPS in Nginx Proxy Manager: a DNS A record points the subdomain at the VPS, Let's Encrypt validates ownership over HTTP-01 on port 80 or DNS-01 for wildcards, and the certificate installs with Force SSL and HTTP/2 enabled

このセクションでは、サブドメイン用の有効で自動更新される Let's Encrypt 証明書を取得します。前提条件は人がつまずきやすいものです。そのサブドメインの DNS A レコードがすでに VPS を指している必要があり、ポート 80 がインターネットから到達可能である必要があります。Let's Encrypt がドメインに接続し直して検証するためです。

プロキシホストを作成したら、証明書を要求します:

  1. プロキシホストを編集し、次を開きます SSL タブ。
  2. 以下 SSL証明書選択してください 新しい SSL 証明書を要求.
  3. 有効にする SSL を強制HTTP/2 サポート。HSTS は HTTPS が正しく動作していることを確認してからのみ有効にしてください。ブラウザがポリシーをキャッシュするため、証明書やプロキシ構成の誤りからの回復がより難しくなる可能性があるからです。
  4. Let's Encrypt の規約に同意して保存します。

デフォルトでは、NPM は非ワイルドカードの名前に HTTP-01 チャレンジを使用し、要求された各ホスト名をポート 80 経由で検証します。1 つの証明書は複数の非ワイルドカード名を含められますが、HTTP-01 はワイルドカード証明書を発行できません。次のようなワイルドカード名は *.example.com サポートされた DNS プロバイダーを用いた DNS-01 チャレンジが必要です。サービスごとに 1 サブドメインという通常のセットアップでは、必要なのは HTTP-01 だけであり、更新は自動です。

証明書の要求が失敗した場合は、まずポート 80 を確認します。 よくある原因には、到達できないポート 80、誤ったクラウドファイアウォールやセキュリティグループのルール、伝播が完了していない DNS などがあります。Let's Encrypt は到達できないドメインを検証できません。

VPS 上で NPM 管理パネルを保護する

Securing the Nginx Proxy Manager admin panel: public access to port 81 is blocked while admin access is allowed only through an SSH tunnel or private VPN to 127.0.0.1:81, with two-factor authentication and a patched version

ポート 81 の管理インターフェースは NPM デプロイにおける主要な露出面であり、このセクションではそれをロックダウンします。これはセキュリティ監査ではなく運用面の堅牢化です。3 つのことを一度行うだけで、リスクのプロファイルは大きく下がります。

第 1 に、そして最も重要なこととして、ポート 81 を次にバインドしたままにします 127.0.0.1 Docker Compose ファイルに示したとおりです。ダッシュボードには先ほど説明した SSH トンネルを通じてアクセスします。恒久的なリモートアクセスが必要な場合は、管理インターフェースをプライベートな VPN 経由でのみ到達可能にします。ポート 81 を VPS のパブリック IP で公開しないでください。

第 2 に、管理者アカウントで TOTP による二要素認証を有効にします。NPM は次で TOTP ベースの 2FA を追加しました バージョン 2.13.6したがって、現行のインストールにはこれが備わっています。有効にしてください。

第 3 に、NPM をパッチ済みに保ち、次を安全だと決めつけるのではなく、正確なリリースを確認します latest タグを安全だと決めつけないでください。CVE-2026-40519 はバージョン 2.9.14 から 2.15.1 に影響し、悪意ある DNS プロバイダーの認証情報を通じて認証済みのリモートコード実行を許す可能性があります。 CVE-2026-50892 は v2.14.0 に影響し、認証済みの攻撃者が Let's Encrypt の秘密鍵の情報を取得することを許す可能性があります。より古い問題である CVE-2025-50579 は、JWT トークンを露出させ得る CORS の欠陥を通じて v2.12.3 に影響しました。実用的なルールはシンプルです。ポート 81 を非公開に保ち、二要素認証を有効にし、既知のパッチ済みバージョンに固定し、アップグレード前にセキュリティ勧告を確認することです。

ポート 81 は非公開のまま、NPM はパッチ済みのままにします。この 2 つを行えば、通常の単一 VPS のセットアップでは、主な既知のリスクがはるかに管理しやすくなります。

Nginx Proxy Manager 向けに VPS をサイジングする

NPM 自体は軽量で、サイジングの問題は実際には NPM に加えてその背後にあるサービスに関するものです。プロキシのアイドル時のフットプリントが制約になることはめったにありません。Nextcloud インスタンスや Ghost ブログは、プロキシ自体よりも多くのリソースを使います。

実際には、各ティアは次のようになります:

  • 実用的な最小の基準線:1 GB RAM、1 vCPU、10 GB ストレージ。 1つ サードパーティのサイジングガイド も同じ基準線を使っていますが、これは NPM の公式要件ではなく計画の目安として扱ってください。NPM、オペレーティングシステム、いくつかの軽いサービスには十分ですが、余裕は限られます。
  • 快適:2 GB RAM、1 vCPU、20 GB ストレージ。 NPM に加えて 3〜5 個のサービスを、余裕を持って動かせます。これはほとんどのセルフホスターにとって最適な水準です。
  • ステップアップ:4 GB RAM、2 vCPU。 8〜12 個のサービス、または相応のトラフィックがあり、TLS 終端のための CPU の余裕を確保したいセットアップ向け。

サイジングの基準となる数字は、NPM ではなくプロキシされるアプリの合計です。実行予定のサービスの RAM フットプリントを合計し、その上にプロキシの小さなアイドル時オーバーヘッドを加え、それを余裕を持って上回るティアを選んでください。

サーバーのサイジングは簡単な部分です。NPM を動かすには、依然として VPS のプロビジョニング、Docker のインストール、イメージの取得、そしてあの初回実行のセットアップを進める必要があります。プロビジョニングのステップを省きたいなら、Cloudzy のマーケットプレイスにはワンクリックの次があります Nginx Proxy Manager のデプロイ NVMe VPS 上で。新しいサーバー上でコンテナを起動するので、すぐにダッシュボードと最初のプロキシホストに進めます。いずれにせよ、プロビジョニングの基準となるのは上記のサイジングティアです。

よくある質問

Nginx と Nginx Proxy Manager の違いは何か?

Nginx は Web サーバーおよびリバースプロキシのエンジンそのものであり、テキストファイルを編集して構成します。Nginx Proxy Manager は、内部で Nginx を実行し、その上に Web UI を追加する Docker アプリケーションで、設定ファイルを書く代わりにダッシュボードを通じてプロキシホストと Let's Encrypt 証明書を管理します。NPM は GUI の層であり、Nginx は実際の作業を行うエンジンです。

Nginx Proxy Manager は 2026 年でも使う価値があるか?

はい、小規模な Docker スタックを運用し GUI を好むユーザーにとっては。ただし、デプロイするイメージが最新のセキュリティ修正を含んでいることを確認したうえでのことです。2026 年 7 月 12 日時点で、v2.15.1 が最新のタグ付きリリースであり、NVD はこれを CVE-2026-40519 の影響を受けるものとして掲載しています。設定をコードとして扱いたい場合は、依然として Caddy のほうが適しています。NPM の SQLite ベースの構成が、その主な運用上の制約です。

Nginx Proxy Manager の最小 RAM はどれくらいか?

NPM 自体はアイドル時に約 50 MB の RAM を使います。1 GB の VPS が実用的な基準線で、NPM に加えていくつかの軽いサービスを動かすのに十分です。プロキシされるアプリを増やすなら 2 GB が快適です。実際の RAM 要件は、NPM 自体ではなく NPM の背後にあるサービスによって決まります。

ポート 81 をインターネットに公開すべきか?

いいえ。ポート 81 を localhost にバインドしたままにし、SSH トンネルを通じてアクセスするか、プライベートな VPN 経由でのみ到達可能にします。管理インターフェースを VPS のパブリック IP で公開しないでください。

Docker なしで Nginx Proxy Manager を実行できるか?

いいえ。NPM は Docker コンテナとして配布・設計されており、サポートされた非 Docker のインストール方法はありません。Docker を実行できない、または実行したくない場合は、代わりに Certbot を組み合わせた素の Nginx、または単一バイナリの Caddy を使用してください。

Nginx Proxy Manager はワイルドカード証明書をサポートするか?

はい、サポートされた DNS プロバイダーを設定した DNS-01 チャレンジを通じてサポートします。標準的な単一ホスト名の証明書はポート 80 経由の HTTP-01 チャレンジを使用します。ワイルドカード証明書(*.example.com)は DNS-01 を必要とします。認証局が、単一のホストに到達するのではなく DNS レコードを書き込むことで管理権を検証するためです。

共有

ブログの他の記事

読み進める。

デプロイの準備はできましたか? 月額2.48ドルから。

2008年から独立運営のクラウド。AMD EPYC、NVMe、40 Gbps。14日間返金保証。