Ubuntu 22.04 を Chrome Remote Desktop したい

サーバは Ubuntu で作っているけど、それを別の PC から Remote Desktop で画面見ながら操作したいってこと、時々ありますよね。特に画像関係のことをやっている時なんか。

Ubuntu 22.04 はデフォルトで Remote Desktop が出来て、しかも設定アプリ（gnome-control-center）から設定できちゃう。xrdp のインストールやら設定やら面倒臭いものは一切無くなった。
しかしこれには問題があって、ローカルネットワーク内だったら簡単に接続できるけれども、インターネットを介して Remote Desktop をしたい場合には対応できない。

こんな時の強い味方が、[Chrome Remote Desktop](https://remotedesktop.google.com/access/)。Google アカウントさえあれば、インターネットを介そうがなんだろうが Remote Desktop 出来ちゃう。

# ホスト側（Ubuntu）の設定

## 1. Chrome のインストール

```
$ wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
$ sudo dpkg -i google-chrome-stable_current_amd64.dev
$ sudo apt update
$ sudo apt --fix-broken install
```

まぁこれで大概はインストールできるはず。 apt repository も登録されるので、バージョンアップは `sudo apt upgrade google-chrome-stable` で出来る。

## 2. Chrome Remote Desktop のインストール

```
$ wget https://dl.google.com/linux/direct/chrome-remote-desktop_current.amd4.deb
$ sudo apt install xvfb xserver-xorg-video-dummy xbase-clients python3-packaging python3-psutil
$ sudo dpkg -i chrome-remote-desktop_current_amd64.deb
$ sudo apt update
```

Chrome Remote Desktop の deb ファイルは、最初に依存関係を入れておかないと怒られる。そして apt repository も登録されるので、バージョンアップは `sudo apt upgrade chrome-remote-desktop` で出来る。

## 3. sshd のインストール

```
$ sudo apt install openssh-server
```

これだけ。真面目に設定するなら、`/etc/ssh/sshd_config` を変更したりするんだけど、割愛。ちゃんと動いているか確認するには `sudo systemctl status sshd` で。

## 4. ssh の公開鍵・秘密鍵の設定

ssh でこの Ubuntu に入るので、鍵の設定が必要です。調べればすぐに分かるので、割愛。

## 5. 最後に、ちょっとした設定

```
$ mkdir ~/.config/chrome-remote-desktop
```

これをやらないと Chrome Remote Desktop がオンになりません的なエラーが出る。

# クライアント側（Ubuntu にアクセスする方）の設定

## 1. ssh の設定

鍵とか。割愛。

## 2. 設定コマンドの入手

Webブラウザで Chrome Remode Desktop の [ssh 経由でセットアップする](https://remotedesktop.google.com/headless) にアクセスする。

Chrome ベースならば（例えば [Brave Browser](https://brave.com/ja/)）大丈夫だと思うけど、敬意を表して Chrome を使うことにしよう。

ここでやることは、以下。

1. 「別のパソコンを設定」画面
    * 「開始」ボタンをクリック
1. ダウンロードしろという説明が出てくるが、もうしたので無視
    * 「次へ」ボタンをクリック
1. 警告っぽい文章が出てくるが、普通に無視
    * 「承認」ボタンをクリック
1. Windows, Debian という OS 毎の設定コマンドが出てくる
    * 今回は Ubuntu すなわち Debian の設定なので、Debian の所に表示されているコマンドをコピー

## 3. ssh 経由で設定

1. Ubuntu に ssh で侵入
1. コピーしたコマンドをペーストして実行
1. `Enter a PIN of at least six digits :` と聞かれる
    * PIN は Windows にありがちな、要するにパスワードみたいなもんなので、（正しい意味で）適当な６桁以上の数字を入力する
1. `Enter the same PIN again :` と聞かれる
    * 先程と同じ数字を入力する
1. `Created symlink` 云々と出てきたら終了
    * ssh はもう抜けて良い

# いよいよ Remote Desktop

1. Webブラウザで「[リモートアクセス](https://remotedesktop.google.com/access)」に行く
    * Chrome Remote Desktop の Chrome 格納機能を入れるかと聞かれることもあるが、Bookmark とかして普通にアクセスすれば良いので、要らない
    * なんやかんやが成功していれば、Ubuntu のホスト名が「リモートのデバイス」として見えているはず
1. Remote Desktop したいデバイスをクリック
1. PIN の入力画面になるので、PIN を入力
1. セッションを選択する画面になる
    * XSession, Ubuntu, Ubuntu on Xorg のどれかを聞かれる
    * Ubuntu on Xorg を選択する
1. Remote Desktop できる！

# 注意事項・トラブルシューティング

## Remote Desktop するなら、Ubuntu の方でログインしちゃ絶対ダメ

恥ずかしいことに、これに結構長い時間取られた・・・

後からログインした方の画面は先にログインした方の画面に取られちゃって何も見えなくなる。先に Ubuntu でログインて、後から Remote Desktop しようとしても、既に画面はローカルのディスプレイに取られてるから何も見えない。先に Remote Desktop して、後から Ubuntu でログインしようとしても、既に画面は Remote に飛ばされちゃってるから何も見えない。

Remote Desktop とローカルのログインは、必ずどちらか！

## Remote Desktop をやめるなら、Ubuntu のログアウト

Remote Desktop のメニューの中に「切断」ってあるけど、これは一時的に切るだけで、ログインはしたままになっている。なので放っておいて後からローカルでログインしようってなると、上の状態になってしまう。ずっと Remote Desktop し続けるならいいんだけどね。それも気持ち悪い。

なんで、Remote Desktop をやめる時はちゃんとログアウトしなければならない。

## それでも画面が真っ暗

Ubuntu 22.04 のデフォルトの display server は Wayland なのだが、これは X11 を使ってないので Remote Desktop とすこぶる相性が悪いそうだ。

なので Wayland を off にすると良いらしい。
（これがセッションで Ubuntu on Xorg を選んだ理由）

参考：[askubuntu | How do I use X instead of wayland on 22.04?](https://askubuntu.com/questions/1410256/how-do-i-use-x-instead-of-wayland-on-22-04/1413490#1413490)

ちなみに Ubuntu に GPU が刺さっていると、Wayland は自動的に off になっている。（Wayland は GPU とも相性が悪い）

## 「カラープロファイルを作成するには認証が必要です」的なポップアップが出て、パスワードを入力しなければならず、非常に鬱陶しい

Polkit というサービスに怒られているようです。
なので、Polkit を黙らせれば良い。
説明は煩雑なので、参考サイトを紹介。

* [Python Tech | xrdpでリモートデスクトップ接続した際に出る認証のダイアログを消す方法](https://tech.nkhn37.net/ubuntu-xrdp-remove-dialog/)
* [tk2345 | Ubuntu 20.04 LTSでリモートデスクトップを使用する方法](https://zenn.dev/tk2345/articles/8ea0f2f1904a14)

Polkit が version 0.106 になったら設定方法が変わるらしいけど・・・

## それでもおかしい

chrome-remote-desktop のスクリプトを変更しちゃう手もあるようです。
試してませんけど・・・

* [karaage0703 | Linux(Ubuntu)のリモートデスクトップ設定（Google Chrome リモートデスクトップ/xrdp）](https://zenn.dev/karaage0703/articles/cfde5e6a4f43c3)
* [reddit | Ubuntu 22.04 and Chrome Remote Desktop Trouble](https://www.reddit.com/r/Ubuntu/comments/wrp4dr/ubuntu_2204_and_chrome_remote_desktop_trouble/)

## 最初の画面の解像度がめちゃ高いので、全部小さ過ぎて見えない

例えば MacBook のディスプレイ解像度はすごい高いので、もの凄いことになる。
なので、上の reddit の記事のほんの一部分だけを流用する。

* `/opt/google/chrome-remote-desktop/chrome-remote-desktop` の `DEFAULT_SIZES` の値を変更する
    * 例えば `DEFAULT_SIZES = "1280x720"` とか
* Ubuntu 再起動
* Chrome Remote Desktop する

# 以上！