Table of Contents
- 1 Overview
- 2 Enable the Universe Repository
- 3 Install the MATE Desktop
- 4 Install & Configure xrdp
- 5 Launch MATE via xrdp
- 6 Create and Prepare a Non-Root RDP User
- 7 Open the RDP Port
- 8 Browser Installation
- 9 Troubleshooting Common Errors
- 9.1 Blue Background without Panel or Windows
- 9.2 sesman_data_in: scp_process_msg failed & trans_check_wait_objs failed
- 9.3 Window manager exited quickly (0 secs)
- 9.4 Cannot open display: :10.0 & Authorization Errors
- 9.5 Could not obtain desk path or name
- 9.6 E: Unable to locate package mate-desktop-commons
- 9.7 User Doesn’t Have a Home Directory or Not in sudoers
- 10 Best Practices & Performance Tips
- 11 Conclusion
Overview
Running a full graphical desktop on a server might seem counterintuitive, but with xrdp and a lightweight environment like MATE, you get the best of both worlds: a minimal-footprint Ubuntu 24.04 base plus a familiar GUI accessible via any RDP client. In this guide, we’ll walk through each step—from enabling required repositories to installing browsers—while addressing common pitfalls such as blank blue screens, authorization errors, missing panels, and more. By the end, you’ll have a smooth, responsive RDP session perfect for remote administration or light desktop tasks.
Enable the Universe Repository
Ubuntu’s minimal server install doesn’t always enable universe by default, which houses MATE and many useful packages. Add it now:
sudo apt update
sudo apt install software-properties-common -y
sudo add-apt-repository universe
sudo apt update
This ensures you can install mate-core, xrdp, and community-maintained tools without “package not found” errors.
Install the MATE Desktop
For a minimal footprint, install only core MATE components and D-Bus support:
sudo apt install --no-install-recommends \
mate-core \
mate-desktop-environment-core \
dbus-x11 -y
If you’d like the full Ubuntu MATE experience (with file manager, panel applets, and default applications), simply:
sudo apt install mate-desktop-environment -y
Both options give you mate-session, the command that launches the MATE desktop.
Install & Configure xrdp
xrdp provides an open-source RDP server for Linux. We’ll install it with the Xorg backend to avoid slow VNC fallbacks:
sudo apt install xrdp xorgxrdp -y
sudo adduser xrdp ssl-cert
sudo systemctl enable --now xrdp
- xorgxrdp: Ensures sessions use native Xorg instead of Xvnc (no more painfully slow VNC).
- ssl-cert: Grants xrdp permission to read its TLS certificate, avoiding silent startup failures.
Check status with sudo systemctl status xrdp and sudo journalctl -u xrdp-sesman -n20.
Launch MATE via xrdp
xrdp by default tries a generic Xsession script. You can direct it to launch MATE in two ways:
a) Per-User via ~/.xsession
For each RDP user (e.g. rdpuser), create:
echo "mate-session" > /home/rdpuser/.xsession
chmod +x /home/rdpuser/.xsession
chown rdpuser:rdpuser /home/rdpuser/.xsession
This file tells xrdp exactly which session to start.
b) System-Wide Override in /etc/xrdp/startwm.sh
sudo cp /etc/xrdp/startwm.sh /etc/xrdp/startwm.sh.bak
sudo sed -i '/^test -x \/etc\/X11\/Xsession/,$d' /etc/xrdp/startwm.sh
echo "exec mate-session" | sudo tee -a /etc/xrdp/startwm.sh
sudo systemctl restart xrdp
Now every xrdp connection runs MATE directly, without reliance on user-level scripts.
Create and Prepare a Non-Root RDP User
Never log in over RDP as root—create a dedicated account:
sudo adduser rdpuser
sudo usermod -aG sudo rdpuser
- adduser auto-generates
/home/rdpuser, copies/etc/skel, and sets correct permissions. - Adding to
sudoallows GUI package installs from within the session.
For new accounts, you can seed a default .xsession by placing it in /etc/skel/.xsession.
Open the RDP Port
Allow incoming RDP connections on TCP port 3389:
sudo ufw allow 3389/tcp
sudo ufw reload
Also verify any external or cloud-provider firewall permits TCP/3389 to your server’s IP.
Browser Installation
With MATE and xrdp in place, add your favorite browsers. Always install from inside your MATE session (so your terminal inherits the correct $DISPLAY and $XAUTHORITY).
Firefox (APT or Snap)
sudo apt update
sudo apt install firefox # Deb package (snapd will be auto-installed and disabled)
# or, if you prefer snaps:
sudo snap install firefox
Google Chrome
curl -fsSL https://dl.google.com/linux/linux_signing_key.pub \
| gpg --dearmor | sudo tee /usr/share/keyrings/google-chrome.gpg >/dev/null
echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/google-chrome.gpg] \
http://dl.google.com/linux/chrome/deb/ stable main' \
| sudo tee /etc/apt/sources.list.d/google-chrome.list
sudo apt update
sudo apt install google-chrome-stable -y
Brave Browser
sudo apt install apt-transport-https curl gnupg -y
sudo curl -fsSLo /usr/share/keyrings/brave-browser-archive-keyring.gpg \
https://brave-browser-apt-release.s3.brave.com/brave-browser-archive-keyring.gpg
echo 'deb [signed-by=/usr/share/keyrings/brave-browser-archive-keyring.gpg] \
https://brave-browser-apt-release.s3.brave.com/ stable main' \
| sudo tee /etc/apt/sources.list.d/brave-browser-release.list
sudo apt update
sudo apt install brave-browser -y
Troubleshooting Common Errors
Even a robust setup can hit snags. Here are fixes for the most frequent roadblocks:
Blue Background without Panel or Windows
- Cause: MATE never started (window manager missing).
- Fix: Ensure
mate-sessionappears in~/.xsessionor/etc/xrdp/startwm.sh, thensudo systemctl restart xrdp.
sesman_data_in: scp_process_msg failed & trans_check_wait_objs failed
These internal handshake messages can generally be ignored if a session ultimately launches.
Window manager exited quickly (0 secs)
- Cause: Incorrect startup command or missing packages.
- Fix: Verify you installed
mate-core(or fullmate-desktop-environment) and the startup script callsexec mate-session.
- Cause: Launching GUI apps from a root or SSH shell without proper
$DISPLAY/$XAUTHORITY. - Fix: Always open a mate-terminal in your RDP session (Ctrl+Alt+T) as
rdpuser, then runfirefox &or other commands. No extra exports needed. - Optional: To allow
sudo firefox &, addDefaults env_keep += "DISPLAY XAUTHORITY"viasudo visudo.
Could not obtain desk path or name
- Cause: Missing XDG user-dirs configuration.
- Fix:
sudo apt install xdg-user-dirs -y su - rdpuser xdg-user-dirs-update --force
E: Unable to locate package mate-desktop-commons
- Fix: Use the correct meta-package names:
mate-desktop-environment-coreor fullmate-desktop-environment.
User Doesn’t Have a Home Directory or Not in sudoers
- Home Missing: Check
getent passwd rdpuserto find the home path. Create and seed it with:sudo mkdir -p /home/rdpuser sudo cp -a /etc/skel/. /home/rdpuser sudo chown -R rdpuser:rdpuser /home/rdpuser - Not in sudoers: As root, run:
usermod -aG sudo rdpuserThen reconnect the RDP session.
Best Practices & Performance Tips
- Use Native Xorg Backend: Avoid VNC by installing
xorgxrdp. - Lightweight Panel: If you want the full MATE panel, install:
sudo apt install mate-panel mate-menu mate-terminal mate-control-center mate-power-manager -y - Panel Reset:
dconf reset -f /org/mate/panel/ mate-panel --reset --replace & - Client Settings: Lower color depth to 16-bit, disable background, font smoothing, and window animations in your RDP client for snappier performance.
- Resource Monitoring: Use
top,free -h, andiostatto watch CPU, memory, and I/O during your session.
Conclusion
By following this comprehensive guide, you’ve transformed an Ubuntu 24.04 minimal server into a fully functional, RDP-accessible MATE desktop. You now know how to enable repositories, install just the right MATE components, configure xrdp for a native Xorg session, open firewall ports, add popular browsers, and troubleshoot every major snag—from blue screens and missing panels to authorization and display errors. With these steps in hand, you can confidently deploy a lightweight, secure, and fully featured remote desktop environment.