Cloudflareを使って、 自宅のGotifyサーバーに接続できた

前回の投稿で、HomeAssistantからGotifyというプッシュ通知サーバーを介して、スマホでメッセージを受け取るというものを書いたが、外部からアタックが増えまくった。

なぜなら、SSLアクセスするために443ポート、そのSSL(Let's Encrypt)をリンクさせるために80ポートを開ける必要があったからだ。ほぼルーターで防げていましたが、常にセキュリティへの配慮が必要になるのは面倒。VPSでも借りるかと思ったが、まずは無料でできることを検索してみたら、Cloudflare Tunnelというものが良さそうだった。ポート開放を一切しないで外部へ自宅サーバーを公開できるそうだ。

自宅サーバー+Cloudflare Tunnelで検索すると結構情報があるり、簡単に設定出来そうだった。必要なものはネームサーバーを設定変更できるドメイン。ドメインのネームサーバーにCloudflareのものを登録して、CloudflareでDNSを設定します。WEBサイトを運営しているドメインの場合は、わざわざCloudflareを経由することになりますが、特にスピードが落ちることはない(むしろ速くなっている?)。そして、セキュリティが強化されるようだ。

そしてCloudflare Tunnelを使う場合には、サブドメインを設定する方法が良いかと。WEBサイトを運営しているドメインがhoge.comとすると、tunnel.hoge.comなど。自宅サーバーにCloudflare Tunnelのプログラムを常時起動させておくことで、ポート開放なしにCloudflareに接続します。

ただ、このCloudflare Tunnelは、Cloudflare Zero Trust内にあり、Freeプランであっても0ドルで購入する必要があります。まあ、悪意のある匿名ユーザーの排除的な意味があるのかな? 私はPayPalで0ドル支払いました。

トンネルの設定は簡単でした。私はRaspberry Pi OSに入っているGotify Serverを公開(自分専用だけど)したいので、下記の設定画面でDebianとarm64-bitを選択して、出てきた下記のコードを実行するだけ。これだけで勝手に接続して、下記の画面の下部に接続できました的なものが表示されます。(接続を確認するコードを入れたり、再起動時も起動するようにするコードを入れたりとか必要なかった。)

次の画面で以下を埋めるだけ。

Cloudflaredをインストールしたサーバーそのものへのアクセスなので、http://localhost:8080とかで良いわけです。(Gotifyを8080に設定しているので。)

雑感

Cloudflareは、最近になって日本語化たようです。あと、結構ページレイアウトや、機能の変更が多そうで、Cloudflare Tunnelを解説している方のブログは、参考にはなるが全く同じように進むことができない感じです。なので、1年後には、このページの情報も古いものになってしまいそう。

あと、Cloudflareはトンネル接続がメインではなく、色々な機能があるのですが、ネットワークやサーバーのプロではないので、かなりちんぷんかんぷん。勉強しなくてはと思う。そういう、いろんな機能のあるサービスなので、Cloudflare Tunnelだけを使いたくてCloudflareへアクセスすると、「え? 何からすれば良いの? というか、いきなりお前のドメインを入力しろから始まるのですが!?」となると思う。

まあ、WEB検索とChatGPTでどうにかなるので、チャレンジしてみよう!