本文へ移動

外部接続方式の選択

SetFN SpaceBuilderは、インストール直後から同じネットワーク内ですぐに使用できます。オフィスの外やモバイルネットワークからも接続するには、サーバーと外部のインターネットの間に安全な接続経路を作る必要があります。

初めて聞くと複雑に思えますが、目的は単純です。

https://space.example.com
        ↓
外部接続の方式
        ↓
http://localhost:8510

Cloudflare Tunnelを使用すると、この接続を比較的簡単に構成できます。サーバーのポートをインターネットに直接公開する必要がなく、HTTPS証明書とドメインの接続もCloudflareが処理します。

まず外部接続が必要かどうかを確認してください

同じオフィスやWi-Fiの中だけで使用する場合、外部接続の設定は必要ありません。接続アドレスの確認(ローカル/内部ネットワーク)を参照して、内部IPアドレスで接続してください。

次のような場合は、外部接続の構成が必要です。

  • 自宅や出張先からスペースに接続する
  • モバイルデータ通信で接続する
  • 社外の協力会社や顧客に共有リンクを渡す
  • 複数の拠点やネットワークから1つのスペースを使用する

どの方式を選べばよいですか?

方式おすすめの対象利点自分で管理する項目
Cloudflare Tunnel(推奨)初めて外部接続を構成するユーザー、固定のグローバルIPがない環境ルーターのポート開放が不要、オリジンサーバーのIPを非公開にできる、HTTPSとドメインの接続が簡単Cloudflareアカウント、ドメイン、cloudflaredサービス
Caddyリバースプロキシ自前のサーバーを運用しながら、設定をシンプルに保ちたいユーザー設定が簡単、HTTPS証明書を自動で発行・更新DNS、グローバルIP、ファイアウォール、ポートフォワーディング、Caddy
NGINXリバースプロキシ既存のNGINXインフラがある、または細かい制御が必要な組織設定の柔軟性が高い、既存のWebインフラと統合しやすいDNS、証明書、ファイアウォール、ポートフォワーディング、NGINX
ルーターのポートフォワーディングテスト環境、またはネットワークを自分で管理できるユーザー別途トンネルサービスを使わずに直接接続グローバルIP、ルーター、ファイアウォール、HTTPS、セキュリティアップデート
VPN・プライベートネットワークメンバーにだけ非公開で接続を許可したい組織サービスを公開インターネットにさらさないVPNサーバーとユーザー端末の設定

トンネリングとリバースプロキシを簡単に理解する

トンネリング

サーバー内で実行されるConnectorが、先に外部サービスへの安全な接続を確立します。外部からのリクエストは、この接続を逆向きにたどってサーバーに届きます。

Cloudflare Tunnelでは、cloudflaredがサーバーからCloudflareへのアウトバウンド接続を確立します。そのため、一般的な環境では、ルーターの80・443・8510ポートを外部に開く必要がありません。

ユーザー → Cloudflare → 接続済みのTunnel → SetFN :8510

リバースプロキシ

CaddyやNGINXが外部からのリクエストを先に受け取り、内部のSetFNサービスに転送します。ユーザーは8510ポートを知らなくても、https://space.example.comで接続できます。

ユーザー → CaddyまたはNGINX :443 → SetFN :8510

リバースプロキシには、HTTPSの終端、ドメインごとの振り分け、アクセスログ、リクエスト制限などの機能を1か所で管理できるという利点があります。

推奨方式:Cloudflare Tunnel

Cloudflare Tunnelは、内部サービスを公開ドメインに接続しながら、オリジンサーバーに公開ルーティング可能なIPアドレスを必要としない方式です。cloudflaredがCloudflareのネットワークへの接続を開始するため、オリジンサーバーに直接迂回して接続される経路も減らせます。

初めて構成するときに期待できる点は、次のとおりです。

  • ルーターの管理画面でポートフォワーディングを設定しなくてよい
  • 動的なグローバルIPや通信事業者の環境の影響を比較的受けにくい
  • https://space.example.comの形式のアドレスを使用できる
  • 外部向け証明書の発行と更新の負担が減る
  • 必要に応じて、Cloudflare Accessで許可するユーザーやメールドメインを制限できる
  • 1つのConnectorで、複数の内部Webサービスをサブドメインごとに接続できる

Cloudflare Tunnelの構成の流れ

  1. 使用するドメインをCloudflareに接続します。
  2. CloudflareのダッシュボードでTunnelを作成します。
  3. SpaceBuilderサーバーにcloudflaredをインストールします。
  4. ダッシュボードに表示されたコマンドでConnectorを実行します。
  5. Published applicationで、ドメインとSetFNのアドレスを接続します。
  6. 必要に応じて、Cloudflare Accessのポリシーを追加します。
  7. 外部のネットワークから接続を確認します。

Published applicationのService URLには、次の値を使用します。

項目例
Public hostnamespace.example.com
Service typeHTTP
Service URLhttp://localhost:8510

SetFNのポートを変更した場合は、8510の代わりに実際のサービスポートを入力してください。

Cloudflare公式の詳細ガイド

Cloudflareの画面とインストールコマンドは変更されることがあるため、実際に構成するときは、次の公式ドキュメントもあわせて確認してください。

リバースプロキシを自分で運用する

すでにグローバルIPとサーバーインフラを運用している場合は、CaddyまたはNGINXで直接接続できます。

Caddy

Caddyは、ドメインのDNSがサーバーを指し、80・443ポートがサーバーに到達できる状態であれば、HTTPS証明書の発行と更新を自動的に処理できるため、小規模な自前の運用環境に適しています。

space.example.com {
    reverse_proxy 127.0.0.1:8510
}

詳しい設定は、Caddyリバースプロキシのクイックスタートを参照してください。

NGINX

すでにNGINXを使用している場合は、HTTPSリクエストをSetFNのローカルポートに転送できます。

server {
    listen 443 ssl;
    server_name space.example.com;

    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://127.0.0.1:8510;
    }
}

上の例は、プロキシの基本的な構造だけを示しています。実際の運用では、証明書、WebSocket、アップロードサイズ、タイムアウト、アクセスログの設定もあわせて検討する必要があります。詳しくは、NGINX公式のリバースプロキシガイドを参照してください。

ルーターのポートフォワーディング

ルーターで外部の80・443ポートをリバースプロキシサーバーに転送する方式です。SetFNの8510ポートをインターネットに直接公開するのではなく、CaddyやNGINXが443ポートでHTTPSリクエストを受け取り、内部の8510に転送するように構成してください。

必要な条件は次のとおりです。

  • インターネット回線に、外部からアクセスできるグローバルIPがある
  • ルーターの管理者権限がある
  • サーバーの内部IPが変わらないように、固定IPまたはDHCP予約を設定する
  • DNSレコードがグローバルIPを指している
  • サーバーのファイアウォールで必要なポートだけを許可する
  • HTTPS証明書の発行と自動更新を構成する

通信事業者がCGNATを使用している回線では、ルーターに表示されるWAN IPと実際のグローバルIPが異なり、ポートフォワーディングが機能しないことがあります。その場合は、Cloudflare TunnelまたはVPN方式を使用してください。

ドメインの準備

会社のドメインがある場合は、space.example.comのようなサブドメインを使用することをおすすめします。ドメインがない場合は、ドメイン登録事業者から購入できます。

Cloudflare Tunnelを使用するには、そのドメインがCloudflareアカウントのアクティブなZoneとして接続されている必要があります。リバースプロキシを自分で運用する場合は、DNSのAまたはAAAAレコードをサーバーのグローバルIPに向けます。

接続の確認

設定後、次の順序で確認してください。

  1. サーバーでhttp://localhost:8510に接続
  2. 同じネットワークでhttp://<サーバーIP>:8510に接続
  3. ドメインでHTTPS接続
  4. Wi-Fiをオフにしたモバイルデータ通信の環境で接続
  5. ログイン、ファイルのアップロード、リアルタイム通知またはチャットの動作を確認

内部からの接続の段階で失敗する場合は、先にSetFNサービスの状態を確認してください。内部からは接続できるのにドメインでの接続だけ失敗する場合は、Tunnel、DNS、リバースプロキシ、ファイアウォールの順に確認します。

運用チェックリスト

  • 管理者とユーザーに、長くて固有のパスワードを使用する
  • 不要なアカウントと共有リンクを無効にする
  • Tunnel Connectorまたはリバースプロキシをシステムサービスとして登録する
  • Connector、OS、プロキシを定期的にアップデートする
  • HTTPS証明書の有効期限とDNSの状態を確認する
  • 外部からの接続と管理者の操作ログを点検する
  • 障害時に内部アドレスで接続できるよう、運用手順を準備する

関連ドキュメント