目次 非表示
在宅勤務やリモート作業で、自宅や会社の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 enabledockerをインストールします。既にインストールされている方はスキップして大丈夫です!
bash <(wget -qO- https://get.docker.com)
wget rustdesk.com/oss.yml -O compose.yml
sudo docker compose up -drustdesk用のフォルダを作成します。今回は/srv/rustdeskを作業フォルダにします。
sudo mkdir -p /srv/rustdesk 先ほど作成したフォルダに、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
EOFdocker compose up -dもしこれで起動しない場合は..古いバージョンかもしれないので下を利用してください
docker-compose up -dその場でlsと打つとdocker-compose.ymlの他に”data”というフォルダができていると思います。そしたらその場で
cat data/id_ed25519.pub
#(出力例)xxxxxxxxxxxxxxxxxxx=出力した文字列をコピーしておいてください。あとで使います。
お疲れ様でした。これでサーバー側の手順は完了です。
クライアント側
rustdeskのクライアントを接続する側もされる側にインストールします。
その後に、それぞれのクライアントを紐つける作業を行なっていきます。
さっき作ったサーバーとクライアントを紐つけます。
1.IDの右の方の…を押します。

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


認証サーバー:さっき建てたサーバーのグローバルIP(サーバーのコンソールで curl inet-ip.infoで出てきます。)
中継サーバー:空欄で大丈夫です!
APIサーバー:空欄で大丈夫です!
Key:さっきコピーしたものをコピーします。

ホームに戻った時にウィンドウの左下(赤枠)のところが準備完了になっていたらサーバーと接続できています。
リンクします。接続する側とされる側で相互に数字を入れ合えば接続できます!お疲れ様でした!これでリモデができます

トラブルシューティング
- なぜか繋がらない。
- UFWなどのファイヤーウォールが影響している場合が多い、自分の場合はVPSにcloud-initされていたifconfigの設定が悪さしていました
まとめ
接続できましたでしょうか。やはりセルフホストはセキュリティ面で安心できるのがいいですね。昔はChromeリモデ使っていたのですが、なんとなく不安でこちらに移行しました。
外出先から自宅のデスクトップをちょっといじれるのは地味に便利ですよね。

