Compute Engine で Linux 向け Chrome リモート デスクトップをセットアップする

Last reviewed 2022-11-16 UTC

このチュートリアルでは、Compute Engine 上の Debian Linux 仮想マシン(VM)インスタンスで Chrome リモート デスクトップ サービスをセットアップする方法について説明します。Windows VM の個別の手順については、Windows 仮想マシンをご覧ください。Chrome リモート デスクトップを使用すると、グラフィカル ユーザー インターフェースを持つアプリケーションにローカルのパソコンまたはモバイル デバイスからリモート アクセスできます。

このチュートリアルに従うと、デフォルトのファイアウォール ルールで Chrome リモート デスクトップ接続が許可されます。追加のファイアウォール規則を構成する必要はありません。SSH アクセスは初期設定でのみ必要です。

VM はインターネットにアクセスできることが必要であり(外部 IP アドレスを使用して、または Cloud NAT を介して)、認証と認可に Google アカウントを使用します。

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

仮想ワークステーションを作成するためのその他のオプションについて、詳しくは仮想ワークステーションの作成をご覧ください。

目標

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

費用

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

  • Compute Engine

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

始める前に

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Compute Engine API.

    Enable the API

  8. このドキュメントに記載されているタスクの完了後、作成したリソースを削除すると、それ以上の請求は発生しません。詳細については、クリーンアップをご覧ください。

  9. Make sure that you have the following role or roles on the project: roles/compute.admin

    Check for the roles

    1. In the Google Cloud console, go to the IAM page.

      Go to IAM
    2. Select the project.
    3. In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.

    4. For all rows that specify or include you, check the Role colunn to see whether the list of roles includes the required roles.

    Grant the roles

    1. In the Google Cloud console, go to the IAM page.

      [IAM] に移動
    2. プロジェクトを選択します。
    3. [ アクセスを許可] をクリックします。
    4. [新しいプリンシパル] フィールドに、ユーザー ID を入力します。 これは通常、Google アカウントのメールアドレスです。

    5. [ロールを選択] リストでロールを選択します。
    6. 追加のロールを付与するには、 [別のロールを追加] をクリックして各ロールを追加します。
    7. [保存] をクリックします。
    8. ローカルマシンで Google Chrome ブラウザを使用している。

Compute Engine インスタンスを作成する

このチュートリアルでは、Debian Linux ブートディスクのあるデフォルトのマシンタイプを使用しています。独自の環境でこれを使用している場合は、マシンタイプ、名前、リージョン、ブートディスク サイズ、その他の設定を調整できます。

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

    [VM インスタンス] に移動

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

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

  4. [Create(作成)] をクリックします。

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

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

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

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

  1. VM インスタンスの SSH ウィンドウで、Debian Linux Chrome リモート デスクトップ リポジトリを apt パッケージ リストに追加し、chrome-remote-desktop パッケージをインストールします。

    curl https://dl.google.com/linux/linux_signing_key.pub \
        | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/chrome-remote-desktop.gpg
    echo "deb [arch=amd64] https://dl.google.com/linux/chrome-remote-desktop/deb stable main" \
        | sudo tee /etc/apt/sources.list.d/chrome-remote-desktop.list
    sudo apt-get update
    sudo DEBIAN_FRONTEND=noninteractive \
        apt-get install --assume-yes chrome-remote-desktop
    

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

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

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

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

低速なネットワーク経由のリモート接続には、グラフィクの要素が最小限でアニメーションが少ない Xfce をおすすめします。

Xfce

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

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

    XScreenSaver が必要なのは、Xfce デフォルト スクリーン ロッカー(Light Locker)が Chrome リモート デスクトップで動作しないためです(Light Locker はロック解除できない空白の画面を表示します)。

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

    sudo bash -c 'echo "exec /etc/X11/Xsession /usr/bin/xfce4-session" > /etc/chrome-remote-desktop-session'
    
  3. インスタンスに接続されたディスプレイが存在しないため、インスタンスでディスプレイ マネージャー サービスを無効にします。

    sudo systemctl disable lightdm.service
    
  4. 省略可: Firefox ブラウザ、LibreOffice オフィス アプリケーション スイート、Evince PDF ビューアなどの Linux デスクトップ アプリケーションのフルスイートをインストールします。

    sudo apt install --assume-yes task-xfce-desktop
    
  5. 必要に応じて、インスタンスに Chrome ブラウザをインストールします。

    curl -L -o google-chrome-stable_current_amd64.deb \
    https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
    sudo apt install --assume-yes --fix-broken ./google-chrome-stable_current_amd64.deb
    

Cinnamon

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

    sudo DEBIAN_FRONTEND=noninteractive \
        apt install --assume-yes cinnamon-core desktop-base dbus-x11
    
  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
    
  4. 必要に応じて、インスタンスに Chrome ブラウザをインストールします。

    curl -L -o google-chrome-stable_current_amd64.deb \
    https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
    sudo apt install --assume-yes --fix-broken ./google-chrome-stable_current_amd64.deb
    

グノーム

  1. VM インスタンスに接続された SSH ウィンドウで、Firefox ブラウザ、LibreOffice オフィス アプリケーション スイート、Evince PDF ビューアなどの Gnome デスクトップ環境全体をインストールします。

    sudo DEBIAN_FRONTEND=noninteractive \
        apt install --assume-yes  task-gnome-desktop
    
  2. Gnome を使用するように Chrome リモート デスクトップ セッションを設定する

    sudo bash -c 'echo "exec /etc/X11/Xsession /usr/bin/gnome-session" > /etc/chrome-remote-desktop-session'
    
  3. インスタンスで Gnome ディスプレイ マネージャー サービスを無効にします。これは、Chrome リモート デスクトップ サービスと競合するためです。

    sudo systemctl disable gdm3.service
    sudo reboot
    

    このコマンドは VM を再起動します。

  4. 続行する前に、SSH 経由で再接続します。

  5. 必要に応じて、インスタンスに Chrome ブラウザをインストールします。

    curl -L -o google-chrome-stable_current_amd64.deb \
    https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
    sudo apt install --assume-yes --fix-broken ./google-chrome-stable_current_amd64.deb
    

Gnome クラシック

  1. VM インスタンスに接続された SSH ウィンドウで、Firefox ブラウザ、LibreOffice オフィス アプリケーション スイート、Evince PDF ビューアなどの Gnome デスクトップ環境全体をインストールします。

    sudo DEBIAN_FRONTEND=noninteractive \
        apt install --assume-yes  task-gnome-desktop
    

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

  2. Gnome クラシック デスクトップを使用するように Chrome リモート デスクトップ セッションを設定します。

    sudo bash -c 'echo "exec /etc/X11/Xsession /usr/bin/gnome-session-classic" > /etc/chrome-remote-desktop-session'
    
  3. インスタンスで Gnome ディスプレイ マネージャー サービスを無効にします。これは、Chrome リモート デスクトップ サービスと競合するためです。

    sudo systemctl disable gdm3.service
    sudo reboot
    

    このコマンドは VM を再起動します。

  4. 続行する前に、SSH 経由で再接続します。

  5. 必要に応じて、インスタンスに Chrome ブラウザをインストールします。

    curl -L -o google-chrome-stable_current_amd64.deb \
    https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
    sudo apt install --assume-yes --fix-broken ./google-chrome-stable_current_amd64.deb
    

KDE Plasma

  1. VM インスタンスに接続された SSH ウィンドウで、KDE Plasma デスクトップ環境全体をインストールします。この環境には Firefox ブラウザ、LibreOffice オフィス アプリケーション スイート、Evince PDF ビューアが含まれています。

    sudo DEBIAN_FRONTEND=noninteractive \
        apt install --assume-yes  task-kde-desktop
    

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

  2. KDE Plasma を使用するように Chrome リモート デスクトップ セッションを設定する

    sudo bash -c 'echo "exec /etc/X11/Xsession /usr/bin/startplasma-x11" > /etc/chrome-remote-desktop-session'
    
  3. 必要に応じて、インスタンスに Chrome ブラウザをインストールします。

    curl -L -o google-chrome-stable_current_amd64.deb \
    https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
    sudo apt install --assume-yes --fix-broken ./google-chrome-stable_current_amd64.deb
    

Chrome リモート デスクトップ サービスを構成して起動する

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

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

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

  2. [SSH] ボタンをクリックしてインスタンスに接続します。

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

    https://remotedesktop.google.com/headless

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

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

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

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

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

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

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

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

    No net_fetcherFailed to read などのエラーが表示されることがあります。これらのエラーは無視します。

  9. 次のコマンドを使用して、サービスが実行されていることを確認します。

    sudo systemctl status chrome-remote-desktop@$USER
    

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

    chrome-remote-desktop.service - LSB: Chrome Remote Desktop service
        Loaded: loaded (/lib/systemd/system/chrome-remote-desktop@USER.service; enabled; vendor preset: enabled)
        Active: active (running) since DATE_TIME; ELAPSED_TIME
    

VM インスタンスに接続する

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

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

  2. [パソコンにアクセス] をクリックします。

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

    新しい VM インスタンス crdhost が [リモート デバイス] リストに表示されます。

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

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

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

  6. プロンプトが表示されたら、常にリモート デスクトップ アプリケーションにクリップボードの読み取りを許可し、ローカル アプリケーションとリモート アプリケーションの間でコピーして貼り付けできるようにします。

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

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

リモート デスクトップ エクスペリエンスを向上させる

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

リモート デスクトップ Chrome アプリのインストール

リモート デスクトップ Chrome アプリでは、個別のウィンドウが開き、通常は Chrome がインターセプトするキーボード ショートカットをリモート システムで使用できます。

このアプリがインストールされていない場合は、次の操作を行います。

  1. マウスをウィンドウの端に移動すると表示されるボタン を使用して、[セッション オプション] パネルを開きます。
  2. [アプリをインストール] セクションで [開始] をクリックします。
  3. [許可する] をクリックします。

リモート デスクトップ セッションが、専用のアプリケーション ウィンドウで再度開かれます。

リモート デスクトップ セッションを Chrome のタブからアプリのウィンドウに移動するには、URL バーの [アプリケーションで開く] アイコンをクリックします。

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

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

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

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

    Cinnamon でのデスクトップ設定

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

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

ユーザーのパスワードを設定する

Compute Engine によって作成されたユーザー アカウントにはパスワードがありません。しかし、一部のデスクトップ環境では、スクリーンセーバーのロックを解除し、管理アクションを承認するためにパスワードが 1 つ必要です。したがって、ユーザーのパスワードを設定することが重要です。

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

    sudo passwd $(whoami)
    

スクリーンセーバーとロック画面を無効にする

リモート パソコンからデスクトップにアクセスしているので、通常はスクリーンセーバーやスクリーン ロッカーを使用する必要はないため、これらを無効にします。

Xfce

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

Cinnamon

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

グノーム

  1. デスクトップで、[Activities] をクリックして「Settings」と入力します。
  2. [設定] アプリケーションを選択します。
  3. [設定] アプリケーションで、[プライバシー] > [画面のロック] を選択します。
  4. [Automatic Screen Lock] を無効にして、ダイアログを閉じます。
  5. [Devices] > [Keyboard] を選択します。
  6. キーボード ショートカットのリストで、[System] セクションに移動し、[Lock Screen] をクリックします。
  7. Backspace キーを押してショートカットを無効にし、[Set] をクリックします。
  8. [Power] を選択し、[Blank Screen] を [なし] に設定します。

Gnome クラシック

  1. デスクトップで、[アプリケーション] > [System Tools] > [設定] を選択します。
  2. [設定] アプリケーションで、[プライバシー] > [画面のロック] を選択します。
  3. [Automatic Screen Lock] を無効にして、ダイアログを閉じます。
  4. [Devices] > [Keyboard] を選択します。
  5. キーボード ショートカットのリストで、[System] セクションに移動し、[Lock Screen] をクリックします。
  6. Backspace キーを押してショートカットを無効にし、[Set] をクリックします。
  7. [Power] を選択し、[Blank Screen] を [なし] に設定します。

KDE Plasma

  1. デスクトップで KDE メニューボタンをクリックし、「Screen Locking」と入力します。
  2. [Screen Locking] アプリケーションを選択します。
  3. [Configure Screen Locking] アプリケーションで、[Lock Screen Automatically after] を無効にし、 ボタンをクリックしてキーボード ショートカットをクリアします。
  4. [OK] をクリックします。

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

超高解像度モニタを使用している場合は、デフォルトの最大リモート デスクトップ サイズ 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@$USER
    

高度な動画コーデックを有効にする

AV1 コーデックを高画質(色)とともに使用すると、画像の画質が向上するとともに、単一色情報(テキストなど)をより適切にエンコードできます。

  1. マウスをウィンドウの端に移動すると表示されるボタン を使用して、[セッションのオプション] パネルを開きます。
  2. [動画コーデック] フィールドで [AV1] を選択します。
  3. [高画質(色)] フィールドが有効になっていることを確認します。

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

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

Xfce

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

Cinnamon

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

グノーム

echo "exec /etc/X11/Xsession /usr/bin/gnome-session" > ~/.chrome-remote-desktop-session

Gnome クラシック

echo "exec /etc/X11/Xsession /usr/bin/gnome-session-classic" > ~/.chrome-remote-desktop-session

KDE Plasma

echo "exec /etc/X11/Xsession /usr/bin/startplasma-x11" > ~/.chrome-remote-desktop-session

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

sudo systemctl restart chrome-remote-desktop@$USER

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

インストール プロセスを自動化する

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

このチュートリアルでは、Debian Linux ブートディスクのあるデフォルトのマシンタイプを使用しています。独自の環境でこれを使用している場合は、マシンタイプ、名前、リージョン、ブートディスク サイズ、その他の設定を調整できます。

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

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

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

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

  4. [詳細オプション] セクションまでスクロールして展開します。

  5. [管理] セクションを開きます。

  6. 次のシェル スクリプトをコピーし、[自動化] > [起動スクリプト] フィールドに貼り付けます。

    #!/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 dbus-x11"
    
      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-get install --assume-yes $PACKAGES $EXTRA_PACKAGES
    
      systemctl disable lightdm.service
    }
    
    function download_and_install { # args URL FILENAME
      if [[ -e "$2" ]] ; then
         echo "cannot download $1 to $2 - file exists"
         return 1;
      fi
      curl -L -o "$2" "$1" && \
        apt-get install --assume-yes --fix-broken "$2" && \
        rm "$2"
    }
    
    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 tasksel wget"
    
    apt-get update
    
    if ! is_installed chrome-remote-desktop; then
        if [[ ! -e /etc/apt/sources.list.d/chrome-remote-desktop.list ]]; then
            echo "deb [arch=amd64] https://dl.google.com/linux/chrome-remote-desktop/deb stable main" \
                | tee -a /etc/apt/sources.list.d/chrome-remote-desktop.list
        fi
        apt-get update
        DEBIAN_FRONTEND=noninteractive \
            apt-get install --assume-yes chrome-remote-desktop
    fi
    
    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 リモート デスクトップ Debian パッケージ リポジトリを追加します。
      • Chrome リモート デスクトップ パッケージと依存関係をインストールします。
    • Xfce または Cinnamon デスクトップ環境をインストールします(スクリプト設定に応じて異なります)。
    • 完全なデスクトップ環境のオプションが有効である場合は、必要なパッケージをインストールします。
    • Google Chrome ブラウザ オプションが有効で、インストールされていない場合:
      • Google Chrome パッケージをダウンロードします。
      • Google Chrome とその依存パッケージをインストールします。
  7. [作成] をクリックします。

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

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

    sudo 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 インスタンスを作成するときに起動スクリプトを指定する方法はいくつかあります。

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

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

トラブルシューティング

このセクションでは、このガイドのトラブルシューティングに関するアドバイスを紹介します。

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

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

sudo systemctl status chrome-remote-desktop@$USER

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

chrome-remote-desktop.service - LSB: Chrome Remote Desktop service
    Loaded: loaded (/lib/systemd/system/chrome-remote-desktop@USER.service; enabled; vendor preset: enabled)
    Active: active (running) since DATE_TIME; ELAPSED_TIME

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

sudo systemctl restart chrome-remote-desktop@$USER

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

Chrome リモート デスクトップは、ログ情報をシステム ジャーナルに書き込みます。

journalctl SYSLOG_IDENTIFIER=chrome-remote-desktop     # All logs
journalctl SYSLOG_IDENTIFIER=chrome-remote-desktop -e  # Most recent logs
journalctl SYSLOG_IDENTIFIER=chrome-remote-desktop -b  # Logs since reboot

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

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

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

グローバル セッション構成ファイルとユーザー固有のセッション構成ファイルを確認する

グローバル /etc/chrome-remote-desktop-session 構成ファイルとユーザー固有の ~/.chrome-remote-desktop-session 構成ファイルの内容を確認し、指定したデスクトップ環境がインストールされていることを確認します。

クリーンアップ

このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。

プロジェクトの削除

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

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

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Compute Engine インスタンスの削除

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

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

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

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

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

    VM インスタンスの削除

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

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

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

  1. ローカル パソコンから Chrome リモート デスクトップのリモート デバイスリストのウェブサイトにアクセスします。
  2. インスタンス名 crdhost の横にある をクリックします。
  3. [OK] をクリックして、リモート デバイス接続を無効にする必要があります。

次のステップ