作成日:2024-05-27 ・更新日:2024-09-11
CloudFlareの無料枠で自宅ウェブページを公開する方法。
CloudFlareのZero Trustの機能にTunnelsというものがあり、これを使うとNAT設定不要でウェブページを公開することができる。もちろん無料で使うことができるので、ラズパイを使うのであれば、十分コスト削減が可能。
cloudFlareのZeroTrustはVPNを張ってローカルIPでアクセスすることが可能になる。またVPNで接続しているため、野生(野郎)のWifiに接続しても大丈夫であろう。たぶん。
とりあえず今回の目的は自宅PCのウェブページを公開する。
VPNはここでは取り扱わない。
自宅PCは正直なんでもいい思うが家に転がっていたraspberrypi 2 Bを使うことにした。 まぁ、なんかラズパイが古かった様で公式ページから試してみたら...出来なかったので、最初は苦労した。
raspberrypi 2 bモデルのアーキテクチャがarmhfであるのでarm32-bitを試してみたができず、他の全て試したができなかったが...
他を探してみるとここにパッケージがあったため、armhf版をダウンロードしたら。すんなり行けた。
ラズパイの場合
wget https://github.com/cloudflare/cloudflared/releases/download/2024.5.0/cloudflared-linux-armhf.deb
sudo apt install -y ./cloudflared-linux-armhf.deb
普通のPCの場合
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared-linux-amd64.deb
コマンドを入力するとバージョン情報が表示されます。
cloudflared --version
#バージョン表示
cloudflared version 2024.5.0 (built 2024-05-16-1622 UTC)
次に認証ファイルを配置します。
配置はコマンドを入力することで、半自動で配置してくれます。
cloudflared tunnel login
以下のようにURLが表示されるのでブラウザを開いてログインします。
https://dash.cloudflare.com/argotunnel?aud=&callback=httpsfffffFlogin.cloudflareaccess.org%ffffffffffffffffff
ブラウザーで登録されているドメインを選択し認証をします。
ログインが完了すると次のようにcert.pemが作成されます。
Leave cloudflared running to download the cert automatically.
You have successfully logged in.
If you wish to copy your credentials to a server, they have been saved to:
/root/.cloudflared/cert.pem
次のコマンドでtunnelを作成します。
ここではras-tunnelとします。正常に動作するとjsonファイルが作成されます。
#cloudflared tunnel create 名前
cloudflared tunnel create ras-tunnel
以下のファイルはpemフォルダーと同じ/root/.cloudflaredに作成します。
作成されたjsonファイルに情報が記入されているので このjsonファイルの情報を一部コピたーして新にconfigファイルを新規作成します。
Tunnel credentials written to /root/.cloudflared/fffff-fff-ffffff-fff-ffffffff.json....
jsonが入っているフォルダーと同じ所にconfig.ymlを作成します。
以下コピペしてtunnel,credentials-file,hotnameの3つを修正します。
tunnel: fffff-fff-ffffff-fff-ffffffff
credentials-file: /root/.cloudflared/fffff-fff-ffffff-fff-ffffffff.json
ingress:
- hostname: example.domain.com
service: http://localhost
- service: http_status:404
tunnelとcredentials-fileはjsonファイル名と同じ名前にします。
cloudflareに登録しているドメインのサブドメインを指定します。なんでも可
localhostに指定します。ここでポート番号を指定しても反映されません。cloudflareのウェブページ上で設定します。後程設定をします。
config.ymlを作成した後はサービスを登録し、起動させます。
sudo cloudflared --config /root/.cloudflared/config.yml service install
#成功したらこんな文字が表示される
2024-11-11T11:11:11Z INF Using Systemd
2024-11-11T11:11:11Z INF Linux service for cloudflared installed successfully
次にDNSの登録を行います。これもコマンドで設定ができます。
# tunnel route dns [トンネル名] [ドメイン]
cloudflared tunnel route dns ras-tunnel example.domain.com
これで全ての設定が終了しました。
DNSの更新が少し時間がかかるので少し待ちます。(2分~1時間程度)
その後設定したURLにアクセスするとちゃんウェブページが表示できるようになります。
デフォルトでは80ポートで表示されますが、3000ポートに変更したいと思います。
cloudflareのZero Trustのページを開いて次の箇所を修正します。
登録したサービスを削除する場合は、なぜか手動で消す必要がある。
cloudflared service uninstall
rm /etc/cloudflared/config.yml
cloudflaredを完全に不要な場合は以下で削除できます。
apt remove cloudflared
レンタルVPSサーバーを借りずにウェブページを表示できます。ラズパイであれば、かなり低コストで24時間運用ができるが、低スペックだし、設定が面倒くさいので、趣味としてならありかな?
気が向いたらNextCloudとかインストールして使ってみようかな?RAM足りないと思うけど...
質問や、間違いがありましたら、お気軽にどうぞ
※お名前とコメントの内容を入力してください。
※全てこのブログ上に公表されます。
※許可なく管理者によって修正・削除する場合がございます。 詳しくはプライバシーポリシーを参照ください