How to set up a graphical interface
You can display the graphical desktop in various ways. In this document, we describe two options: RDP (Remote Display Protocol) and plain X11 forwarding. Other methods include VNC and running a Mir shell through X11 forwarding, as described in A simple GUI shell for a Multipass VM.
Using RDP
The images used by Multipass do not come with a graphical desktop installed. For this reason, you will have to install a desktop environment (here we use ubuntu-desktop
but there are as many other options as flavors of Ubuntu exist) along with the RDP server (we will use xrdp
but there are also other options such as freerdp
).
To do this, first you need to log into a running Multipass instance. Start by listing your instances:
multipass list
Sample output:
Name State IPv4 Image
headbanging-squid Running 10.49.93.209 Ubuntu 22.04 LTS
Next, open a shell into the running instance:
multipass shell headbanging-squid
Once inside the instance, run the following commands to install ubuntu-desktop
and xrdp
:
sudo apt update
sudo apt install ubuntu-desktop xrdp
Now we need a user with a password to log in. One possibility is setting a password for the default ubuntu
user:
sudo passwd ubuntu
You will be asked to enter and re-enter a password.
You are done on the server side!
Quit the Ubuntu shell on the running instance with the exit
command, and take note of the IP address to connect to. You can find the instance’s IP address in the output of multipass list
from the first step above, or you can use the multipass info
command as well.
multipass info headbanging-squid
Sample output:
Name: headbanging-squid
State: Running
Snapshots: 0
IPv4: 10.49.93.209
Release: Ubuntu 22.04 LTS
Image hash: 2e0c90562af1 (Ubuntu 22.04 LTS)
CPU(s): 4
Load: 0.00 0.00 0.00
Disk usage: 1.8GiB out of 5.7GiB
Memory usage: 294.2MiB out of 3.8GiB
Mounts: --
In this example, we will use the IP address 10.49.93.209
to connect to the RDP server on the instance.
If the IP address of the instance is not displayed in the output of multipass list
, you can obtain it directly from the instance, with the command ip addr
.
On Linux, there are applications such as Remmina to visualize the desktop (make sure the package remmina-plugin-rdp
is installed in your host along with remmina
).
To directly launch the client, run the following command:
remmina -c rdp://10.49.93.209
The system will ask for a username (ubuntu
) and the password set above, and then the Ubuntu desktop on the instance will be displayed.
And we are done… a graphical desktop!
Using X11 forwarding
It might be the case that we only want Multipass to launch one application and to see only that window, without having the need for a complete desktop. It turns out that this setup is simpler than the RDP approach, because we do not need the Multipass instance to deploy a full desktop. Instead, we can use X11 to connect the applications in the instance with the graphical capabilities of the host.
Linux runs X by default, so no extra software in the host is needed.
On Linux, we can use authentication in X forwarding to add a bit more security. However, we will forward through SSH to avoid struggling with xauth
. Our user in the host will log in to the Multipass instance through SSH, so that we can pass extra parameters to it.
To make this possible, copy your public key, stored in ~/.ssh/id_rsa.pub
, to the list of authorized keys of the instance, into the file ~/.ssh/authorized_keys
. Remember to replace the instance name used in the example with yours:
multipass exec headbanging-squid -- bash -c "echo `cat ~/.ssh/id_rsa.pub` >> ~/.ssh/authorized_keys"
If the file ~/.ssh/id_rsa.pub
does not exist, it means that you need to create your SSH keys. Use ssh-keygen
to create them and then run the previous command again.
Check the IP address of the instance, using multipass info headbanging-squid
Finally, log in to the instance using X forwarding using the command (replace xx.xx.xx.xx
with the IP address obtained above):
ssh -X ubuntu@xx.xx.xx.xx
Test the setting running a program of your choice on the instance; for example:
sudo apt -y install x11-apps
xlogo &
A small window containing the X logo will show up. Done!
Errors or typos? Topics missing? Hard to read? Let us know or open an issue on GitHub.
Contributors: @andreitoterman , @luisp , @ricab , @gzanchi @dan-roscigno