Jollyの雑記帳

後藤正文になりたいエンジニアの雑記帳

UbuntuにChrome Remote Desktopをインストールする

Windowsマシンを新調したので、これまで使用していたWindowsマシンをUbuntuマシンとして使用することにした。
Webアプリ開発スマホアプリ開発のために使用する予定だが、自宅にいないときでもUbuntuマシンに接続できたら便利だと思い、Chrome Remote DesktopをインストールしてWindowsマシンから接続できるようにした。
Chrome Remote Desktopの設定に苦労したため、備忘録として記録する。

環境

ホスト端末: Ubuntu 20.04 LTS
クライアント端末: Windows 10

手順

手順1: WindowsChrome Remote Desktopをインストールする

https://remotedesktop.google.com/accessにアクセスして、Chromeアプリをインストールする。
クライアント端末の設定はこれだけ。

手順2: UbuntuChrome Remote Desktopをインストールする

https://remotedesktop.google.com/accessにアクセスして、Debianパッケージをインストールする。
記事作成時点のパッケージにはバグがあるらしく、そのままではUbuntuをホスト端末として登録できない。
$ mkdir ~/.config/chrome-remote-desktopとしてconfigフォルダを作成すると、この問題は解決する。

手順3: Ubuntuの自動ログインを有効にする

外出先からUbuntuに接続することを前提としているため、Wake on LANUbuntuを起動後、デスクトップ画面まで自動で遷移できるようにしておくと便利。
なお、後述する手順によりUbuntuWindowsで同一セッションを使用する場合は、自動ログインの有効化は必須(要検証)。
ここでUbuntuを再起動する。

手順4: UbuntuWindowsで同一セッションを使用するよう設定する

手順2まで行えばChrome Remote Desktopは利用可能であるが、WindowsからUbuntuに接続すると新しい仮想デスクトップが生成されてしまう。
これでは自宅で行った作業の続きを外出先で行いたい場合に不便。
Chrome Remote Desktopのソースコードを編集することで、UbuntuWindowsで同一セッションを使用することができる。

手順4.1: Chrome Remote Desktopを停止する

$ /opt/google/chrome-remote-desktop/chrome-remote-desktop --stop

手順4.2: Chrome Remote Desktopのソースコードを編集する

$ sudo gedit /opt/google/chrome-remote-desktop/chrome-remote-desktopとしてソースコードを編集。
まず、

FIRST_X_DISPLAY_NUMBER = 20

FIRST_X_DISPLAY_NUMBER = 0

に修正。
次に、

while os.path.exists(X_LOCK_FILE_TEMPLATE % display):
    display += 1

# while os.path.exists(X_LOCK_FILE_TEMPLATE % display):
    # display += 1

としてコメントアウト
最後に、

def launch_session(self, x_args):
    self._init_child_env()
    self._setup_pulseaudio()
    self._setup_gnubby()
    self._launch_x_server(x_args)
    if not self._launch_pre_session():
        # If there was no pre-session script, launch the session immediately.
        self.launch_x_session()

def launch_session(self, x_args):
    self._init_child_env()
    self._setup_pulseaudio()
    self._setup_gnubby()
    # self._launch_x_server(x_args)
    # if not self._launch_pre_session():
        # If there was no pre-session script, launch the session immediately.
        # self.launch_x_session()
    display = self.get_unused_display_number()
    self.child_env[“DISPLAY”] = “:%d” % display

に修正。

手順4.3: Chrome Remote Desktopを起動する

$ /opt/google/chrome-remote-desktop/chrome-remote-desktop --start
その後Ubuntuをホスト端末として登録する。

まとめ

自宅/外出先を問わずWindowsからUbuntuに接続できるようになった。
Vue.js 3系の参考書を購入したので、早速Ubuntuでお勉強したい。

はてなブログ、難しい…。