自宅サーバ上に構築したサービスに対して、自宅外からhttpsでアクセスする方法を3つ紹介します。
前提として、以下のネットワーク構成図で示す①~③の経路について説明します。いずれも自宅サーバのNextcloudへのアクセスを例にしていますが、おそらくどんなサービスでも応用可能です。
① Cloudflare Tunnel
Cloudflareが提供する「Cloudflare Tunnel」というサービスを利用します。Cloudflare Tunnelは、自宅サーバのようなプライベートネットワークと、Cloudflareのグローバルネットワークを接続して、Cloudflareを通して外部からアクセス可能にします。
- メリット
- 導入と維持に手間がかからない
- レスポンスが比較的早い
- デメリット
- 独自ドメインの取得と更新に費用がかかる
- 無料プランの場合、1ファイル100MBの上限がある
具体的な実装方法を以下の記事で紹介しています。
② リバースプロキシ
VPSなどで外部からアクセス可能なサーバを構築し、そのサーバを中継(リバースプロキシ)することで自宅サーバに接続します。リバプロサーバと自宅サーバ間はTaislcaleでVPN接続します。また、MyDNSといったDDNSを利用することで固定のIPアドレスを必要とせず、専用のサブドメインを持つことができます。
- メリット
- GCEやOCIなどの無料枠を使えば無料で実現できる
- デメリット
- リバプロサーバの構築と維持が面倒
- レスポンスが遅い(リバプロサーバの場所や性能による)
具体的な実装方法を以下の記事で紹介しています。
③ Tailscale (Tailnet)
Taislcaleを自宅サーバとクライアント端末のそれぞれに導入して、TaislcaleのVPNで接続します。アドレスはTaislcaleが提供するMagicDNSを使用します。
- メリット
- 無料で実現できる
- 導入が簡単(シンプルで一番分かりやすい)
- デメリット
- クライアント側にTailscaleの導入が必要(Tailscale Funnelを使えば不要)
- 無料プランの場合、クライアント数100端末の上限がある
具体的な実装方法を以下の記事で紹介しています。
まとめ
現在、私の自宅サーバは上記①~③のすべて実装しています。理由やそれぞれの使い分けは以下のとおりです。
- 基本的には①でアクセスする
- Cloudflareの障害等で①が使えない場合、②でアクセスする
- 自宅の据え置き端末からのみ、③でアクセスする
自宅の据え置き端末のみ③を使ってるのは、実質自宅ネットワーク内でのローカルアクセスになって一番速いからです。他の①や②だと外部ネットワークを経由するのでどうしても遅くなりますが、Tailscaleでアクセスする場合は最短経路を選択してくれるので、直接接続になります。