This guide provides a full step-by-step setup for XRDP on Ubuntu Server, covering:
- Installing Desktop (XFCE / Xubuntu Desktop)
- Installing XRDP
- Force XRDP to listen on IPv4 (0.0.0.0:3389)
- Fixing NAT/Port-Forward return-path issues
- Fixing “Oh no! Something has gone wrong.”
- Avoiding GNOME/Wayland problems
1. Install Desktop Environment (XFCE)
Option A — Xubuntu Desktop (full)
sudo apt update
sudo apt install -y xubuntu-desktop
Option B — Minimal XFCE (recommended)
sudo apt update
sudo apt install -y xfce4 xfce4-goodies
2. Install XRDP
sudo apt install -y xrdp
sudo systemctl enable xrdp
sudo systemctl start xrdp
Add SSL permissions:
sudo adduser xrdp ssl-cert
3. Force XRDP to Listen on IPv4
Edit:
sudo nano /etc/xrdp/xrdp.ini
Change:
port=3389
to:
port=tcp://0.0.0.0:3389
Restart:
sudo systemctl restart xrdp xrdp-sesman
Verify IPv4 listener:
netstat -tulpen | grep 3389
Expect:
tcp 0 0 0.0.0.0:3389 LISTEN
4. Fix NAT Connectivity (DNAT + SNAT)
If your router forwards:
public_ip:9250 → 192.168.100.250:3389
You MUST SNAT return packets:
iptables -t nat -A PREROUTING -p tcp --dport 9250 \
-j DNAT --to-destination 192.168.100.250:3389
iptables -t nat -A POSTROUTING -p tcp -d 192.168.100.250 --dport 3389 \
-j SNAT --to-source 192.168.100.254
This ensures the Ubuntu server replies through the same router.
5. Fix “Oh no! Something has gone wrong.” (GNOME/Wayland)
XRDP cannot start GNOME/Wayland → use XFCE.
Install xorgxrdp:
sudo apt install -y xfce4 xfce4-goodies xorgxrdp
Set XFCE as default:
echo "startxfce4" > ~/.xsession
Modify the start script:
sudo sed -i '/^\. \/etc\/X11\/Xsession/i [ -x \/usr\/bin\/startxfce4 ] \&\& exec \/usr\/bin\/startxfce4' /etc/xrdp/startwm.sh
Restart:
sudo systemctl restart xrdp xrdp-sesman
Now XFCE loads properly.
6. Connect via RDP (Windows)
Run:
mstsc
Connect to:
public_ip:9250
or
192.168.100.250
You should now see a stable XFCE desktop session.
✔ Done!
Your server now supports:
- ✔ Ubuntu Desktop (XFCE)
- ✔ XRDP working on IPv4
- ✔ Full NAT traversal through DNAT+SNAT
- ✔ Stable XFCE without GNOME/Wayland issues