Launch Ubuntu Desktop on Google Cloud

This tutorial shows you how to set up a Ubuntu Desktop on Google Cloud. If you need a graphic interface to your virtual desktop on the cloud, this tutorial will teach you how to set up a desktop environment just like what you can get on your own computer.

We need four steps to set up a machine:

  1. Create a Ubuntu VM instance on Google Cloud.
  2. Install and configure the Chrome Remote Desktop service on the VM instance.
  3. Set up a Ubuntu desktop environment in the VM instance
  4. Connect from your Chrome web browser to the desktop environment on the VM instance.

Before you begin:

  • Make sure that you selected a Google Cloud project for running this VM instance.
  • If you don’t have the Google Chrome browser installed, you can install it from the Google Chrome homepage.

Create a Ubuntu VM instance

In this step, we will launch a VM instance in Google Cloud. The default e2-medium (2 vCPU, 4 GB memory) machine type works fine for the tutorial purpose. If you want a more performant machine, there are a variety of choices in Google Cloud.

1. In the Google Cloud Console, go to the VM Instances page:

2. Click CREATE INSTANCE.

3. Set the instance name to ubuntu-desktop .

4. Select a region and zone you want to run your instance.

5. Scroll down to the Boot disk options and click Change

6. In the Boot disk pop-up window, in Operating System, select Ubuntu Pro from the drop-down; in Version, select Ubuntu-Pro-20.04-LTS; keep the rest options as default value and click SELECT. Ubuntu Pro ensures the latest security update, which will be useful when we install the productivity applications.

7. Click CREATE to create the instance.

8. In less than one minute, you will be able to see your Ubuntu instance in RUNNING status. You can click the SSH button in the instance list to connect to your new instance.

If you prefer to start a VM through Google Cloud Shell, you can use this command to achieve the same result:

gcloud compute instances create ubuntu-desktop --zone=us-central1-a --machine-type=e2-medium --image=projects/ubuntu-os-pro-cloud/global/images/ubuntu-pro-2004-focal-v20210720

Install Chrome Remote Desktop on the VM instance

The next step is to install Chrome Remote Desktop on the VM instance.

1. In the SSH window connected to your VM instance, update the package manager data and install wget and tasksel. Wget is a free software package for retrieving files using HTTP, HTTPS, FTP and FTPS, the most widely used Internet protocols. Tasksel is a Debian/Ubuntu tool that installs multiple related packages as a co-ordinated “task” onto your system.

sudo apt update
sudo apt install --assume-yes wget tasksel

2. Download and install the Debian Linux Chrome Remote Desktop installation package:

wget https://dl.google.com/linux/direct/chrome-remote-desktop_current_amd64.deb
sudo apt-get install --assume-yes ./chrome-remote-desktop_current_amd64.deb

Set up a Ubuntu desktop environment in the VM instance

Now we need to install a desktop environment and window manager for Chrome Remote Desktop to communicate with the VM instance.

1. In the SSH window connected to your VM instance, install Ubuntu desktop environment:

sudo tasksel install ubuntu-desktop

2. Set your Chrome Remote Desktop session to use Gnome, which is the default desktop environment for Ubuntu:

sudo bash -c ‘echo “exec /etc/X11/Xsession /usr/bin/gnome-session” > /etc/chrome-remote-desktop-session’

3. You just need to reboot your Ubuntu VM instance.

sudo reboot

You will lose connection to your VM instance immediately. Don’t panic, close the SSH window, wait a few seconds and you will SSH into it through the Cloud Console again in the next step.

Configure the Chrome Remote Desktop service and Connect to your Ubuntu Desktop

To start the remote desktop connection, you need to have an authorization key for your Google account.

1. In the Cloud Console, click the SSH button to connect to your instance.

2. On your local computer, using the Chrome browser, go to the Chrome Remote Desktop command line setup page:
https://remotedesktop.google.com/headless

3. On the Set up another computer page, click Begin.

4. Click Next. You already installed the Chrome Remote Desktop on the remote computer in STEP2(Install and configure the Chrome Remote Desktop service on the VM instance)

5. Click Authorize.

6. Now you get the command to set up and start the Chrome Remote Desktop service on your VM instance. Copy the command for Debian Linux.

7. Paste the command to the SSH window that connects to your VM instance. Run the command.

8. Enter a 6 digit PIN when prompted. This PIN will be used when you log into the VM instance from your Chrome. If you see errors like Fail to read or No net_fetcher, ignore them.

9. Verify that the Chrome Remote Desktop service is running by using the following command.

sudo systemctl status chrome-remote-desktop@$USER

If the service is running, you will see the status is active:

    Active: active (running) since DATE_TIME; ELAPSED_TIME

Now you are ready to connect to the VM instance through Chrome Remote Desktop web application.

10. On your local computer, go to the Chrome Remote Desktop web site. You will find your Ubuntu Desktop shows up in the portal.

11. Click the remote desktop instance. In this case, it is ubuntu-desktop. And you will be prompted to input the 6 digit PIN you set in step-8.

12. You will see this page, just cancel it.

Ubuntu uses a software component called Polkit, which is an application authorization framework that captures actions performed by a user to check if the user is authorized to perform certain actions. When you connect to Ubuntu remotely using RDP / Windows Remote Desktop, you will see the above errors because the Polkit Policy file cannot be accessed without superuser authentication.

If you don’t want to see it again, you can create a new configuration file in /etc/polkit-1/localauthority.conf.d/02-allow-colord.conf in your VM instance. In your SSH window, input the following:

$ sudo nano /etc/polkit-1/localauthority.conf.d/02-allow-colord.conf

Paste the following:

polkit.addRule(function(action, subject) {
 if ((action.id == "org.freedesktop.color-manager.create-device" ||
 action.id == "org.freedesktop.color-manager.create-profile" ||
 action.id == "org.freedesktop.color-manager.delete-device" ||
 action.id == "org.freedesktop.color-manager.delete-profile" ||
 action.id == "org.freedesktop.color-manager.modify-device" ||
 action.id == "org.freedesktop.color-manager.modify-profile") &&
 subject.isInGroup("{users}")) {
 return polkit.Result.YES;
 }
});

Save (press CTRL+X, and Y) and exit (press Enter).

This tells Polkit to continue without requiring the RDP authentication.

Now, Ubuntu desktop is fully functional in your Chrome web browser:

Install an app on your Ubuntu Desktop

Let’s install Visual Studio Code from the Snap Store. In your terminal, run:

$ sudo snap install –classic code # or code-insiders

Visual Studio Code will be ready for you in less than a minute.

Clean up

To avoid incurring charges to your Google Cloud account for the resources used by this tutorial, you may delete the VM instance.

In the Cloud Console, DELETE this VM instance:

Then on your Google Chrome Remote Desktop, DELETE ubuntu-desktop from your Remote Devices list.

Click OK.

That’s it. Enjoy your Ubuntu Desktop anywhere anytime!

Leave a Comment

Your email address will not be published. Required fields are marked *