自前サーバーで爆速!リモートデスクトップRustDeskサーバー構築&高速化ガイド

在宅勤務やリモート作業で、自宅や会社のPCに「安全に・安く・速く」つなぎたい人向けに、
オープンソースのリモートデスクトップソフト「RustDesk」をセルフホストで構築する手順を紹介します。

RustDeskとは

RustDeskは、TeamViewerの代替として設計されたオープンソースのリモートデスクトップアプリケーションです。(故にめちゃくちゃteamviewerとUIがどことなく似ている!)

  • セルフホスティング対応: オープンソース版サーバーを含むRustDeskサーバーを自分で立てて利用でき、リモート接続に関わるデータを自分で制御できます。
  • 設定ほぼ不要: 「Yet another remote desktop solution, written in Rust. Works out of the box with no configuration required.」と説明されている通り、初期設定なしでそのまま使える設計です。
  • マルチプラットフォーム: クライアントは Windows、macOS、各種Linuxディストリビューション、Android、iOS、Web など多数の環境をサポートしています。

VPSなどの自分のサーバーも利用できる、オープンソースのリモートアクセス/サポートソフトウェアという位置付けです。

商用について

RustDeskサーバーはどちらもVPSなど、自身で用意したサーバーに構築するのですが、

自分で構築しサポートなしのOSS版と、
同じく自分で構築するのですが、ログ機能、セキュリティなどの管理機能が充実している商用版があります。

OSS版 RustDesk

今回はこちらを構築します。

  • ライセンスは AGPL-3.0 なので、条件(ソース開示など)を守る前提で 商用利用 OK
  • サーバーも自前でセルフホストできて、ソフトウェアとしては無料

商用(RustDesk Server Pro)

  • 自己ホスティング前提の有償ライセンス
  • 月額はだいたい RustDesk Pro < TeamViewer 商用プラン という価格帯
  • ただし RustDesk は自前サーバーやVPS代が別途必要、TeamViewerはクラウド込み
    純粋なライセンス料はRustDeskの方が安いが、トータルコストは構成次第 という関係。

いざ構築!

構築には環境を汚さないdockerを利用します。

サーバー側の想定はdebianやUbuntuなど、グローバルIPアドレスを持っていているLinux系OSです。

サーバー側

ポート開放

UFWでポート解放します。

sudo ufw allow 21115/tcp
sudo ufw allow 21116/tcp
sudo ufw allow 21116/udp
# hbbr 用
sudo ufw allow 21117/tcp
# UFW を有効化(まだなら)
sudo ufw enable
Dockerをインストール

dockerをインストールします。既にインストールされている方はスキップして大丈夫です!

bash <(wget -qO- https://get.docker.com)
wget rustdesk.com/oss.yml -O compose.yml
sudo docker compose up -d
プロジェクト用フォルダを作成

rustdesk用のフォルダを作成します。今回は/srv/rustdeskを作業フォルダにします。

sudo mkdir -p /srv/rustdesk 
Docker Composeファイルを作成

先ほど作成したフォルダに、Docker Compose の起動設定である docker-compose.yml を配置し、そこに書き込みます。

cd /srv/rustdesk
sudo tee docker-compose.yml > /dev/null << 'EOF'
services: hbbs: container_name: hbbs image: rustdesk/rustdesk-server:latest command: hbbs 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
EOF
起動
docker compose up -d

もしこれで起動しない場合は..古いバージョンかもしれないので下を利用してください

docker-compose up -d
公開鍵確認

その場でlsと打つとdocker-compose.ymlの他に”data”というフォルダができていると思います。そしたらその場で

cat data/id_ed25519.pub
#(出力例)xxxxxxxxxxxxxxxxxxx=

出力した文字列をコピーしておいてください。あとで使います。

お疲れ様でした。これでサーバー側の手順は完了です。

クライアント側

rustdeskのクライアントを接続する側もされる側にインストールします。
その後に、それぞれのクライアントを紐つける作業を行なっていきます。

RustDeskダウンロード&インストール

ダウンロードしてインストールします。下の図を参考に自分の環境に合ったものを入れてください!

サーバー登録

さっき作ったサーバーとクライアントを紐つけます。

1.IDの右の方の…を押します。

ネットワーク->認証/中継サーバーをクリックします。

認証サーバー:さっき建てたサーバーのグローバルIP(サーバーのコンソールで curl inet-ip.infoで出てきます。)

中継サーバー:空欄で大丈夫です!
APIサーバー:空欄で大丈夫です!

Key:さっきコピーしたものをコピーします。

ホームに戻った時にウィンドウの左下(赤枠)のところが準備完了になっていたらサーバーと接続できています。

リンク!

リンクします。接続する側とされる側で相互に数字を入れ合えば接続できます!お疲れ様でした!これでリモデができます

トラブルシューティング

なぜか繋がらない。
UFWなどのファイヤーウォールが影響している場合が多い、自分の場合はVPSにcloud-initされていたifconfigの設定が悪さしていました

まとめ

接続できましたでしょうか。やはりセルフホストはセキュリティ面で安心できるのがいいですね。昔はChromeリモデ使っていたのですが、なんとなく不安でこちらに移行しました。

外出先から自宅のデスクトップをちょっといじれるのは地味に便利ですよね。