Rust製のセルフホストなリモートデスクトップツール「RustDesk」を試す
公式サイト
高速オープンソースのリモートアクセスおよびサポートソフトウェア
TeamViewer、AnyDesk、Splashtopから、自身のセルフホストサーバーを使用した安全で信頼性の高いリモートデスクトップ体験の RustDesk に切り替えましょう。
GitHubレポジトリ
まず「セルフホスト」ってのはどういうことかな?ということで、ドキュメントはこちら。
セルフホスト型サーバーはどのように機能しますか?
技術的には2つの実行可能ファイル(サーバー)があります:
hbbs
- RustDesk ID(rendezvous/シグナリング)サーバー、TCP(21114
- Proのみhttp用、21115
、21116
、21118
WebSocket用)とUDP(21116
)でリッスンしますhbbr
- RustDeskリレーサーバー、TCP(21117
、21119
ウェブソケット用)でリッスンします
RustDeskクライアントが
hbbr
/hbbs
とどのように通信するかについてはこちらの図解をご覧ください。RustDeskがマシン上で実行されている限り、そのマシンは常にIDサーバー(
hbbs
)に対してping送信を行い、現在のIPアドレスとポートを通知します。コンピュータAからコンピュータBへの接続を開始すると、コンピュータAはIDサーバーに接続し、コンピュータBとの通信を要求します。
IDサーバーは、ホールパンチングを使用してAとBを直接接続しようとします。
ホールパンチングが失敗した場合、Aはリレーサーバー(
hbbr
)を介してBと通信します。ほとんどの場合、ホールパンチングは成功し、リレーサーバーは使用されません。
こちらではrustdeskサーバーをセルフホストすべきかについての議論があります。
で全体図が以下にある
referred from https://github.com/rustdesk/rustdesk/wiki/How-does-RustDesk-work%3F
このあたりWebRTCと通じるものがあるな。で、この2つのサーバをセルフホストできるということらしい。ぱっと感じた印象としてはそれなりに面倒かもと思ったら、RustDeskが用意してくれるものを使うこともできるみたい。ただし、以下のRedditスレに、セルフホストを建てるべきか?について書かれている。
Rustdeskサーバーをセルフホストすべきでしょうか? おそらくイエスです。
公開されているrustdeskサーバーはテストや研究用であり、大量のトラフィックを処理するための設備は整っていません。
このため、公開サーバーを経由して接続を確立するのにかかる時間は大幅に異なることがあり、サーバーに過負荷がかかると失敗することさえあります。
また、ホールパンチングに失敗し、パブリック・リレー・サーバーを経由して接続された場合、ある日は非常に速いかもしれませんが、そうでない日もあります。
セキュリティ管理の観点でもまあセルフホストの方が良いとは感じる。とりあえずまずは試してみてからかな。
試してみようかなと思ったけど、TailscaleとかCloudflare Tunnelあたりで手軽にできるよなぁ・・・と改めて。まあ業務などでサービス使えなくて完全にセルフホストしないといけない、というようなケースであれば、かなぁ。