果報

二度寝して待つ

自宅サーバのサービスに外部からhttpsで接続する方法3選

自宅サーバ上に構築したサービスに対して、自宅外からhttpsでアクセスする方法を3つ紹介します。

前提として、以下のネットワーク構成図で示す①~③の経路について説明します。いずれも自宅サーバのNextcloudへのアクセスを例にしていますが、おそらくどんなサービスでも応用可能です。

ネットワーク構成図

① Cloudflare Tunnel

Cloudflareが提供する「Cloudflare Tunnel」というサービスを利用します。Cloudflare Tunnelは、自宅サーバのようなプライベートネットワークと、Cloudflareのグローバルネットワークを接続して、Cloudflareを通して外部からアクセス可能にします。

  • メリット
    • 導入と維持に手間がかからない
    • レスポンスが比較的早い
  • デメリット

具体的な実装方法を以下の記事で紹介しています。

text.yusukesakai.com

② リバースプロキシ

VPSなどで外部からアクセス可能なサーバを構築し、そのサーバを中継(リバースプロキシ)することで自宅サーバに接続します。リバプロサーバと自宅サーバ間はTaislcaleでVPN接続します。また、MyDNSといったDDNSを利用することで固定のIPアドレスを必要とせず、専用のサブドメインを持つことができます。

  • メリット
    • GCEやOCIなどの無料枠を使えば無料で実現できる
  • デメリット
    • リバプロサーバの構築と維持が面倒
    • レスポンスが遅い(リバプロサーバの場所や性能による)

具体的な実装方法を以下の記事で紹介しています。

text.yusukesakai.com

③ Tailscale (Tailnet)

Taislcaleを自宅サーバとクライアント端末のそれぞれに導入して、TaislcaleのVPNで接続します。アドレスはTaislcaleが提供するTailnet nameを使用します。

  • メリット
    • 無料で実現できる
    • 導入が簡単(シンプルで一番分かりやすい)
  • デメリット

具体的な実装方法を以下の記事で紹介しています。

text.yusukesakai.com

まとめ

現在、私の自宅サーバは上記①~③のすべて実装しています。理由やそれぞれの使い分けは以下のとおりです。

  • 基本的には①でアクセスする
  • Cloudflareの障害等で①が使えない場合、②でアクセスする
  • 自宅の据え置き端末からのみ、③でアクセスする

自宅の据え置き端末のみ③を使ってるのは、実質自宅ネットワーク内でのローカルアクセスになって一番速いからです。他の①や②だと外部ネットワークを経由するのでどうしても遅くなりますが、Tailscaleでアクセスする場合は最短経路を選択してくれるので、直接接続になります。