Compute Engine での Chrome リモート デスクトップのセットアップ

このチュートリアルでは、Compute Engine 上の Debian Linux 仮想マシン(VM)インスタンスで Chrome リモート デスクトップ サービスをセットアップする方法について説明します。Chrome リモート デスクトップを使用すると、ローカル パソコンまたはモバイル デバイスからグラフィック ユーザー インターフェースを使用してアプリケーションにリモート アクセスできます。このアプローチでは、ファイアウォール ポートを開く必要はありません。認証と承認には Google アカウントを使用します。

このチュートリアルでは、Linux コマンドラインと Debian パッケージのインストールに精通していることを前提とします。

目標

  • Chrome リモート デスクトップを実行するヘッドレス Compute Engine VM インスタンスを作成します。
  • VM インスタンスに Chrome リモート デスクトップ サービスをインストールして構成します。
  • VM インスタンスで X Window System デスクトップ環境をセットアップします。
  • ローカル パソコンに Chrome リモート デスクトップ クライアントをインストールして構成します。
  • ローカル パソコンから VM インスタンス上のデスクトップ環境に接続します。

費用

このチュートリアルでは、Google Cloud の課金対象となる以下のコンポーネントを使用します。

  • Compute Engine

料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを作成できます。

始める前に

  1. Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。

  2. Cloud Console のプロジェクト セレクタページで、Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタのページに移動

  3. Google Cloud プロジェクトに対して課金が有効になっていることを確認します。 プロジェクトに対して課金が有効になっていることを確認する方法を学習する

このチュートリアルでは、ローカル パソコンで Google Chrome ブラウザを使用する必要があります。まだインストールしていない場合は、Google Chrome ホームページからインストールできます。

Compute Engine インスタンスの作成

このチュートリアルでは、デフォルト マシンである 1 vCPU(n1-standard-1)と Debian Linux ブートディスクのデフォルト設定を変更する必要はありません。

  1. Cloud Console で、[VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

  2. [作成] をクリックします。

  3. インスタンス名を crdhost に設定します。

  4. 必要に応じて、近くのリージョンとゾーンを選択します。

  5. [作成] をクリックします。

    新しいインスタンスが作成されるまで少し時間がかかります。

  6. インスタンスが作成されたら、インスタンス リストの SSH ボタンをクリックして新しいインスタンスに接続します。

    VM インスタンスへの SSH 接続の作成

VM インスタンスへの Chrome リモート デスクトップのインストール

次のステップでは、VM インスタンスに Chrome リモート デスクトップをインストールします。

  1. VM インスタンスに接続されている SSH ウィンドウで、Debian Linux Chrome リモート デスクトップ インストール パッケージをダウンロードします。

    wget https://dl.google.com/linux/direct/chrome-remote-desktop_current_amd64.deb
    
  2. パッケージ マネージャーのデータを更新します。

    sudo apt update
    
  3. パッケージとその依存関係をインストールします。

    sudo dpkg --install chrome-remote-desktop_current_amd64.deb
    sudo apt install --assume-yes --fix-broken
    

X Windows System デスクトップ環境のインストール

Chrome リモート デスクトップで使用する X Window System デスクトップ環境とウィンドウ マネージャーをインストールする必要があります。よく使用されるオプションは次のとおりです。

  • Xfce。 低速ネットワーク経由のリモート接続に適したシンプルな軽量デスクトップ環境です。
  • Cinnamon。 これは、デスクトップ PC ユーザーにとってなじみのあるフル機能の従来型デスクトップ環境です。ただし、グラフィック要素が多用されるため、スムーズな稼働には高速ネットワークが必要です。

他のデスクトップ環境を使用することもできますが、Chrome リモート デスクトップは 3D グラフィックス アクセラレーションをサポートしていません。3D グラフィックス アクセラレーションを使用するデスクトップ環境を選択した場合は、その機能を無効にする必要があります。そうしないと、リモート デスクトップ サービスが開始されません。

Xfce

  1. VM インスタンスに接続された SSH ウィンドウで、Xfce デスクトップ環境と基本的なデスクトップ コンポーネントをインストールします。

    sudo DEBIAN_FRONTEND=noninteractive \
        apt install --assume-yes xfce4 desktop-base
    

    DEBIAN_FRONTEND=noninteractive パラメータは、VM インスタンスに直接接続されるキーボードのレイアウトを構成するためのプロンプトを抑制します。

  2. デフォルトで Xfce を使用するように Chrome リモート デスクトップを構成します。

    sudo bash -c 'echo "exec /etc/X11/Xsession /usr/bin/xfce4-session" > /etc/chrome-remote-desktop-session'
    
  3. Xfce のデフォルト スクリーン ロッカーは、Chrome リモート デスクトップでは機能しない Light Locker です(スクリーン ロッカーには空白の画面が表示され、ロック解除できません)。そのため、代替手段として XScreenSaver をインストールします。

    sudo apt install --assume-yes xscreensaver
    
  4. 必要に応じて、Firefox ブラウザ、LibreOffice オフィス アプリケーション スイート、Evince PDF ビューアなどの Linux デスクトップ アプリケーションのフルスイートをインストールします。

    sudo apt install --assume-yes task-xfce-desktop
    

Cinnamon

  1. VM インスタンスに接続された SSH ウィンドウで、Cinnamon デスクトップ環境と基本的なデスクトップ コンポーネントをインストールします。

    sudo DEBIAN_FRONTEND=noninteractive \
        apt install --assume-yes cinnamon-core desktop-base
    

    DEBIAN_FRONTEND=noninteractive パラメータは、VM インスタンスに直接接続されるキーボードのレイアウトを構成するためのプロンプトを抑制します。

  2. Chrome リモート デスクトップ セッションを 2D モード(3D グラフィックス アクセラレーションを使用しない)で Cinnamon をデフォルトで使用するように設定します。

    sudo bash -c 'echo "exec /etc/X11/Xsession /usr/bin/cinnamon-session-cinnamon2d" > /etc/chrome-remote-desktop-session'
    
  3. 必要に応じて、Firefox ブラウザ、LibreOffice オフィス アプリケーション スイート、Evince PDF ビューアなどの Linux デスクトップ アプリケーションのフルスイートをインストールします。

    sudo apt install --assume-yes task-cinnamon-desktop
    

どのデスクトップ環境をインストールしたかに関係なく、次の手順に従ってインストール プロセスを完了します。

  1. インスタンス上のディスプレイ マネージャー サービスを無効にします。インスタンスに接続されたディスプレイが存在しないため、ディスプレイ マネージャー サービスは開始しません。

    sudo systemctl disable lightdm.service
    
  2. 必要に応じて、インスタンスに Chrome ブラウザをインストールします。

    wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
    
    sudo dpkg --install google-chrome-stable_current_amd64.deb
    sudo apt install --assume-yes --fix-broken
    

Chrome リモート デスクトップ サービスの構成と開始

リモート デスクトップ サーバーを開始するには、それへの接続に使用する Google アカウントの承認キーが必要です。

  1. ローカル パソコンで、Chrome ブラウザを使用して、Chrome リモート デスクトップのコマンドライン設定ページに移動します。

    https://remotedesktop.google.com/headless

  2. まだログインしていない場合は、Google アカウントでログインします。これは、リモート アクセスの承認に使用されるアカウントです。

  3. [別のパソコンを設定] ページで、[開始] をクリックします。

  4. Chrome リモート デスクトップのダウンロードとインストールを実行するページで、[次へ] をクリックします。

  5. [承認] をクリックします。

    Chrome リモート デスクトップにアカウントへのアクセスを許可する必要があります。承認すると、次のような Debian Linux のコマンドラインが表示されます。

    DISPLAY= /opt/google/chrome-remote-desktop/start-host \
        --code="4/xxxxxxxxxxxxxxxxxxxxxxxx" \
        --redirect-url="https://remotedesktop.google.com/_/oauthredirect" \
        --name=
    

    このコマンドを使用して、VM インスタンス上で Chrome リモート デスクトップ サービスをセットアップして開始し、それを承認コードを使用して Google アカウントにリンクします。

  6. インスタンスに接続された SSH ウィンドウにコマンドをコピーしてから、コマンドを実行します。

  7. コンピュータの名前の入力を求められたら、インスタンス名(crdhost)を入力します。

  8. プロンプトが表示されたら、6 桁の PIN を入力してください。この番号は、後で接続するときの新たな承認に使用されます。

VM インスタンスへの接続

Chrome リモート デスクトップ ウェブ アプリケーションを使用して VM インスタンスに接続できます。

  1. ローカル PC から Chrome リモート デスクトップのウェブサイトにアクセスします。

  2. [リモート アクセス] をクリックします。

  3. まだ Google にログインしていない場合は、Chrome リモート デスクトップ サービスの設定で使用した Google アカウントでログインします。

    新しい VM インスタンスが [リモート デバイス] リストに表示されます。接続可能なリモート デバイスのリスト

  4. リモート デスクトップ インスタンスの名前をクリックします。

  5. メッセージが表示されたら、前に作成した PIN を入力し、矢印ボタンをクリックして接続します。

    これで、リモート Compute Engine インスタンス上のデスクトップ環境に接続しました。

Xfce デスクトップをインストールした場合は、初めて接続したときに、デスクトップ パネルを設定するように求められます。[Use Default Config] をクリックすると、上部に標準タスクバー、下部にクイック起動パネルが表示されます。

タスクバーとクイック起動パネルが表示された xfce デスクトップ

リモート デスクトップ エクスペリエンスの向上

このセクションでは、リモート デスクトップ エクスペリエンスを向上させるために設定を変更する手順について説明します。

Cinnamon でアニメーションやエフェクトを無効にする

Cinnamon デスクトップでは、フェードイン、フェードアウトする半透明のウィンドウやメニューなどのいくつかのグラフィック機能とアニメーションが使用されます。これらのアニメーションはリモート接続を介してレンダリングするのに時間がかかるため、ユーザー インターフェースが遅くなったように感じることがあります。

これらのエフェクトを無効にするには:

  1. Cinnamon デスクトップで、[Menu] > [Preferences] > [Effects] の順に選択します。

    Cinnamon でのデスクトップ設定

  2. それぞれのエフェクトを無効にします。

    Cinnamon でのアニメーション エフェクトの無効化

スクリーンセーバー、ロック画面、パスワードを無効にする

リモート パソコンからデスクトップにアクセスしているので、通常はスクリーン セーバーやスクリーン ロッカーを使用する必要はありません。

Xfce

  1. [Applications] メニューで、[Settings] > [Screensaver] を選択します。
  2. [Mode] を [Disable Screen Saver] に設定します。

    Xfce でのスクリーンセーバーの無効化

Cinnamon

  1. デスクトップで、[Menu] > [Preferences] > [Screensaver] の順に選択します。
  2. [Settings] タブで、[Delay] を [Never] に設定し、2 つのロック設定を無効にします。

    Cinnamon のエフェクト設定ダイアログ

Compute Engine によって作成されたユーザー アカウントにはパスワードがなく、ほとんどの画面ロック アプリケーションはパスワードのないユーザーの画面をロック解除できません。ただし、スクリーンセーバーが無効になっていても、[Applications] メニューから画面をロックすることはできます。

リモート デスクトップからロックアウトされないようにするには、ユーザーのパスワードを設定します。

  1. 初めてインスタンスを設定したときに行ったように、SSH を使用してインスタンスに接続します。
  2. ユーザーのパスワードを作成します。

    sudo passwd $(whoami)
    

    このパスワードは画面をロック解除するためにのみ必要です。

デスクトップの解像度を上げる

超高解像度モニタを使用している場合は、デフォルトの最大リモート デスクトップ サイズ 1600 x 1200 では小さすぎる可能性があります。その場合は、モニタの解像度に上げることができます。

  1. SSH を使用してインスタンスに接続します。
  2. モニタの解像度を含めるように CHROME_REMOTE_DESKTOP_DEFAULT_DESKTOP_SIZES 環境変数を設定します。

    echo "export CHROME_REMOTE_DESKTOP_DEFAULT_DESKTOP_SIZES=1600x1200,3840x2560" \
        >> ~/.profile
    
  3. サービスを再起動します。

    sudo systemctl restart chrome-remote-desktop
    

別のデスクトップ環境を選択する

前のセクションでは、/etc/chrome-remote-desktop-session ファイルにデフォルトのデスクトップ環境を設定していました。ホーム ディレクトリの .chrome-remote-desktop-session 構成ファイルで別のデスクトップ環境(インストールされている場合)を指定することもできます。

Xfce

echo "exec /usr/bin/xfce4-session" > ~/.chrome-remote-desktop-session

Cinnamon

echo "exec /usr/bin/cinnamon-session-cinnamon2d" > ~/.chrome-remote-desktop-session

この変更を行った後、サービスを再起動して変更を有効にします。

sudo systemctl restart chrome-remote-desktop

前述のとおり、Chrome リモート デスクトップは 3D グラフィックス アクセラレーションに対応していません。したがって、これらの機能を使用するデスクトップ環境では、3D グラフィックスを無効にする必要があります。そうしないと、セッションが開始されません。

インストール プロセスの自動化

Chrome リモート デスクトップで複数のパソコンをセットアップする必要がある場合は、手動インストールの手順が繰り返されることがあります。カスタム起動スクリプトを使用して、このプロセスを自動化できます。手順は次のとおりです。

  1. Cloud Console で、[VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

  2. [インスタンスを作成] をクリックします。

  3. インスタンス名を crdhost-autoinstall に設定します。

  4. 必要に応じて、近くのリージョンとゾーンを選択します。

  5. [管理、セキュリティ、ディスク、ネットワーク、単一テナンシー] セクションを展開します。

  6. 次のシェル スクリプトをコピーし、Automation/Startup Script テキストボックスに貼り付けます。

    #!/bin/bash -x
    #
    # Startup script to install Chrome remote desktop and a desktop environment.
    #
    # See environmental variables at then end of the script for configuration
    #
    
    function install_desktop_env {
      PACKAGES="desktop-base xscreensaver"
    
      if [[ "$INSTALL_XFCE" != "yes" && "$INSTALL_CINNAMON" != "yes" ]] ; then
        # neither XFCE nor cinnamon specified; install both
        INSTALL_XFCE=yes
        INSTALL_CINNAMON=yes
      fi
    
      if [[ "$INSTALL_XFCE" = "yes" ]] ; then
        PACKAGES="$PACKAGES xfce4"
        echo "exec xfce4-session" > /etc/chrome-remote-desktop-session
        [[ "$INSTALL_FULL_DESKTOP" = "yes" ]] && \
          PACKAGES="$PACKAGES task-xfce-desktop"
      fi
    
      if [[ "$INSTALL_CINNAMON" = "yes" ]] ; then
        PACKAGES="$PACKAGES cinnamon-core"
        echo "exec cinnamon-session-cinnamon2d" > /etc/chrome-remote-desktop-session
        [[ "$INSTALL_FULL_DESKTOP" = "yes" ]] && \
          PACKAGES="$PACKAGES task-cinnamon-desktop"
      fi
    
      DEBIAN_FRONTEND=noninteractive \
        apt install --assume-yes $PACKAGES $EXTRA_PACKAGES
    
      systemctl disable lightdm.service
    }
    
    function download_and_install { # args URL FILENAME
      curl -L -o "$2" "$1"
      dpkg --install "$2"
      apt install --assume-yes --fix-broken
    }
    
    function is_installed {  # args PACKAGE_NAME
      dpkg-query --list "$1" | grep -q "^ii" 2>/dev/null
      return $?
    }
    
    # Configure the following environmental variables as required:
    INSTALL_XFCE=yes
    INSTALL_CINNAMON=yes
    INSTALL_CHROME=yes
    INSTALL_FULL_DESKTOP=yes
    
    # Any additional packages that should be installed on startup can be added here
    EXTRA_PACKAGES="less bzip2 zip unzip"
    
    ! is_installed chrome-remote-desktop && \
      download_and_install \
        https://dl.google.com/linux/direct/chrome-remote-desktop_current_amd64.deb \
        /tmp/chrome-remote-desktop_current_amd64.deb
    
    install_desktop_env
    
    [[ "$INSTALL_CHROME" = "yes" ]] && \
      ! is_installed google-chrome-stable && \
      download_and_install \
        https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb \
        /tmp/google-chrome-stable_current_amd64.deb
    
    echo "Chrome remote desktop installation completed"
    

    このスクリプトは、マシンが再起動するたびに次のタスクを実行します。

    • リモート デスクトップ パッケージがインストールされていない場合:
      • Chrome リモート デスクトップ パッケージをダウンロードしてインストールします。
      • 依存関係パッケージをインストールします。
    • Xfce または Cinnamon デスクトップ環境をインストールします(スクリプト設定に応じて異なります)。
    • 完全なデスクトップ環境のオプションが有効である場合は、必要なパッケージをインストールします。
    • Chrome ブラウザ オプションが有効で、インストールされていない場合:
      • Chrome リモート デスクトップ パッケージをダウンロードしてインストールします。
      • 依存関係パッケージをインストールします。
  7. [作成] をクリックします。

    インスタンスの作成にはしばらく時間がかかります。すべてのオプションを有効にした状態でスクリプトを実行すると、インストールには最大で 10 分かかります。

  8. 進行状況をモニタリングするには、SSH を使用して VM インスタンスに接続し、インスタンスのターミナルで次のコマンドを実行します。

    journalctl -o cat -f _SYSTEMD_UNIT=google-startup-scripts.service
    

    このコマンドは、起動スクリプトからの出力を表示します。スクリプトが終了すると、次のように表示されます。

    INFO startup-script: Chrome remote desktop installation completed
    INFO startup-script: Return code 0.
    INFO Finished running startup scripts.
    

このスクリプトは、必要なパッケージのみをインストールします。以前に説明したとおり、リモート デスクトップ サービスを構成する必要があります。

新しい VM インスタンスを作成するときに起動スクリプトを指定する方法はいくつかあります。

  • Cloud Console に貼り付けます(前述のとおり)。
  • ローカルマシンにファイルとして保存し、gcloud コマンドライン ツールでインスタンスを作成する際に、--metadata-from-file フラグを使用します。
  • Cloud Storage バケットに格納し、コンソールまたは gcloud ツールで、コンソールへの URL をオブジェクトに指定します。

起動スクリプトを構成する別の方法については、Compute Engine ドキュメントの起動スクリプトの実行をご覧ください。

トラブルシューティング

Chrome リモート デスクトップ サービスのステータスを確認する

Chrome リモート デスクトップ サービスが応答しなくなった場合は、SSH を使用してインスタンスに接続し、次のコマンドを実行すれば、そのステータスを確認できます。

sudo systemctl status chrome-remote-desktop

サービスが実行されている場合は、active の状態を含む出力が表示されます。

chrome-remote-desktop.service - LSB: Chrome Remote Desktop service
    Loaded: loaded (/etc/init.d/chrome-remote-desktop; generated; vendor preset: enabled)
    Active: active (exited) since DATE_TIME, ELAPSED_TIME

サービスを再起動するには、SSH ウィンドウで次のコマンドを使用します。

sudo systemctl restart chrome-remote-desktop

ログとエラー情報を入手する

Chrome リモート デスクトップは、名前が次のパターンと一致するファイルにログ情報を書き込みます。

/tmp/chrome_remote_desktop_DATE_TIME_*

これらのログファイルでエラー メッセージを確認できます。

サービスを再度有効にする

クライアント アプリでリモート インスタンスへの接続を誤って無効にした場合は、Chrome リモート デスクトップ サービスの構成と開始の手順に従って、サービスを再構成して再度有効にします。

クリーンアップ

このチュートリアルで使用するリソースについて、Google Cloud Platform アカウントへの課金が発生しないようにする手順は次のとおりです。

プロジェクトの削除

課金をなくす最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。

プロジェクトを削除するには:

  1. Cloud Console で [リソースの管理] ページに移動します。

    [リソースの管理] ページに移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。

Compute Engine インスタンスの削除

プロジェクト全体を削除する代わりに、このチュートリアル用に作成した VM インスタンスを削除することもできます。

  1. Cloud Console で、[VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

  2. 作成したインスタンス名(crdhost)の横にあるチェックボックスをオンにします。

  3. ページ上部にある [削除] ボタンをクリックします。

    VM インスタンスの削除

    インスタンスの削除には少し時間がかかります。

インスタンスに対する Chrome リモート デスクトップの承認を解除する

VM インスタンスに接続する必要がなくなった場合は、インスタンスを無効にして、[リモート デバイス] リストから削除できます。

  1. ローカル PC から Chrome リモート デスクトップのリモート デバイスリスト(ベータ版)のウェブサイトにアクセスします。

  2. インスタンス名の横にある delete をクリックします。

    Chrome でリモート デバイスを無効にする

  3. [OK] をクリックして、リモート デバイス接続を無効にする必要があります。

次のステップ