RustDeskのサーバを立ち上げる
Rustdeskを試し始めた頃は、割合とすんなり相手方に接続できたのだが、最近はかなり待たされることが多くなった。接続できない時は何度やってもだめ。しかし、接続できる時は何度でもすんなり接続できる。これではあまりに不安定だ。
直接IP接続はどうか?
この話は、RustDeskサーバの立ち上げについてなのだが、それ以前に相手側のIPを直接指定して接続できないものかと考えた。というのも、各種マシンはTailscaleのTailnet内にあり、それぞれVPN内の固定IPが割り振られているからだ。
しかし、残念なことに、これをどうやればいいのか全くわからない。それらしいオプションはあるのだが、開いてみると、ポート番号の指定しかないようだ。自分あるいは相手の固定IPをどうやって指定するのかわからない。
この方法は、とりあえず諦めることにした。
追記:やり方がわかった。RustDeskの直接IP接続を参照のこと。
サーバの起動
本題のRustDeskサーバの立ち上げだ。自身のサーバを立ち上げ、そのドメインをを両方のクライアント側に指定することにより、このサーバを介して接続を試みるようになり、Rustdeskのプロジェクトが提供するサーバがいくら混んでいてもすんなり接続できるようだ。実際にやってみたが、迅速に接続してくれて、とりあえず何の問題も無い。
やり方は、RustDeskドキュメント、SELF-HOSTにある。
これは本当に簡単なものである。Docker-composeを使う場合には、ドキュメントにある通り、以下のような具合だ。
ersion: '3'
networks:
rustdesk-net:
external: false
services:
hbbs:
container_name: hbbs
ports:
- 21115:21115
- 21116:21116
- 21116:21116/udp
- 21118:21118
image: rustdesk/rustdesk-server:latest
command: hbbs -r rustdesk.example.com:21117
volumes:
- ./data:/root
networks:
- rustdesk-net
depends_on:
- hbbr
restart: unless-stopped
hbbr:
container_name: hbbr
ports:
- 21117:21117
- 21119:21119
image: rustdesk/rustdesk-server:latest
command: hbbr
volumes:
- ./data:/root
networks:
- rustdesk-net
restart: unless-stopped
特に80, 443番ポートは使っていないので、traefik等のリバースプロキシについて考慮する必要も無い。ポートは、ご覧のように2115から2119番が使われ、上のように記述すれば、Dockerが勝手にオープンしてくれるので、これも気にする必要がない。docker-compose.ymlを書いたら、「docker-compose up -d」すればよい。
気になるところは、「command: hbbs -r rustdesk.example.com:21117」という記述なのだが、とりあえずこれはそのままにしておいた。
クライアント側の設定
両方のクライアントに以下のようにドメインを設定すれば良い。サーバにドメインがついていないい場合は、おそらくそのIPアドレスでも良いだろう。とにかく、2115から2119をオープンしているマシンにたどり着けば何でも良いと思われる。
これだけで、これら二つのクライアントはすんなり接続するようになる。なお、上の図には書いてないが、Relayer Serverにも同じものを指定した方が良い(後述)。
hbbs, hbbrサービス
とりあえずこれで日々の生活がスムーズになるが、しかし、Dockerで起動したサービスのhbbs, hbbrとは何か、「ID Server」にのみ設定して、他のサーバはそのままで良いのかなど疑問がある。ここを深堀りしてみる。
https://github.com/rustdesk/rustdesk-serverにある。
- hbbs – RustDesk ID/ランデブーサーバ
- hbbr – RustDeskリレーサーバ
RustDeskのクライアントでは、このユーザ製のサーバを指定する以前にIDが付与されているが、これがランダムな数字なのか、あるいはRustDesk本部サーバから付与されたものなのかはわからない。その一方で、hbbsは「ID/ランデブーサーバ」なのだという。これはIDを付与するという意味ではないかもしれない。クライアントのIDを維持して、その待ち合わせ(ランデブー)を行うという意味だろう。
その一方でRustDeskリレーサーバの意味は明らかで、これは、二つのマシンが直接的には接続できない場合に中継を行う、つまり、通信データが、常にこのサーバを通るということだ。
https://github.com/rustdesk/rustdesk/wiki/FAQの「What does the server do, why do I need it?」に説明されている。
- It is primarily used to help your RustDesk clients to find each other.
- Once this is done, it helps you try and get a direct connection between them.
- If this fails and your client and controlled devices cannot talk directly to each other, the relay part of side the server will be used to handle the connection.
起動したのは、hbbs/hbbrサーバの両方なのだが、クライアントには「ID/ランデブーサーバ」しか指定していない。リレーサーバとしても使いたいならば、「Relay Server」にも同じドメインを記述する必要があるのだろう、おそらくは。当然だが、ID Server, Relay Serverはhbbs, hbbrサーバに対応していると思われるので、同じドメインなりIPなりを記述すれば良いと思われる。
しかし、API ServerとKeyとは何か?
https://rustdesk.com/docs/en/manual/mobile/の「Set ID/Relay Server」に記述があるが、Keyとは、「暗号化のためのあなたの公開鍵(オプション)」なのだそうだ。しかし、これだけではどう使うのかわからない。APIサーバについては何も記述がない。
RustDeskの事情
いろいろ探しているうちに、2022/5のスレッドにたどりついた。where is the web control panel on latest version? #509。
これによれば、以前のRustDeskでは、ウェブコンソールというものがあったそうだ。つまり、RustDeskサーバをインストールすれば、GUIでいろいろと操作できたらしい。しかし、削除されてしまった理由というのは、RustDesk Server Proというビジネスユーザ向けの有料サービスを考えているそうだ。ということで、現在はこのあたりの仕組み、APIやらウェブGUIやらは中途半端になっているようだ。
RustDeskに寄与したい人は、Become a sponsor to RustDeskというページがあるのでお願いしたい。この人はシンガポールの人らしい。
まとめ
ともあれ、とりあえずのところはこうだ。
- RustDeskサーバの構築は簡単
- クライアント側には、それをID Server、Relay Serverとして指定する
ただし、ひとつの懸念点としては、RustDeskサーバには何の認証も無いので、サーバの存在が知られると、誰にでも使われてしまうことである。もちろん、ランデブーサーバ・リレーサーバとして使われるだけで、帯域が消耗するだけなのだが、何かしらのパスワード的なものが欲しいところだ。