How do I install GUI (graphical desktop) on Amazon EC2 instances running SUSE Linux Enterprise Server 15 (SLES 15)?

4 minute read
Content level: Intermediate
1

Steps to install desktop environment, desktop manager and and Amazon DCV high performance remote display protocol server on SUSE Linux Enterprise Server 15 (SLES 15)

Notice

Your use of DCV is subject to DCV end user license agreement

Supported OS versions

The following version is supported by Amazon DCV server

  • SUSE Linux Enterprise Server 15 with SP5 (x86_64)

64-bit ARM (arm64) architecture is not supported

System Requirements and Prerequisites

  • EC2 instance with 2 GiB or more memory
  • Attached security group allows inbound TCP and UDP port 8443 from your IP
  • More than 3 GB free disk space to install graphical desktop components and DCV server
  • Attached EC2 IAM role with the below policy. Replace region with your instance AWS Region code
{
    "Version": "2012-10-17",
    "Statement": [
       {
           "Effect": "Allow",
           "Action": "s3:GetObject",
           "Resource": "arn:aws:s3:::dcv-license.region/*"
       }
    ]
}

Install desktop environment and desktop manager

Install GNOME desktop and set gdm as the default desktop manager

sudo zypper install -y -t pattern gnome_basic
sudo update-alternatives --set default-displaymanager /usr/lib/X11/displaymanagers/gdm
sudo sed -i "s/DEFAULT_WM=\"\"/DEFAULT_WM=\"gnome\"/" /etc/sysconfig/windowmanager

Install DCV server

Install DCV server, web client and virtual session support, and enable server daemon

cd /tmp
sudo rpm --import https://d1uj6qtbmh3dt5.cloudfront.net/NICE-GPG-KEY
curl -L -O https://d1uj6qtbmh3dt5.cloudfront.net/nice-dcv-sles15-x86_64.tgz
tar -xzf nice-dcv-sles15-x86_64.tgz && cd nice-dcv-*-sles15-x86_64
sudo zypper install -y ./nice-dcv-server-*.rpm
sudo zypper install -y ./nice-dcv-web-viewer-*.rpm
sudo zypper install -y ./nice-xdcv-*.rpm
sudo usermod -a -G video dcv
sudo systemctl enable dcvserver

Configure DCV server

Configure console session, enable session storage and QUIC transport protocol

sudo sed -i "/^\[session-management\/automatic-console-session/a owner=\"ec2-user\"\nstorage-root=\"%home%\"" /etc/dcv/dcv.conf
sudo sed -i "s/^#create-session/create-session/g" /etc/dcv/dcv.conf
sudo sed -i "s/^#enable-quic-frontend=true/enable-quic-frontend=true/g" /etc/dcv/dcv.conf

GPU instance

If you are using a GPU instance, install and configure GPU drivers

Non GPU instance

For other instance types, install and configure XDummy driver

sudo zypper install -y xf86-video-dummy
sudo tee /etc/X11/xorg.conf > /dev/null << EOF
Section "Device"
    Identifier "DummyDevice"
    Driver "dummy"
    Option "UseEDID" "false"
    VideoRam 512000
EndSection

Section "Monitor"
    Identifier "DummyMonitor"
    HorizSync   5.0 - 1000.0
    VertRefresh 5.0 - 200.0
    Option "ReducedBlanking"
EndSection

Section "Screen"
    Identifier "DummyScreen"
    Device "DummyDevice"
    Monitor "DummyMonitor"
    DefaultDepth 24
    SubSection "Display"
        Viewport 0 0
        Depth 24
        Virtual 4096 2160
    EndSubSection
EndSection
EOF

Open firewall ports

Open firewall ports

sudo firewall-offline-cmd --add-port 8443/tcp
sudo firewall-offline-cmd --add-port 8443/udp

Restart X server and DCV server

sudo systemctl isolate multi-user.target && sudo systemctl isolate graphical.target
sudo systemctl stop dcvserver && sudo systemctl start dcvserver

Access graphical desktop environment

Set user password

Specify a strong password for login user

sudo passwd ec2-user

Clients

DCV offers Windows, Linux, macOS and web browser clients.

HTML 5 client for web browser access is at https://<EC2-IP>:8443 (where <EC2-IP> is your EC2 instance IP address). Native clients supports QUIC and can be downloaded from https://www.amazondcv.com/

Login as ec2-user with your configured password

Web browser client

Enter image description here

Install on EC2 launch

To automate install when launching a new EC2 instance, you can use the below user data script.

#!/bin/bash
sudo zypper install -y -t pattern gnome_basic
sudo update-alternatives --set default-displaymanager /usr/lib/X11/displaymanagers/gdm
sudo sed -i "s/DEFAULT_WM=\"\"/DEFAULT_WM=\"gnome\"/" /etc/sysconfig/windowmanager

cd /tmp
sudo rpm --import https://d1uj6qtbmh3dt5.cloudfront.net/NICE-GPG-KEY
curl -L -O https://d1uj6qtbmh3dt5.cloudfront.net/nice-dcv-sles15-x86_64.tgz
tar -xzf nice-dcv-sles15-x86_64.tgz && cd nice-dcv-*-sles15-x86_64
sudo zypper install -y ./nice-dcv-server-*.rpm
sudo zypper install -y ./nice-dcv-web-viewer-*.rpm
sudo zypper install -y ./nice-xdcv-*.rpm
sudo usermod -a -G video dcv
sudo systemctl enable dcvserver

sudo sed -i "/^\[session-management\/automatic-console-session/a owner=\"ec2-user\"\nstorage-root=\"%home%\"" /etc/dcv/dcv.conf
sudo sed -i "s/^#create-session/create-session/g" /etc/dcv/dcv.conf
sudo sed -i "s/^#enable-quic-frontend=true/enable-quic-frontend=true/g" /etc/dcv/dcv.conf

sudo zypper install -y xf86-video-dummy
sudo tee /etc/X11/xorg.conf > /dev/null << EOF
Section "Device"
    Identifier "DummyDevice"
    Driver "dummy"
    Option "UseEDID" "false"
    VideoRam 512000
EndSection

Section "Monitor"
    Identifier "DummyMonitor"
    HorizSync   5.0 - 1000.0
    VertRefresh 5.0 - 200.0
    Option "ReducedBlanking"
EndSection

Section "Screen"
    Identifier "DummyScreen"
    Device "DummyDevice"
    Monitor "DummyMonitor"
    DefaultDepth 24
    SubSection "Display"
        Viewport 0 0
        Depth 24
        Virtual 4096 2160
    EndSubSection
EndSection
EOF

sudo firewall-offline-cmd --add-port 8443/tcp
sudo firewall-offline-cmd --add-port 8443/udp

sudo systemctl isolate multi-user.target && sudo systemctl isolate graphical.target
sudo systemctl stop dcvserver && sudo systemctl start dcvserver

Set ec2-user password after installation is compete

CloudFormation template

To quickly get up and running with DCV for internal testing, you can use CloudFormation template at DCV CloudFormation page and aws-samples - Github

Additional information

Refer to DCV documentation site

AWS
EXPERT
MikeLim
published a month ago206 views