経緯
proxmoxというサーバー仮想化ソフトウェアがある。
自宅でAWSのEC2のように仮想マシンが建てれて便利なのだが、管理画面に外からアクセスするのが大変という問題がある。
自宅でアクセスする際もhttps://サーバーのip:8006
にアクセスする必要があり、分かりにくいのとオラオラ証明書なのでどうにかしたかった。
そこでCloudflare Tunnelsとnginx、Cloudflare Accessを使って自宅の外にいるときもアクセスできるようにした。
nginxのセットアップ
proxmoxは既に構築されているものとする。
proxmoxはHTTPSを無効化することが出来ないため、8006番で待ち受けているproxmoxのWEB GUIをnginxを使って80番ポートにリバースプロキシを設定する。
proxmoxはDebianベースのため、aptでnginxをインストールする。
/etc/nginx/nginx.conf
を開き、http {
の中に以下を追加する
server {
listen 80;
server_name _;
location / {
proxy_set_header Host $http_host;
proxy_pass https://localhost:8006;
}
}
設定を確認し問題なければ反映する
nginx -t
nginx -s reload
Cloudflare Tunnelsの設定
80番のWEB GUIをCloudflare Tunnelsで拾う。
公式ドキュメントに従ってDashbordのAccess→Tunnelsから作成する。
基本的にはドキュメント通りで良いが、Service
のType
はHTTP
、URL
はlocalhost:80
とする。
Cloudflare Accessの設定
このままではだれでもアクセスできるため、Cloudflare Accessで認証を追加する。
DashbordのAccess
→Applications
→Add an application
からApplicationsを追加する。
その後Tunnels
から対象のTunnelを選択しConfigure
→Public hostname
→対象のhostnameを選択しConfigure
→Additional application settings
→Access
→Protect with Access
を有効にし、先ほど作成したApplicationを選択する
おわり
これで認証付きのprxmox WEB GUIが認証付きで外からアクセスできるようになっているはずだ。