皆さん、快適なインターネットライフをお送りでしょうか?
筆者のネット回線はwell-knownポートの開放ができず、苦戦していました。
この記事では、そういった環境下でWEBサイトを開設する方法を解説していきます。
この記事が向いている人
- プライベートIPしか割り当てられていない人
- 主要なポート(0~1023)がプロバイダの制限などにより開けない人
- ローカルサーバーを公開したい人
- 何らかのレジストラでドメインを取得している人
NgrokとCloudflare Tunnelの違い
- Ngrokは、カスタムドメインを使うために有料プランにする必要あり(5$/month?)
- カスタムドメインを使わない場合、任意のアドレスが割り当てられるが起動するたびに変わる。
今回必要なもの
- Cloudflareアカウント(ドメイン登録済み)
- 公開したいサーバー(今回の解説はUbuntu, Debian向け)
ネームサーバーの設定
Cloudflareにアクセスし、自分のドメインを登録します。
Registerのドメインの設定から、表示された2つのネームサーバーを登録します。
設定方法(オススメの方)
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 login
URLが表示されるため、そこにアクセスして設定したドメインへの許可を与えましょう。
cloudflared tunnel create sample
tunnel: <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は登録するという意味の動詞なので間違っています。おそらくレジストラと記述するのが正しいかと思います。
ご指摘ありがとうございます!修正します