Corredor

ウェブ、プログラミングの勉強メモ。

Ubuntu に Chrome リモートデスクトップをインストールして使えるようにするまで

ThinkPad X250 にインストールした Ubuntu 18.04 に、Chrome リモートデスクトップをインストールして、Windows・MacOS・iPhone の Chrome リモートデスクトップから接続できるように設定した記録。

ただインストールするだけではすんなりいかないのでメモメモ。

ホストをインストールする

まずは以下の公式ページより、リモートデスクトップのホストをインストールする。

ココは迷うところないはず。

セッションファイルを作成する

コレだけだと、他の端末からはマシンがオンラインになっているのが見えても、アクセスができない状態になる。

そこで、以下のコマンドを実行して空ファイルを作成する。

$ touch ~/.chrome-remote-desktop-session

こうするとうまくリモート接続できるようになる。

起動スクリプトを編集する

ココまででリモート接続はできるようになるのだが、ホストとは異なるセッションで画面が起動してしまうので、ホスト側と同じ画面を共有できない。そこで、以下の記事を参考に、Chrome リモートデスクトップの設定ファイルを直で書き換えていく。

# リモートデスクトップを停止する
$ sudo systemctl stop chrome-remote-desktop.service

# これから編集するファイルのバックアップを取っておく
$ sudo cp /opt/google/chrome-remote-desktop/chrome-remote-desktop /opt/google/chrome-remote-desktop/chrome-remote-desktop.org

# 環境変数を確認する : おそらく「:0」と表示されるはず
$ echo $DISPLAY

# 起動スクリプトを編集する
$ sudo vi /opt/google/chrome-remote-desktop/chrome-remote-desktop

起動スクリプトの元の行と、編集点を書いていく。

FIRST_X_DISPLAY_NUMBER = 20

# ↓ 次のように変更する

FIRST_X_DISPLAY_NUMBER = 0  # 先ほどメモした値
  @staticmethod
  def get_unused_display_number():
    """Return a candidate display number for which there is currently no
    X Server lock file"""
    display = FIRST_X_DISPLAY_NUMBER
    while os.path.exists(X_LOCK_FILE_TEMPLATE % display):
      display += 1
    return display

# ↓ 次のように while 部分をコメントアウトする

  @staticmethod
  def get_unused_display_number():
    """Return a candidate display number for which there is currently no
    X Server lock file"""
    display = FIRST_X_DISPLAY_NUMBER
    #while os.path.exists(X_LOCK_FILE_TEMPLATE % display):
    #  display += 1
    return display
  def launch_session(self, x_args):
    self._init_child_env()
    self._setup_pulseaudio()
    self._setup_gnubby()
    self._launch_x_server(x_args)
    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)
    #self._launch_x_session()
    display = self.get_unused_display_number()
    self.child_env["DISPLAY"] = ":%d" % display

ココまで編集が終わったら保存する。

Chrome リモートデスクトップを再起動しよう。

$ sudo systemctl restart chrome-remote-desktop.service

コレでこの Ubuntu マシンにリモート接続すると、ホスト側とクライアント側とで同じデスクトップを参照できているだろう。

設定ファイル直で直すんかーい、と思うが、とりあえずコレでできたのでよきよき。