RustDeskサーバーを自前構築:リモートデスクトップを完全にコントロール、爆速かつ万全なセキュリティを実現

Virtualization tutorial - IT technology blog
Virtualization tutorial - IT technology blog

なぜ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の両方を、構築した専用サーバーに接続します。

  1. PCでRustDeskクライアントを開きます。
  2. Settings > Display > ID/Relay Server を探します。
  3. 以下の情報を入力します:
    • 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分足らずでプロフェッショナルなリモートコントロールシステムを構築できます。これからは、すべてのデータと画像が自分の管理下に置かれ、サードパーティに依存することはありません。

Share: