背景
最近は Claude code を使って Vibe coding にハマっている。何日も寝不足が続いた。 個人用の Mac mini で Claude code を使って何も不満はないが、会社の Windows PC だと WSL を介入しないと Claude Code が使えない。開発は Mac 環境のほうが優れているし、個人的に好んでいるし、Mac の Claude Code で作業 → Github にプッシュ (Mac)/プル (Windows) → Windows の WSL で Claude code 作業なんて面倒くさいことはしたくない。
Windows から Mac へ遠隔操作する方法ないかを探したら、OSS の Rustdesk を見つけた。
自宅で Rustdesk server を構築して、Mac と Windows の Rustdesk client の設定方法をここに記し、同じ要望がある人の助けになれば幸いだ。
Rustdesk とは
Rustdesk とは PC やスマホ同士で遠隔操作できる無料ソフトウェアである。無料で使える上、通信が暗号化されてセキュアでもある。
Rustdesk は Server と Client の構成されており、Server は通信の中継管理の役割をし、Client は実際に操作する・されるアプリとして使われる。
つまり、遠隔操作するには Server が必要ってわけだ。
以前は誰でも使える公式の Server があったが、インターネット詐欺で Rustdesk があまりにも多く利用されたため、公開 Server は廃止された。代わりに自前で Server を立てる必要がある。
手順 / ステップ
自宅で Rustdesk を構築するには以下の条件が必要だ。というか私の自宅環境は最初から全て満たしていた。
前提条件
- Ubuntu Server 24.04
- Docker
- ルーターのポートを解放可能
- ドメイン取得済み(もしくはルーターの動的 DNS 使用可能)
- ローカル DNS サーバーがある
Server
まずは、自宅の Linux サーバーに Docker を用いた Rustdesk Server を構築・設定する。 基本的に公式の Docker 構築手順に従えば問題ない。
Docker Compose フォルダとファイルを作成
mkdir rustdesk
cd rustdesk
nano docker-compose.ymlDocker Compose ファイルの中身
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-stoppedDocker Compose の起動
sudo docker compose up -dログの確認
sudo docker logs hbbsログの最初にkey : ****** が出力される。Client で設定するので控えておく。
Router & DNS
ローカル IP アドレスでも接続できるが、外出先や職場からも接続したいので、ポートの解放とドメインの設定を行う。
公式の通りに必要なポートを NAT 転送設定をする。
公式引用
Be sure to open these ports in the firewall:
hbbs: -21114(TCP): used for web console, only available inProversion. -21115(TCP): used for the NAT type test. -21116(TCP/UDP): Please note that21116should be enabled both for TCP and UDP.21116/UDPis used for the ID registration and heartbeat service.21116/TCPis used for TCP hole punching and connection service. -21118(TCP): used to support web clients.hbbr: -21117(TCP): used for the Relay services. -21119(TCP): used to support web clients. If you do not need web client support, the corresponding ports21118,21119can be disabled.
設定例(参考)

ルーターに動的 DNS 機能があれば、設定する。 他の方法として、Claudeflare で動的 DNS 設定する方法もある。ググるなり、AI で検索なりすれば必ず見つかる。

これで外部ネットワークから接続できるようになったが、ローカルネットワークでの接続する際 g は名前解決をしなければいけない。
公式引用
For more details about NAT Loopback, please check the Wikipedia page.
NAT Loopback の詳細については、Wikipedia のページをご覧ください。 When you’re deploying RustDesk server on your home network or any other network environment that is behind a NAT firewall, the RustDesk server and your clients MUST either: A: Use the local ip addresss to access each other OR: B: Have a firewall that supports and has enabled the NAT Loopback.
NAT ファイアウォールの背後にあるホームネットワークまたはその他のネットワーク環境に RustDesk サーバーを展開する場合、RustDesk サーバーとクライアントは次のいずれかの必要があります。A: ローカル IP アドレスを使用して互いにアクセスするか、または:B: NAT Loopback をサポートし、有効にしたファイアウォールがあります。
私は自宅ネットワークの広告ブロック用の Adguard を導入しているので、DNS 書き換えをして解決した。

Client
Mac と Windows に Rustdesk の Client をインストールして、遠隔操作の設定を行う。
ネットワーク設定欄にドメインとポート、先ほどの Server 手順で控えたキーを入力する。

パスワードは毎回生成されるワンタイムだと、不便なので同じパスワードにする。
ただし、2 段階認証を追加してセキュリティ強化する。
2 段階認証はデバイスのパスワード管理アプリ(Apple, Google, Microsoft どれでも OK)で QR コードスキャンすれば設定できる。

これで全ての設定が完了だ。WindowPC からでも快適に Mac の遠隔操作ができ、 いつでも Vibe coding がし放題。
注意点 / トラブルシューティング
Web 検索すると Rustdesk の偽物サイトが上位に表示されることが多く、そこのソフトを使うとウィルスやマルウェアに感染する恐れがあるため、必ず公式の rustdesk.com ドメインからダウンロードすること。
最後に
今知ったのだが、社内ネットワークはポート 2111X がそもそも通信を許さない。つまり、出社しても繋がらないっと…
SSH トンネリングや VPN という回避手段もあるが、弊社のセキュリティ的に NG だから無理っぽ…
クソが…