【2-7】Cloudflare Tunnelを使って自宅外から自宅サーバーにアクセスする

一般

参考: https://zenn.dev/takajun/articles/fbd783e459c722

Cloudflareのアカウント登録

Cloudflare TunnelはCloudflareのサーバーを経由して他のサーバーに接続する的なサービスです。

これのおかげで集合住宅の共有回線みたいなポート開放ができないような環境でも宅外に公開することができます。

ただし、利用にはDNSをCloudflareに移管する必要があります。

Cloudflareアカウントを作成する

どこででも接続、保護、構築
場所を問わず従業員、アプリケーション、ネットワークの速度と安全性を高め、簡略化とコスト削減を実現しましょう。

Dashboardで持っているドメインを登録する

自分はもともとValue-Domainでドメインを契約し、そちらでDNSの管理も行なっているのでDNSだけCloudflareに移します。

とりあえずFreeプランで続行する

指示に従ってDNS設定を(自分の場合value-domainから)cloudflareに切り替える

value-domainのネームサーバー設定から、value-domainの分を消してcloudflareのものを追加する

  • ns11.value-domain.com
  • ns12.value-domain.com
  • ns13.value-domain.com

  • jay.ns.cloudflare.com
  • vita.ns.cloudflare.com

少しするとcloudflareから完了の通知が来る

これで完了

Cloudflare Zero Trustの設定

今回利用するCloudflare TunnelはCloudflare Zero Trustのサービスの一つです。

CloudflareのDashboardから、Networkタブを選択してZero Trustのページに入ります。

team nameというのを決めます。

どの料金にするかを決めます。とりあえずFreeプラン(無料)にしておきます。

決済情報を入力したらDashboardへ戻します。

これでCloudflare Dashboardでの設定は完了です。

Tunnelの設定

Mac mini側の設定

cloudflaredのインストール

brew install cloudflared

Cloudflare Tunnel の作成と認証

cloudflared tunnel login

ログイン後、ブラウザでアカウントと認証します。


Tunnelの作成と保存

cloudflared tunnel create [Tunnel名]

今回Tunnel名はmac-home-servicesとしました。

このコマンドで Tunnel ID と証明書ファイルが ~/.cloudflared/ に作成されます。


公開用ドメイン設定

今回は以下の2つのサービスを設定しておきます。

  • Immich(Google Photos代替) → immich.example.com
  • Nextcloud(クラウド的な) → nextcloud.example.com
cloudflared tunnel route dns mac-home-services immich.example.com
cloudflared tunnel route dns mac-home-services nextcloud.example.com

ここで設定したドメインは、CloudflareのDashboardのDNS一覧に自動的に追加されています。


構成ファイル(~/.cloudflared/config.yml)の作成

自分の場合は/Users/[Macユーザー名]/.cloudflared/config.ymlにありました。

それぞれ、Immich用とNextcloud用とで設定したサブドメインを、ローカルIPとポートにルーティングするように振ります。

tunnel: mac-home-services
credentials-file: /Users/[username]/.cloudflared/[Tunnel ID].json

ingress:
- hostname: immich.example.com
service: http://localhost:2283
- hostname: nextcloud.example.com
service: http://localhost:2284
- service: http_status:404

自動起動の設定(LaunchAgent)

以下のコマンドで自動起動サービスを設定しておきます。

cloudflared service install

これにより ~/Library/LaunchAgents/com.cloudflare.cloudflared.plist が作成され、ログイン時に自動起動します。らしいです。

しばらく経ってからMacの通知でバックグラウンド項目に追加された表示が出てきていました。


動作確認

Tunnelを一度、手動で起動して確認します。

cloudflared tunnel run mac-home-services

ブラウザで https://immich.example.comhttps://nextcloud.example.com にアクセスできれば成功です。

Nextcloud側の設定ミスで外から接続できなかった。

つまづいたところ

  • Tunnel自体の設定
    • 原則、一つのPCに対しては一つのTunnelであることが推奨されるらしい。今回のような複数のサービスに繋げる場合は、config.ymlでルーティングを設定するのがベスト。
    • Web上のDashboardからもTunnelの設定はできるが、複数のルーティングができなかったのでターミナルのコマンドで済ませるのが楽。
  • SSL(HTTPS)の設定
    • CloudflareでDNSを設定していると、無料でSSL証明書が付いてHTTPSで接続できるようにはなるが、3層以上のサブドメイン(BBB.AAA.example.com)だと無料プランではSSLが付かないらしい。普通にAAA.example.comにして解決。

コメント

タイトルとURLをコピーしました