0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【DDNS不要】固定IPなしの自宅サーバーをCloudflare Tunnelで安全にHTTPS公開する

0
Posted at

【DDNS不要】固定IPなしの自宅サーバーをCloudflare Tunnelで安全にHTTPS公開する

自宅でサーバーを立ち上げて、色々なツールを入れて遊ぶ。エンジニアにとって最高の遊び場ですよね。

しかし、いざ外部からアクセスできるようにしようとすると、いくつか厄介な壁にぶち当たります。

  1. 自宅回線は固定IPじゃない
    名前解決をどうしてもDDNS(ダイナミックDNS)に頼る形になってしまいます。
  2. DDNSの更新が面倒
    IPが変わるたびに自動で追従させるため、DiCEなどのツールを常駐させて更新する運用になりがちです。
  3. HTTPS化のハードル
    今の時代、WebサーバーをHTTP(暗号化なし)のまま公開するのはセキュリティ的に怖すぎます。絶対にHTTPSで運用したいですよね。

「自分の独自ドメインを使ってセキュアに構築したい。でも、自宅は固定IPじゃないし、ルーターのポート開放も面倒……どうしたらいいんだ!」

と悩んでいたところ、Cloudflare Tunnelを使ったらすべてが一発で解決してしまいました。
今回は、その感動と具体的な構築手順を備忘録としてまとめます。

前提条件

  • 取得済みの独自ドメイン
  • Cloudflareアカウント(無料プランでOK、ドメインのネームサーバーをCloudflareに向けておく)
  • 構築済みの自宅サーバー(Linux環境)

構築手順

ここからは、実際にCloudflare Tunnelを開通させるまでの手順を解説します。拍子抜けするほど簡単です。

ステップ1:Cloudflare Zero Trustでのトンネル作成

まずはトンネル(自宅サーバーとCloudflareを繋ぐ専用線のようなもの)を作成します。

  1. Cloudflareのダッシュボードにログインし、左側メニューから**「Zero Trust」**を開きます。(初回はZero Trustの利用開始手続きが必要になる場合がありますが、クレジットカード登録等が出ても無料プランのまま進められます)
  2. Zero Trustダッシュボードの左メニューから [Networks] > [Tunnels] を選択します。
  3. 「Create a tunnel」 をクリックします。
  4. コネクターのタイプを聞かれるので 「Cloudflared」 を選択してNext。
  5. トンネル名(例:home-server-tunnel など分かりやすい名前)を入力して「Save tunnel」をクリックします。

ステップ2:自宅サーバーへの cloudflared インストール&起動

次に、自宅のLinuxサーバー側に、トンネルを確立するためのエージェント(cloudflared)をインストールします。

  1. トンネルを作成すると、「Install and run a connector」という画面が表示されます。
  2. インストール先のOS環境(LinuxのDebianやRed Hat系など)を選択します。
  3. 画面に**専用のインストールコマンド(curl等でパッケージをダウンロードし、トークン付きでインストールするコマンド)**が表示されるので、それを丸ごとコピーします。
  4. 自宅サーバーにSSH接続し、コピーしたコマンドをroot権限(sudo)で貼り付けて実行します。
# (参考)Red Hat系(AlmaLinuxなど)を選択した場合のコマンドイメージ
$curl -L --output cloudflared.rpm [https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-x86_64.rpm$](https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-x86_64.rpm$) sudo rpm -ivh cloudflared.rpm
$ sudo cloudflared service install eyJh...(ここにあなた専用の長いトークンが入ります)...

インストールとサービス登録が完了したら、正常に起動しているか確認しておきましょう。

$ systemctl status cloudflared

active (running) になっていれば、自宅サーバーとCloudflare間のトンネルが無事に開通しています!ダッシュボード上でもステータスが「Healthy」に変わるはずです。

ステップ3:パブリックホスト名のルーティング設定

最後に、「どのURLにアクセスが来たら、自宅サーバーのどのポートに繋ぐか」を設定します。

  1. Cloudflareの画面を進めると 「Route traffic (Public Hostname)」 の設定画面になります。
  2. 以下の通りに設定します。
    • Subdomain: 任意の文字列(例:tool
    • Domain: 登録してある独自ドメインを選択
    • Path: (基本は空欄でOK)
    • Type: HTTP (※サーバー内で暗号化していない場合はHTTPを選択します)
    • URL: localhost:8080 (※公開したいツールのローカルポート番号を指定)
  3. 「Save tunnel」 をクリックして完了です。

たったこれだけです。
ブラウザから https://tool.あなたのドメイン.com にアクセスしてみてください。SSL証明書も自動で適用された状態で、自宅サーバーのツール画面が表示されるはずです!

おわりに

Cloudflare Tunnelを導入したことで、以下の煩わしさから完全に解放されました。

  • DiCE等を使ったDDNSの定期更新
  • ルーターのポートマッピング(穴あけ)作業
  • Let's Encrypt等を使ったSSL証明書の自動更新スクリプト管理

ルーターのポートを一切開けずに、外部からセキュア(HTTPS)に自宅サーバーへアクセスできるのは、精神衛生上も最高に良いです。
同じように「固定IPじゃないし、Web公開はちょっと…」と足踏みしている方は、ぜひCloudflare Tunnelを試してみてください。自宅サーバーライフが圧倒的に快適になりますよ!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?