なぜTeamViewerをやめてRustDeskを自前構築すべきなのか?
数十台の仮想マシンを抱える検証ラボを管理しているなら、無料版TeamViewerの「カクつき」にはもううんざりしていることでしょう。さらに悪いことに、急いで不具合を修正している最中に、AnyDeskから「商用利用の疑い」で強制切断されることもあります。
現在、私はk8sやデータベースのテスト用に12台のVMとコンテナを搭載したProxmoxシステムを運用しています。以前は、設定のためにWindows VMにリモート接続するたびに、サードパーティの仲介サーバーを経由しなければなりませんでした。その結果、遅延は常に200〜300msに達し、マウス操作が苦行となっていました。
RustDeskは、まさに完璧な解決策です。これは、セルフホストサーバー(Self-hosted Server)を自分で構築できるオープンソースのリモートコントロールソフトウェアです。専用サーバーを運用することで、データは自分のインフラ内を直接通過します。速度はほぼ瞬時になり、海外にあるサーバーの応答を待つ必要はなく、ローカルネットワークの帯域幅にのみ依存します。
ハードウェア要件(非常に軽量)
非常に控えめな構成のLinux仮想マシン(Ubuntu 22.04 LTSを推奨)があれば十分です:
- CPU: 1コア
- RAM: 1GB(実際にはhbbsとhbbrの2つのサービスで40〜60MB程度しか消費しません)
- Disk: 10GB SSD
- OS: Dockerをサポートする任意のディストリビューション
ヒント: 外出先のカフェから自宅のPCを操作したい場合は、リレーサーバーとして国内の格安VPSを借りることをお勧めします。遅延は数百msから20ms以下にまで短縮されます。
Docker ComposeによるRustDeskサーバーのデプロイ
Dockerを使用するのが最もクリーンな方法です。環境を分離でき、将来のアップグレードも容易になります。
ステップ1:Dockerのインストール
sudo apt update
sudo apt install docker.io docker-compose -y
sudo systemctl enable --now docker
ステップ2:Docker Composeファイルの設定
まず、管理しやすいようにデータ保存用のディレクトリを作成します:
mkdir rustdesk-server && cd rustdesk-server
nano docker-compose.yml
ファイルに以下の設定内容を貼り付けます:
version: '3'
services:
hbbs:
container_name: hbbs
image: rustdesk/rustdesk-server:latest
command: hbbs -r <あなたのIPアドレス>:21117 -k _
volumes:
- ./data:/root
network_mode: "host"
depends_on:
- hbbr
restart: unless-stopped
hbbr:
container_name: hbbr
image: rustdesk/rustdesk-server:latest
command: hbbr -k _
volumes:
- ./data:/root
network_mode: "host"
restart: unless-stopped
重要な注意点: <あなたのIPアドレス>をLinuxマシンのIPに置き換えてください。-k _パラメータは、クライアントが接続するために公開鍵(Public Key)を必須とし、招かれざる客をブロックします。
ステップ3:システムの起動
sudo docker-compose up -d
起動後、./dataディレクトリを確認してください。そこにid_ed25519.pubファイルが生成されます。以下のコマンドを使用して、セキュリティキーの文字列を取得します:
cat ./data/id_ed25519.pub
クライアント側の設定
次に、操作する側のPCと操作される側のPCの両方を、構築した専用サーバーに接続します。
- PCでRustDeskクライアントを開きます。
- Settings > Display > ID/Relay Server を探します。
- 以下の情報を入力します:
- ID Server: LinuxマシンのIP(例:10.0.0.50)
- Relay Server: LinuxマシンのIP(例:10.0.0.50)
- Key:
id_ed25519.pubファイルから取得した文字列
実戦アドバイス: よりプロフェッショナルに運用するために、私は通常ドメイン(例:remote.mycloud.com)をサーバーのIPに紐付けています。こうすることで、将来インフラを変更しても、各クライアントを手動で再設定する必要がなくなります。
セキュリティの最適化と監視
サーバーが正常に動作しているか確認するには、コンテナのリアルタイムログを表示します:
sudo docker logs -f hbbs
ログに「ID registered」という行が表示されれば、接続成功です。
ファイアウォールの設定
VPSを使用している場合は、データが遮断されないように以下のポートを開放していることを確認してください:
- TCP: 21115 から 21119
- UDP: 21116
sudo ufw allow 21115:21119/tcp
sudo ufw allow 21116/udp
二重のセキュリティレイヤー
-kパラメータを省略しないでください。インターネット環境では、ポートスキャンボットが数分以内にサーバーを見つけ出します。キーを使用することで、許可されたデバイスのみが接続を確立できるようになります。
また、私はよくRustDeskとTailscaleを組み合わせています。この場合、RustDeskサーバーは仮想ローカルネットワーク内でのみ動作します。VPNに接続してからでないとリモート操作ができないため、Proxmoxや個人のホームラボにとって究極のセキュリティ対策となります。
おわりに
RustDeskサーバーの自前構築は、コストを節約できるだけでなく、圧倒的にスムーズな操作体験をもたらします。Docker Composeを使えば、5分足らずでプロフェッショナルなリモートコントロールシステムを構築できます。これからは、すべてのデータと画像が自分の管理下に置かれ、サードパーティに依存することはありません。

