外部接続方式の選択
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の構成の流れ
- 使用するドメインをCloudflareに接続します。
- CloudflareのダッシュボードでTunnelを作成します。
- SpaceBuilderサーバーに
cloudflaredをインストールします。 - ダッシュボードに表示されたコマンドでConnectorを実行します。
- Published applicationで、ドメインとSetFNのアドレスを接続します。
- 必要に応じて、Cloudflare Accessのポリシーを追加します。
- 外部のネットワークから接続を確認します。
Published applicationのService URLには、次の値を使用します。
| 項目 | 例 |
|---|---|
| Public hostname | space.example.com |
| Service type | HTTP |
| Service URL | http://localhost:8510 |
SetFNのポートを変更した場合は、8510の代わりに実際のサービスポートを入力してください。
Cloudflare公式の詳細ガイド
Cloudflareの画面とインストールコマンドは変更されることがあるため、実際に構成するときは、次の公式ドキュメントもあわせて確認してください。
- Cloudflare Tunnelの概要
- ダッシュボードでTunnelを作成する
cloudflaredのOS別インストール- ローカルサービスを公開ドメインに接続する
- Cloudflare Accessでユーザー認証を追加する
リバースプロキシを自分で運用する
すでにグローバル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に向けます。
接続の確認
設定後、次の順序で確認してください。
- サーバーで
http://localhost:8510に接続 - 同じネットワークで
http://<サーバーIP>:8510に接続 - ドメインでHTTPS接続
- Wi-Fiをオフにしたモバイルデータ通信の環境で接続
- ログイン、ファイルのアップロード、リアルタイム通知またはチャットの動作を確認
内部からの接続の段階で失敗する場合は、先にSetFNサービスの状態を確認してください。内部からは接続できるのにドメインでの接続だけ失敗する場合は、Tunnel、DNS、リバースプロキシ、ファイアウォールの順に確認します。
運用チェックリスト
- 管理者とユーザーに、長くて固有のパスワードを使用する
- 不要なアカウントと共有リンクを無効にする
- Tunnel Connectorまたはリバースプロキシをシステムサービスとして登録する
- Connector、OS、プロキシを定期的にアップデートする
- HTTPS証明書の有効期限とDNSの状態を確認する
- 外部からの接続と管理者の操作ログを点検する
- 障害時に内部アドレスで接続できるよう、運用手順を準備する