Cloudflare WorkersとWebRTCを使用したセルフホスト型リモートデスクトップの構築

Cloudflare WorkersとWebRTCを使用したセルフホスト型リモートデスクトップの構築

Cloudflareのエッジ機能とWebRTCのピアツーピアの可能性を活用して、リモートデスクトップサービスを最適化します。

リモートデスクトップサービスの運用では、すべての画面フレームをストリーミングするためにリレーサーバーが必要となるため、多大なコストや帯域幅の制限が発生することがよくあります。より効率的なアプローチは、Cloudflare WorkersとWebRTCを活用して、制御プレーンとメディアプレーンを分離することです。

アーキテクチャのアプローチ

従来のリモートデスクトップサービスは、すべてのトラフィックをリレーサーバー経由で集中させるため、ボトルネックが発生します。このアーキテクチャは、役割を分割することで最適化できます。

  • 制御プレーン: Cloudflare Workersによって管理され、APIリクエスト、認証、およびWebSocketを介したシグナリングを処理します。
  • メディアプレーン: WebRTCによって管理され、リレーサーバーをバイパスして、画面コンテンツやユーザー入力のピアツーピア送信を促進します。

制御プレーンの詳細

Cloudflare Workersは制御プレーンの骨格として機能します。以下の要素を効率的に管理します。

  • APIリクエスト: サーバーレス機能を使用してリクエストとレスポンスを処理します。
  • 認証: トークンベースまたはその他の認証メカニズムを通じてセキュアなアクセスを確保します。
  • WebSocketシグナリング: ピア間の接続確立を促進します。

バックエンドの状態管理には、Cloudflareの多様なストレージソリューションが利用されます。

  • D1: 構造化データ向けのCloudflareのサーバーレスSQLデータベース。
  • KV: セッションデータ向けの低レイテンシなキー・バリューストレージ。
  • R2: 大容量ファイルやBLOB向けのオブジェクトストレージ。
  • Durable Objects: Worker呼び出し間での一貫した状態保持とコーディネーションを可能にします。

WebRTCを介したピアツーピアメディア

WebRTCはピア間の直接通信チャネルを提供し、以下を送信します。

  • 画面コンテンツ: 中央サーバーを介さないリアルタイム共有。
  • ユーザー入力: キーボード、マウス、およびクリップボードのデータがシームレスに流れます。

このセットアップにより、レイテンシが削減され、高コストなメディアリレーが不要になるため、パフォーマンスとコストに直接好影響を与えます。

代替のVPSデプロイメントオプション

Cloudflare Workersが利用できない環境では、従来のVPSセットアップを採用できます。これには以下が含まれます。

  • Node.js: アプリケーションロジックの実行用。
  • SQLite: 軽量なデータベースソリューションとして。
  • Docker: コンテナ化およびデプロイメント管理用。

このスタックは、オンプレミスソリューションを好むユーザーにとって効果的な代替手段となります。

GsDesk: オープンソース実装

オープンソースプロジェクトの GsDesk は、メディアリレーを処理せずにディスカバリと認証に焦点を当ててこのアーキテクチャを実装しています。これにより、開発者は以下のことが可能になります。

  • シグナリングおよび制御ロジックを探索し、変更する。
  • 特定のニーズに合わせて機能を拡張する。

実装上の考慮事項

このようなシステムをデプロイする際は、以下を考慮してください。

  • スケーラビリティ: Cloudflareのエッジネットワークを活用してグローバルなリーチを実現します。
  • セキュリティ: 堅牢な暗号化と認証メカニズムを実装します。
  • NATトラバーサル: 必要に応じてSTUN/TURNサーバーでNATやファイアウォールに対応します。
  • ブラウザの互換性: ターゲットブラウザ間でのWebRTCサポートを確保します。

主なポイント

  • コスト効率: リレーサーバーを排除することで運用コストを削減します。
  • パフォーマンス: ピアツーピア接続によりレイテンシが低下し、ユーザーエクスペリエンスが向上します。
  • 柔軟性: Cloudflare WorkersとVPSベースのデプロイメントを選択可能です。
  • オープンソース: GsDeskは、カスタマイズされたリモートデスクトップソリューションの基礎を提供します。
Free field guide

Linux Server Hardening Checklist

30 practical steps to take a fresh Linux box from default to defensible. Enter your email — you'll get the PDF instantly, plus new posts on Linux, security & AI.