昨年10月にこのブログでも使っている独自ドメインをCloudflareに移管したのですが、その時にやろうと思っていたことを忘れていました。
DNSチャレンジを使っての、ローカル環境の各サーバのSSL化です。前にドメイン管理をしていたバリュードメインでは出来なかったのですよね。前にDNSチャレンジという技術を知ってやってみようと思ったら駄目で、それもあってCloudflareに移管したのをすっかり忘れていました。
当然ですがこのブログを運用しているGhostのサーバと、あとNextcloudとVaultwardenとFreshRSSは既にCloudflareトンネルでSSL化していたので、残りのMemosとJellyfinをDNSチャレンジでSSL化します。
まず準備として、CloudflareでAPIトークンを作成します。
Cloudflareの「アカウントの管理」→「アカウントAPIトークン」で「トークンを作成」をクリックし、「ゾーンDNSを編集する テンプレートを使用する」から、
特定のゾーン : 独自ドメイン
を選んでから「概要に進む」をクリックして、
出てきたAPIトークンをコピペしておきます。一回限りしか表示されないそうです。
次に、Cloudflareでドメインを管理するようになって不要になり、Proxmoxからは削除していたNgnix Proxy Managerを、Proxmox Backup Serverからリストアします。
リストアしたNPMで、
「SSL Certificates」から「Add Let’s Encrypt Certificate」を選び、
ドメインネームはサブドメインをワイルドカードで指定して、「Use a DNS Challenge」でCloudflareを選び、さっきコピペしておいたAPIトークンを貼り付けて保存すると、サブドメイン共通で使い回せるSSL証明書が完成します。
次に、「Proxy Hosts」で作りたいサブドメインを「Add Proxy Host」から作成します。ドメインネームにサブドメインを入れて、Forward Hostname/IPにプライベートIPアドレスを入れて、必要ならPortも指定して、SSLタブでさっき作ったSSLを選んで完了。
最後に、OpenWrtで「Network」→「DHCP and DNS」→「DNS Records」タブで、
必要なサブドメインについてHostnameとIPアドレスを入れます。
ここで最後に「Save& Apply」を押して適用しないと有効にならないのが落とし穴。今回何度も忘れて、???という状態になってしまいました。
成功したので気を良くした自分は、ついでにProxmox VEとProxmox Backup ServerもSSL化しようとして、ハマりました。
他のサーバと同じようにやってもブラウザで開かず、AIに聞いてみると、NPMで
Websockets Support: ON
HTTP/2 Support: ON
にした上で、Advancedタブに
location / {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection “upgrade”;
proxy_set_header Host $host;
proxy_pass https://192.168.x.x:8006; # ← こっはPVEのIP(PBSの場合は8007ポート)にする
}
を書かないといけないらしい。マジでAIに聞かないとわからんわ。
というか、そもそもProxmoxの場合は、
「データセンター」→「ACME」
にある機能で、ここからDNSチャレンジできるやん。まあ、その場合はワイルドカードで作ったSSL証明書の使い回しが出来ないので、それはそれで面倒ですけれど、Proxmox単体でSSL化するならこっちのほうが圧倒的に早いです。
素人だからこそのアホな悩みでしたけれど、まあこれでProxmox VEもProxmox Backup Serverも、他のローカル環境のサーバもSSL化出来たのでOKです。
一応、怖くてやっていないですが、
・OpenWrt
・Pi-hole
・Ngnix Proxy Manager
については、SSL化したらややこしいですよねえ・・・。
コメントを残す