今日は、SynologyNASでNginxProxyManagerを設定する方法を見ていきます。
ネットワーク上のサービスを公開している場合は、リバースプロキシを使用することで、セキュリティとパフォーマンスを向上させることができます。リバースプロキシは、Webサーバーの前に配置され、クライアント要求をWebサーバーに転送するサーバーです。素人の言葉で言えば、(ポート80/443を使用して)1つのサーバーを公開するだけでよく、必要な数のWebサービスを公開できます。
これは、リバースプロキシ(簡略化)のネットワークフローの例です。
これは、リバースプロキシを設定できるSynologyのアプリケーションポータルの代替手段であることに注意してください。 のみを意図している場合 リバースプロキシを作成します。(リバースプロキシ設定以外の)構成は必要ないため、代わりにそれを使用することをお勧めします。
1。セットアップ手順– Nginx Proxy Manager Synology NAS
このチュートリアルでは、SynologyNASとDockerを利用します。 Nginx Proxy Managerはデータベースを使用するため、2つの異なるコンテナーをインストールする必要があります。 1つはデータベース用で、もう1つはNginxプロキシマネージャー用です。デフォルトでは、Synologyはポート80と443を使用するため、ホストネットワークインターフェースの使用は理想的ではありません。このため、このポートの競合を回避できるmacvlanネットワークインターフェイス(Docker内)を作成します。
1. Dockerをインストールします Synologyのパッケージから センター 。
2.Dockerコンテナをマッピングするいくつかのフォルダを作成する必要があります。デフォルトでは、Dockerパッケージは、インストールの完了後にdockerという名前のフォルダーを作成します。このフォルダー内に、 mariadbという名前のフォルダーを作成します。 およびnginx-proxy 。
3. nginx-proxyの内部 フォルダに、データという名前の2つのサブフォルダを作成します およびletsencrypt 。
4.作成 およびアップロード config.jsonという名前のファイル nginx-proxy フォルダ。このファイルには、以下の内容が含まれている必要があります。 SYNOLOGY_NAS_IPをSynologyNASのIPアドレスに変更してください!
{ "database": { "engine": "mysql", "host": "SYNOLOGY_NAS_IP", "name": "nginxproxymanager", "user": "nginxproxymanager", "password": "nginxproxymanager", "port": 3306 } }
5.フォルダの設定が完了しました!
1.1 Macvlan&BridgeDockerネットワークインターフェースのセットアップ
1.SynologyNASにSSHで接続できることを確認します。 コントロールを開きます パネル 、端末とSNMPを選択します 、および SSHを有効にします サービス。 Synologyのファイアウォールを使用している場合は、ポート22のトラフィックを許可していることを確認してください。 問題が発生した場合にSynologyNASにSSHで接続する方法に関するビデオを作成しました。
2. SSH お気に入りのSSHツールを使用してSynologyNASに接続します。
3.Dockermacvlanネットワークインターフェースを作成する必要があります。まず、(Synology NASに)現在存在するネットワークインターフェイスを特定し、アダプター名を書き留める必要があります。これを行うには、以下のコマンドを実行し、Synology NASのIPアドレスを持つネットワークインターフェース名を書き留めます(この例では、私のものはeth0です)。
ifconfig
4.次に、正しいサブネットを置き換えながら、以下のコマンドを実行する必要があります(ほとんどの場合、デフォルトでは192.168.1.0/24または192.168.0.0/24です)。また、現在使用されていない、使用するIPアドレスを選択する必要があります。 192.168.1.198を使用します。 注 :npm_networkはネットワークの名前になります(必要に応じてこれを置き換えることができます)。
sudo docker network create -d macvlan -o parent=eth0 --subnet=192.168.1.0/24 --gateway=192.168.1.1 --ip-range=192.168.1.198/32 npm_network
5.これでネットワークが作成されました。これで、SSHセッションを終了し、DSMで無効にすることができます(使用しない場合)。無効にしてファイアウォールルールを作成した場合は、ファイアウォールルールも無効にする必要があります。
6.次に、ブリッジネットワークを作成する必要があります。これにより、ホスト(NAS)がNginxプロキシマネージャーコンテナーと通信できるようになります。 Dockerを開きます ネットワークに移動します セクション。 [追加]を選択して、現在使用されていないサブネットを入力します。作成しているブリッジのIPアドレスは192.168.10.2になります。
7.これで両方のネットワークインターフェイスが設定されました!
1.2MariaDBのインストールと構成
Nginx Proxy Managerを正しく機能させるには、データベースをセットアップする必要があります。 SynologyはMariaDBパッケージを提供していますが、データベース専用の2番目のDockerコンテナーを作成することで、パッケージを分離したいと思います。
1. Dockerを開きます 、レジストリに移動します 、 MariaDBを検索します 。 最新をダウンロードする MariaDBのバージョン 。
2.画像のダウンロードが完了したら、画像に移動します セクションをクリックし、 mariadbをダブルクリックします 新しいコンテナを設定します。
3.コンテナに名前を付けてから、詳細strong>を選択します 設定 。
4.自動再起動を有効にするを選択します 。
5.ボリュームで セクションで、追加を選択します フォルダ 次に、 mariadbを選択します 以前に作成したフォルダ。 マウント パス セクションに、 / var / lib / mysqlと入力します 。
6.ポート内 設定 セクションで、ローカルポートを 3306に変更します 。 注 :ポートとして3306以外のものを使用する必要がある場合は、 config.jsonを更新する必要があります 以前に作成したファイル。
7.環境 セクションでは、4つの変数を作成する必要があります。これらの変数は、ルートパスワード、データベース名、ユーザー名、およびパスワードを格納するものです。 注 :以下の値(nginxproxymanager)を使用したくない場合は、これを任意の値に変更できます。 前に作成したconfig.jsonファイルを新しい情報で更新してください。
8.適用を選択します コンテナを作成します。これでデータベースが作成されました!
1.3ファイアウォールのセットアップ– Nginx Proxy Manager Synology NAS
macvlanネットワークインターフェイスを使用しているため、NginxProxyManager用に設定する必要のあるファイアウォールルールはありません。ただし、MariaDBコンテナーはホストネットワークインターフェイスを使用しているため、トラフィックを許可するにはファイアウォールルールが必要です。 Synologyのファイアウォールをまだ設定していない場合は、その方法についてのチュートリアルを作成しました(そして、設定することをお勧めします)。
1.コントロールを開きます パネル 、セキュリティを選択します 、次にファイアウォール 。 ルールの編集を選択します 許可を追加します ポートのルール3306 。 注 :上記で作成したconfig.jsonファイルで別のポートを使用している場合は、3306の代わりにそのポートを使用する必要があります。
1.4 Nginxプロキシマネージャーコンテナのセットアップ– Synology NAS
1. Dockerを開きます 、レジストリに移動します 、 nginx-proxy-managerを検索します 。 最新をダウンロードする jc21 / nginx-proxy-managerのバージョン 。
2.画像のダウンロードが完了したら、画像に移動します セクションを開き、 jc21 / nginx-proxy-managerをダブルクリックします 新しいコンテナを設定します。
3.コンテナに名前を付けて、詳細strong>を選択します 設定 。
4.自動再起動を有効にするを選択します 。
5.ボリュームで セクションでは、2つのフォルダマッピングと1つのファイルマッピングを作成する必要があります。 フォルダの追加を選択します データを追加します フォルダを作成し、マウントパス / dataを追加します 。次に、letsencryptを選択します フォルダを作成し、マウントパスを追加します / etc /letsencrypt 。 追加を選択します ファイル config.jsonを選択します マウントパス/app/config/production.jsonで以前に作成したファイル 。
6.ネットワークの下 、 npm_networkを追加します およびnpm_bridge ネットワークと削除 ブリッジ。
7.ポートを一致させます 設定 下の画像のようになります。 4443、8080、または8081を何かに使用している場合は、ポートを現在使用されていないものに変更できます。
8.適用を選択します コンテナを作成します!コンテナに数分かかると、npm_networkのIPアドレスとポート81を介してWeb管理ポータルにアクセスできるようになります!
http://[npm_network]:81
2。 Nginxプロキシマネージャーのセットアップ– Synology NAS
1.メールアドレス[メール保護]でログインします とパスワードchangeme 。
2.プロンプトが表示されたら、名前とメールアドレスを変更してから、パスワードを設定します。
3. Nginxプロキシマネージャーがセットアップされました!必ず転送するポート80を確認してください および443 ルーターでmacvlan 上で作成したネットワーク。
不正なゲートウェイエラー
特定の人がログインしようとすると「不正なゲートウェイ」エラーが発生します。しばらくの間これをトラブルシューティングした後(およびコメントでいくつかの役立つ提案)、これを修正する方法は2つあります。 :
1. NASに複数のNICがあり、複数のIPアドレスが割り当てられている場合は、「config.json」ファイルにNASの他のIPアドレスを入力します。
2.デフォルトのDockerブリッジネットワークインターフェースを両方のコンテナーに接続したままにし、config.jsonファイルでそのIPアドレスを使用します。
3。 Nginxプロキシマネージャーの使用
Nginx Proxy Managerをセットアップしたので、それを使用する方法を知ることが重要です! Plexを公開し、SSL証明書を設定する方法を示すチュートリアルを作成しました。チュートリアルはかなり単純ですが、実質的にすべてのWebサーバーをすばやく、簡単に、そして安全に公開する方法を強調しています!
4。結論
これはかなり複雑なチュートリアルでしたが、簡単に理解できるように十分に分解されていることを望んでいます。 1つのコンテナを機能させるために2つの異なるDockerコンテナを設定する必要があるのは通常ではありませんが、私の意見では、これがSynologyNASでNginxProxyManagerを機能させるための最良の方法です。
チュートリアルをお読みいただきありがとうございます。ご不明な点がございましたら、コメント欄にご記入ください!
Portainer.io(GUIツール)を使用したDockerコンテナの監視と管理–パート2
DockerfileのCOPY命令とADD命令の違いは何ですか?
ビルド済みのDockerイメージ入門