How To Install Desktop On Ubuntu Server

How To Install Desktop On Ubuntu Server

Reading time1 min
#Ubuntu#Linux#Server#XFCE#DesktopEnvironment#RemoteAccess

Installing a Minimal Desktop Environment on Ubuntu Server

Most server administrators rely on command-line tools. Occasionally, though, a lightweight graphical interface accelerates specific workflows: visual log inspection, drag-and-drop file movement, or graphical browser-based utilities (for instance, running Chrome for Selenium test hosts on CI nodes). Here’s a streamlined, low-footprint approach to bringing a GUI onto Ubuntu Server—suitable for headless, VM, and VPS environments.


Lightweight GUIs: Context and Choices

Traditional desktop stacks (Ubuntu Desktop, Kubuntu, etc.) install hundreds of additional packages—unnecessary overhead for headless workloads. Key considerations for minimal GUIs:

DesktopRAM (idle)Startup DaemonsSuitable for
XFCE120-180MBLightDMMost hardware
LXDE/LXQt90-120MBLightDMOlder/x86 VPS
MATE150-210MBLightDMGNOME2 fans
GNOME/KDE>400MBGDM/KDMNot advised

XFCE is a reliable midpoint—straightforward resource profile, mature codebase, widely supported.


0. Baseline: Patch Before Install

Out-of-date repositories routinely cause dependency errors. Update/upgrade first:

sudo apt update
sudo apt -y upgrade

If your apt sources are stale or geo-mirrored, latency or mirror corruption can result in timeout errors like:

E: Failed to fetch http://archive.ubuntu.com/ubuntu/... Release.gpg

Switch sources if that’s recurrent.


1. Install the XFCE Stack

For Ubuntu 22.04 LTS (jammy):

sudo apt install -y xfce4 xfce4-goodies
  • xfce4-goodies adds panel plugins (CPU usage, notifications). Remove it if every MB counts.
  • Want to keep things tighter? Use apt install xfce4 --no-install-recommends and cherry-pick only the essentials.

2. Add a Display Manager

LightDM is still the best tradeoff—minimal footprint, simple config.

sudo apt install -y lightdm

Installer prompts to select default display manager if you already have one (rare on servers). If not, select LightDM as follows:

sudo dpkg-reconfigure lightdm

Observed issue: On some VPS images with cloud-init scripts, LightDM may not autostart. Double-check status.

sudo systemctl status lightdm

3. Enable and Start Graphical Session

Immediately start the DM, then enable for future boots:

sudo systemctl start lightdm
sudo systemctl enable lightdm

Reboot:

sudo reboot

Common scenario: Headless VPS, no keyboard/monitor attached. In that case, stop here and proceed to remote access setup before restarting the service. Otherwise, verify console access to confirm the LightDM login screen.


4. Remote Desktop Access Options

Rarely are you physically at the server. Two main approaches:

a) VNC (widespread, many clients)

Install TigerVNC:

sudo apt install -y tigervnc-standalone-server tigervnc-common

Initial VNC password config (per user):

vncpasswd

Systemd unit files for per-user sessions can be created under ~/.config/systemd/user/vncserver@:1.service:

[Unit]
Description=Start TigerVNC server at startup

[Service]
Type=forking
ExecStart=/usr/bin/vncserver :1 -geometry 1920x1080 -depth 24
ExecStop=/usr/bin/vncserver -kill :1

[Install]
WantedBy=default.target

systemctl --user enable --now vncserver@:1.service

Known gotcha: VNC defaults to port 5901 for :1, adjust firewall rules accordingly.

b) xRDP (native Windows RDP support)

sudo apt install -y xrdp
sudo systemctl enable --now xrdp

Tell xRDP to use XFCE by setting user session:

echo "xfce4-session" > ~/.xsession

Restart the service:

sudo systemctl restart xrdp

Security note: RDP is susceptible to brute force; always limit via firewall and consider SSH tunnel for RDP traffic. Ubuntu’s default UFW syntax:

sudo ufw allow 3389/tcp

5. Disk/Memory Footprint and Minimization

Avoid ubuntu-desktop, xubuntu-desktop, or any full meta-packages, unless you prefer to debug out-of-memory issues under KVM. Always review the install size with:

sudo apt install --dry-run xfce4 lightdm

and trim unused components. In tight CI pipelines (Docker or ephemeral VMs), consider using only a window manager like Openbox if possible:

sudo apt install -y openbox

But expect to manually manage sessions.


6. Troubleshooting

  • No GUI after reboot?

    • Check DM logs: /var/log/lightdm/lightdm.log
    • Common trace: “Failed to start session: unknown username or password”
    • If DM fails, try startx to diagnose Xorg errors directly
  • Remote access not working?

    • Verify listening ports: sudo ss -ltpn | grep 3389 or sudo ss -ltpn | grep 5901
    • Double-check local firewall (ufw status), as many cloud images block by default
    • Look for session startup errors under ~/.xsession-errors (especially after an interrupted install)

Non-obvious tip: On some VPS (e.g., Oracle, AWS EC2) with minimal video devices, Xorg may crash unless you install xserver-xorg-video-dummy:

sudo apt install xserver-xorg-video-dummy

Summary Table: Core Steps

StepCommand
Full update/upgradesudo apt update && sudo apt -y upgrade
XFCE + LightDMsudo apt install -y xfce4 xfce4-goodies lightdm
Configure display managersudo dpkg-reconfigure lightdm
Start/enable LightDMsudo systemctl enable --now lightdm
xRDP (if needed)sudo apt install -y xrdp; echo xfce4-session > ~/.xsession; sudo systemctl restart xrdp

Side Note

Some minimal-cloud images break GUI install with missing /etc/default/locale. Create it with:

sudo update-locale LANG=en_US.UTF-8

XFCE on Ubuntu Server won’t suddenly make the CLI obsolete, but for select workflows—remote graphical tools, ad-hoc GUI tasks—it reduces friction and speeds up delivery. Always assess resource headroom before rolling out, especially in production. When in doubt, test the stack inside a disposable VM snapshot.

If you hit installer errors, compare package lists between cloud images—they occasionally lack desktop dependencies by design.