手始めに、リバースプロキシ、SSLラッパとして使えるPoundをNAS上に実装してみることに。
現在、我が家のサーバーはVMware Esxiによる仮想環境で動作しているのだが、SSL対応やポートの扱い、ドメインの管理など、コンシューマー向けのFTTHを使っているとどうしても外部からのルート設定がややこしくなる。
そこで、常時起動させているNASを出入り口として管理することでややこしい経路をすっきりさせようというのが狙い。PoundはSSLラッパとして働くので、NASまでの通信が暗号化されていれば一応Google先生には嫌われずに済む。Cloudflareなどを使ってもいいのだが、サービスの継続性という点で不安が残るので自前で実装できればという気持ち。
今回はPoundが動作するようになるまでを設定してみる。
まずはDockerの設定。実際にはDockerなんて使わずに、NASのLinux上に直接構築するという方法もあるのだが、依存関係や将来的なリスクを考えるとすっきり消せるのが望ましいということもあって今回の方法を選んだ。
まずはDockerをダウンロードするのだが、今回は”pascaldevink-pound“をチョイス。
まずは素直にイメージをダウンロードする。容量は311MB。
続いて、コンテナを生成するための設定をする。上部にある”起動”を押してパラメータ設定。
続いて詳細設定をクリック。
再起動時のDocker自動起動をONに。
続いてボリュームの設定。Dockerはメモリ上に展開され、ファイルの書き換えができないため、動的に書き換える必要のあるファイルは外部に保存したものをマウントする必要がある。今回はNAS上に保管したコンフィグをDocker内で参照する形に。
ポートについてはNAS上のフィジカルなポートとDocker上のポートを対応付け。コンフィグとも関わるのでちゃんと設定。
ここまで来れば、あとは起動のみだが、その前にpound.cfgを設置する。先ほどのボリュームの設定で記載したディレクトリにpound.cfgを保存。
動作確認として以下のファイルを保存した。
User “www-data”
Group “www-data”
LogLevel 1
Alive 30
Control “/var/run/pound/poundctl.socket”ListenHTTP
Address 0.0.0.0
Port 8080
Service
Redirect “https://xxx.yyy/”
End
End
Dockerの設定を含んだ動作としては、NASの3333にアクセスがあった場合、Dockerの8080に転送され、8080で受け付けているpoundがpound.cfgの記述に従い、”https://xxx.yyy/”にリダイレクトするという流れ。
以上の設定をしたうえで、poundのdockerを起動するとリダイレクトされる動作が確認できる。
まず今回はここまで。これからSSLやLet’s Encryptを動作させられるようにしていきたいと思う。
nginx-proxyとか、letsencrypt-nginx-proxy-companionとかhttps-portalとかのほうが使いやすいんだろーなと思っているのは内緒。
コメント