プロプライエタリなツールが限界な理由
ヘッドレスサーバー、仮想マシン(VM)、ワークステーションの管理は、ホームラボ生活の一部です。長年、私たちはTeamViewerやAnyDeskに頼ってきました。それらは確かに機能していましたが、ある時を境に使えなくなります。多くの人が、何か重要な問題を解決しようとしている最中に「商用利用が検出されました」というポップアップに遭遇したことがあるでしょう。かつては無料だった機能のために月額20ドルのサブスクリプションを要求される、非常にストレスのたまる障害です。
問題はコストだけではありません。プライバシーも重要です。パブリックなツールを使用すると、マウスの動きやキー入力のすべてが企業のサーバーを経由します。他国にあるリレーサーバーが過負荷になると、トラブルシューティングが不可能なほどのラグ(遅延)が発生します。セルフホスト愛好家にとって、わずか1メートル先にあるサーバーを管理するためにクラウドを経由するのは、不適切な設計に感じられるはずです。
なぜパブリックリレーは頻繁に失敗するのか
これを解決するには、その仕組み(配管)を見る必要があります。ほとんどのリモートツールは、IDサーバーとリレーサーバーを使用します。IDサーバーは電話帳のような役割を果たし、ラップトップがサーバーを見つけるのを助けます。頑固なファイアウォールのせいで直接のピアツーピア(P2P)接続が失敗した場合、トラフィックはリレーサーバーを経由してトンネリングされます。
パブリックリレーは混雑していることが多いです。カーソルの反応に2秒かかる場合、データが大陸を横断して遠回りしているのが原因です。自前のサーバーをホストすることで、その「電話帳」と「トンネル」を自分のネットワーク内に持ち込むことができます。完全な自律性が手に入り、さらに重要なことに、企業の利用規約の変更に振り回されることもなくなります。
競合比較:RustDeskが選ばれる理由
MeshCentralやApache Guacamoleも堅実な選択肢ですが、重くなることがあります。MeshCentralは強力ですが、ボタンが多すぎてコクピットのような複雑さを感じます。Guacamoleはブラウザで動くのは素晴らしいですが、ファイル転送などの専用アプリが持つ「軽快さ」に欠けます。RustDeskはそのバランスが絶妙です。Rustで書かれているため非常に軽量で、通常の使用メモリは50MB未満です。Windows、Linux、macOS、モバイル向けのネイティブアプリがあり、プロ級のエクスペリエンスを無料で享受できます。
5分でサーバーをセットアップする
Dockerはこのサーバーを動かす最も速い方法です。インストール環境を分離でき、アップデートもコマンド一つで完了します。私はこのセットアップを使って異なる都市にある複数のサーバーを管理していますが、不安定な4Gモバイル回線でも非常に安定して動作しています。
前提条件
- DockerとDocker Composeがインストールされたサーバー。
- 基本的なターミナル操作スキル。
- ファイアウォールでポート 21115-21119 (TCP) と 21116 (UDP) を開放していること。
ステップ 1:プロジェクトディレクトリの作成
専用のフォルダを作成して整理しましょう。
mkdir -p ~/rustdesk-server && cd ~/rustdesk-server
ステップ 2:Docker Composeの設定を定義する
2つのコンテナが必要です。hbbs(IDサーバー)とhbbr(リレーサーバー)です。docker-compose.ymlファイルを作成します。
version: '3'
services:
hbbs:
container_name: hbbs
image: rustdesk/rustdesk-server:latest
command: hbbs -r サーバーのIPまたはドメイン
volumes:
- ./data:/root
network_mode: host
depends_on:
- hbbr
restart: unless-stopped
hbbr:
container_name: hbbr
image: rustdesk/rustdesk-server:latest
command: hbbr
volumes:
- ./data:/root
network_mode: host
restart: unless-stopped
プロのアドバイス: サーバーのIPまたはドメイン を実際のパブリックIPまたはDDNSに置き換えてください。network_mode: host を使用するのが、NATの煩わしさを避け、RustDeskが必要とする広範なポートを処理する最も簡単な方法です。
ステップ 3:サービスの起動
バックグラウンドでコンテナを起動します:
docker compose up -d
他人がリレーを乗っ取るのを防ぐため、サーバーは自動的にセキュリティキーを生成します。次のコマンドで取得してください:
cat ./data/id_ed25519.pub
クライアントの設定
次に、RustDeskクライアントがパブリックなネットワークではなく、自前のプライベートサーバーを使用するように設定します。
- RustDeskクライアントを開きます。
- メニューの3点ドットをクリックし、設定 > ネットワークを選択します。
- ネットワーク設定のロックを解除をクリックします。
- IDサーバーフィールドに、サーバーのIPアドレスを入力します。
- 先ほど生成したキーをKeyフィールドに貼り付けます。
下部に「Ready(準備完了)」と表示されれば、セルフホスト化は完了です。
パフォーマンスとセキュリティの現実
パフォーマンスの向上は劇的です。パブリックリレーでは150msだった遅延が、ローカルサーバーでは10ms以下にまで低下するのを確認しました。リモートセッションが、まるでマシンの目の前に座っているかのような感覚になります。
セキュリティもより強固になります。必須の公開鍵により、自分だけが帯域を利用できることが保証されます。最大限のセキュリティを確保したい場合は、インターネットにポートを開放せず、代わりにTailscaleやWireGuardなどのVPNを使用することもできます。これにより、リモートデスクトップのインフラ全体をパブリックなWebから隠しつつ、世界中のどこからでもアクセスできるようになります。
このセットアップは、今や私のホームラボ管理のバックボーンです。軽量で、データが尊重され、深夜2時にサーバーを修理する必要があるたびにお金を要求されることもありません。

