profile picture

CloudFlare Tunnel で自宅サーバーを公開する

January 19, 2024 - cloudflare tunnel

概要

CloudFlare Tunnel を使用して自宅のサーバーを公開します。
Tunnel を構築して自宅のサーバーを公開するその他の方法は こちら を参照してください。

前提条件

手順

Google Domains にカスタムネームサーバーを登録

  1. CloudFlare にログインします。

  2. ホームの 始める ボタンを押下します。

  3. Domain を入力して 続行 ボタンを押下します。

  4. プランを選択します。今回は Free を選択します。

  5. DNS レコードを確認する 画面で 続行 ボタンを押下します。

  6. ネームサーバーを変更する 画面で CloudFlare のネームサーバーをコピーします。

  7. Google Domains のドメイン管理画面から CloudFlare のネームサーバーを追加します。

  8. ネームサーバーを変更する 画面の 続行 ボタンを押下します。

Zero Trust の利用開始

  1. CloudFlare にログインします。

  2. サイドメニューから Zero Trust を選択します。

  3. チーム名を入力して Next ボタンを押下します。

    • 1 アカウントに 1 つのチームドメインが紐付きます。
    • チーム名は他のアカウントのチーム名と同一のものは設定することができません。
  4. 任意のプランの Select plan ボタンを押下します。今回は Free を選択します。

  5. Proceed to payment ボタンを押下して支払い画面に進みます。

  6. 支払い方法を追加して Zero Trust の利用を開始します。

トンネルの追加

  1. CloudFlare にログインします。

  2. サイドメニューから Zero Trust を選択します。

  3. サイドメニューから Zero Trust > Access > Tunnels を選択します。

  4. Add a tunnel ボタンを押下して新しいトンネルを追加します。

  5. トンネル名を入力して Save tunnel ボタンを押下します。

  6. トンネルの追加が完了したら Choose your environment を選択します。今回は Docker を選択します。

  7. docker run コマンドと Token が表示されます。

自宅サーバーの公開

  1. 自宅サーバーと Tunnel の docker-compose.yaml を作成します。今回の自宅サーバーは nginx を使用します。
    services > tunnel > environment > TUNNEL_TOKEN の値はトンネルを追加した画面に表示された Token に書き換えます。

    version: "3.7"
    
    services:
    # https://hub.docker.com/_/nginx
    home-sever:
      restart: unless-stopped
      image: nginx:latest
      ports:
        - "80:80"
    # https://hub.docker.com/r/cloudflare/cloudflared
    tunnel:
      restart: unless-stopped
      image: cloudflare/cloudflared:latest
      command: tunnel --no-autoupdate run
      environment:
        - TUNNEL_TOKEN=トンネルを追加した画面に表示された Token
    
  2. 自宅サーバーと Tunnel を起動します。

    docker-compose up -d
    

    停止する場合は次のコマンドを実行します。

    docker-compose down
    

    削除する場合は次のコマンドを実行します。

    docker-compose rm
    
  3. Tunnel が接続されると Connectors に Connectors ID が表示されるので、 Next ボタンを押下します。

  4. Public Hostname を入力し Save hostname を押下します。

    • Service > Type: HTTP
    • Service > URL: home-sever:80
  5. 自宅サーバーにアクセスできることを確認します。