
皆さん、快適なインターネットライフをお送りでしょうか?
筆者のネット回線はwell-knownポートの開放ができず、苦戦していました。
この記事では、そういった環境下でWEBサイトを開設する方法を解説していきます。
この記事が向いている人
- プライベートIPしか割り当てられていない人
 - 主要なポート(0~1023)がプロバイダの制限などにより開けない人
 - ローカルサーバーを公開したい人
 - 何らかのレジストラでドメインを取得している人
 
NgrokとCloudflare Tunnelの違い
- Ngrokは、カスタムドメインを使うために有料プランにする必要あり(5$/month?)
 - カスタムドメインを使わない場合、任意のアドレスが割り当てられるが起動するたびに変わる。
 
今回必要なもの
- Cloudflareアカウント(ドメイン登録済み)
 - 公開したいサーバー(今回の解説はUbuntu, Debian向け)
 
ネームサーバーの設定
Cloudflareにアクセスし、自分のドメインを登録します。

Registerのドメインの設定から、表示された2つのネームサーバーを登録します。
hostzoneのNSレコードを編集しても意味がないのでお気を付けください(1敗)
ネームサーバーの更新には最大24時間ほどかかる場合もあるため気長に待ちましょう。(筆者の場合は5分もかからないうちに更新されていました)
設定方法(オススメの方)
Zero Trust→Access→Tunnelを起動
Cloudlareにログイン後、Zero Trustを起動します。
その項目の中にAccessがあるので、それをクリック。
またまたその項目の中のTunnelをクリック。
開けたら以下のような画面になります。

対象機器にCloudflare Tunnelをインストール
以下の画像の、Create Tunnelというところをクリック

トンネルの名前を決めろと言われるので、適当に決めます(今回はtestに)
すると以下のようにディストリビューションの選択画面が出てきます。
自分にあったものを選んでください。

このスクリプトを実行するとCloudflare Tunnelが開通します。
Hostnameの設定
トンネルが開通すると、ステータスの表示がHealthyになります。
それから、ホストネームを設定するなどしてください。
設定方法(めんどい方)
Cloudflare Tunnelのインストール&設定
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo apt install -y ./cloudflared-linux-amd64.deb以下のコードでログインを行います。
cloudflared tunnel loginURLが表示されるため、そこにアクセスして設定したドメインへの許可を与えましょう。
cloudflared tunnel create sampletunnel: <UUID> #上記コマンドで出力されたUUID
credentials-file: ~/.cloudflared/<UUID>.json
ingress:
  - hostname: sample1.example.com
    service: http://localhost:80
  - hostname: sample2.example.com
    service: http://localhost:8080
  - service: http_status:404以下コマンドでトンネルを追加します。
cloudflared tunnel route dns example1 example1.example.com
cloudflared tunnel route dns example2 example2.example.comそして実行します。
cloudflared tunnel --config ~/.cloudflared/config.yml run example1
cloudflared tunnel --config ~/.cloudflared/config.yml run example2ここまですべて完了すると、実際にアクセスできるようになります。
ただ、Webサーバーの場合、nginxやapacheなどをインストールしておかないと確認ができないため、しっかり準備しておきましょう。
自動起動の設定
再起動後などいちいち上記コマンドを実行するのはめんどくさいため、自動起動の設定をします。
sudo cloudflared --config ~/.cloudflared/config.yaml service install
sudo systemctl enable cloudflaredこれですべて完了となります。
おわりに
今回は、Cloudflare Tunnelを使いローカルサーバーを公開する方法を紹介しました。
筆者自身もこのような便利なサービスがあると知らなかったため驚きました。
ちなみにですが、このサイトもCloudflare Tunnelを使って運営しています。
この記事がどなたかの役に立てばと思います。
それでは!

コメント
`この記事が向いている人`の部分などに「何らかのRegisterでドメインを取得している人」と書いていますが、Registerは登録するという意味の動詞なので間違っています。おそらくレジストラと記述するのが正しいかと思います。
ご指摘ありがとうございます!修正します