4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RustDeskをセルフホストして、サクサクリモートデスクトップを使おう

Posted at

はじめに

最近AnyDeskが無料版だと5分でセッション切れになる改悪が来てしまいました。
そこで、リレーサーバー(hbbs)とID/シグナリングサーバー(hbbr)をセルフホストすることで制限なく使用できるRustDesk環境を構築していこうと思います。

RustDeskについて

コロナ禍にTeamViwerのライセンス料にたまげたPurslane Limitedが開発しました。

基本的にはhbbr経由のホールパンチングでP2P通信を行いますが、ホールパンチングに失敗した場合はhbbrを経由しての通信に切り替わります。
実際に使っている感想としては、セルフホストサーバーに接続していればAnyDeskとまったく変わらないパフォーマンスが得られます。
ただし、コミュニティーサーバーへ接続しているとかなりラグや引っ掛かりがあります。

image.png

AnyDeskと同じようにファイル転送やTCPトンネリングが使えます。
さらに、相手方のカメラを見たりターミナルを起動することもできます。

構築

docker composeファイルが用意されているので、そちらを使用します。
また、hbbshbbrが各クライアントとの通信用に以下のポートを使用します。

  • TCP: 21115-21119(Pro版のみ21114も)
  • UDP: 21116

docker compose

$ mkdir rustdesk && cd ./rustdesk
$ tee docker-compose.yml > /dev/null <<'EOF'
services:
  hbbs:
    container_name: hbbs
    image: rustdesk/rustdesk-server:latest
    command: hbbs -r hbbr:21117
    volumes:
      - ./data:/root
    ports:
      - "21115:21115"
      - "21116:21116"
      - "21116:21116/udp"
      - "21118:21118"
    depends_on:
      - hbbr
    restart: unless-stopped

  hbbr:
    container_name: hbbr
    image: rustdesk/rustdesk-server:latest
    command: hbbr
    volumes:
      - ./data:/root
    ports:
      - "21117:21117"
      - "21119:21119"
    restart: unless-stopped
EOF

ファイアーウォール設定

1行1行開けるのはめんどくさくてやってられないので、firewalldのXML書式を使って一括で開放します。

$ sudo tee /etc/firewalld/services/rustdesk.xml > /dev/null <<'EOF'
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>RustDesk</short>
  <description>Ports required for the RustDesk.</description>
  <port protocol="tcp" port="21115"/>
  <port protocol="tcp" port="21116"/>
  <port protocol="udp" port="21116"/>
  <port protocol="tcp" port="21117"/>
  <port protocol="tcp" port="21118"/>
  <port protocol="tcp" port="21119"/>
</service>
EOF

sudo firewall-cmd --reload
sudo firewall-cmd --add-service=rustdesk --permanent
sudo firewall-cmd --reload

クライアント設定

クライアントの設定をするためにサーバーが生成した公開鍵を取得します。

$ cat ./data/id_ed25519.pub

この公開鍵を控えておきます。

クライアントを起動したら、設定 -> ネットワーク -> 認証/中継サーバーへ移動します。

image.png

次のように設定します。

  • 認証サーバー: hbbsのアドレス/ドメイン
  • 中継サーバー: hbbrのアドレス/ドメイン
  • APIサーバー: Pro版でなければ空欄
  • Key: 先ほど取得した公開鍵

これでセルフホストサーバーへの接続が完了したので、あとは画質やらコーデックやら無人アクセスやらを適宜調整してあげればOKです。

おわり

起動後ログインする前から接続でき、UACもこちらから許可できるので、これとWoLさえ組みあわせられればだいたい外からなんでもできます。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?