Learn Remote Desktop - RDP Server on Linux (xrdp & GNOME Remote Desktop)
Episode 15 of 23

Learn Remote Desktop - RDP Server on Linux (xrdp & GNOME Remote Desktop)

This episode brings the RDP protocol to Linux: installing and configuring xrdp with the xrdp.ini file and the Xorg or Xvnc backend, connecting from Windows with mstsc, and comparing xrdp with the Wayland-native GNOME Remote Desktop.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Introduction

Up to episode 14, all our remote access has been VNC-based. Episode 15 introduces the other side: RDP (Remote Desktop Protocol) — Microsoft's protocol that's efficient on low bandwidth and built into every Windows. The good news: Linux can serve RDP very well, so you can connect from Windows mstsc without installing any application.

This episode's focus is xrdp, the open source RDP server for Linux, complete with the xrdp.ini file and session backend choices (Xorg or Xvnc). By the end of the episode, you'll also get to know GNOME Remote Desktop as the Wayland-native alternative and compare it with xrdp.

What Is xrdp

An Open Source RDP Server for Linux

xrdp is an RDP server implementation that lets a Linux machine accept standard RDP connections. The interesting part: you don't need Windows at all. Any RDP client — Windows' built-in mstsc, xfreerdp, or Remmina — can connect directly.

xrdp works by separating two parts: the RDP connection receiver (on port 3389) and the session backend that provides the desktop. The backend determines which desktop environment appears on the client side.

Installation and Service

Installing xrdp on Debian/Ubuntu

Installation on the Debian family is very simple:

Installing xrdp on Debian/Ubuntu
sudo apt update
sudo apt install xrdp

The xrdp package automatically registers a service. Enable and verify:

Enabling the xrdp service
sudo systemctl enable --now xrdp
sudo systemctl status xrdp
ss -tulpn | grep 3389

The systemctl enable --now xrdp command starts the server now and at boot. ss -tulpn | grep 3389 confirms xrdp is listening on the standard RDP port.

Securing the First Session

For a stable session backend, xrdp often needs TigerVNC standalone as the Xvnc backend, or an Xorg session. Install the supporting components at the same time:

Installing the session backend
sudo apt install tigervnc-standalone-server tigervnc-common

Configuring xrdp.ini

Getting to Know the Config File

xrdp's main configuration lives at /etc/xrdp/xrdp.ini. A few of the sections you'll change most often:

Key points in xrdp.ini
[Globals]
port=3389
crypt_level=high
 
[Xorg]
name=Xorg
lib=libxup.so
session_program=/usr/bin/startx
 
[Xvnc]
name=Xvnc
lib=libvnc.so

port=3389 sets the listen port, crypt_level=high sets the encryption level, and each session (Xorg or Xvnc) is its own block. After changing the file, restart the service:

Restart xrdp after configuration
sudo systemctl restart xrdp

Choosing the Backend: Xorg or Xvnc

The backend choice determines how the desktop is created:

  • Xorg backend: uses a lightweight Xorg session, fast and using minimal resources. Suited for most Linux RDP needs.
  • Xvnc backend: stacks a VNC session inside RDP — using TigerVNC to create a virtual display. Useful if there's VNC tooling already in use.
xrdp session backends
RDP client  ->  xrdp (3389)  ->  Xorg / Xvnc  ->  desktop environment

For a complete desktop, make sure the desktop environment session package is installed (for example xfce4 or gnome-session), because xrdp only provides the connection layer, not the desktop.

Connecting from Windows with mstsc

Opening Remote Desktop Connection

Now test from the most common side — Windows. Open the Remote Desktop Connection app (mstsc) and fill in the server address:

Address in mstsc
Computer: 192.168.1.20:3389
User name: arman

Click Connect, then enter the Linux user credentials. If successful, the Linux desktop appears in the Windows window. From Linux, the same connection can be opened with Remmina or xfreerdp:

RDP connection from Linux
xfreerdp /v:192.168.1.20:3389 /u:arman

The xfreerdp /v:192.168.1.20:3389 /u:arman command connects to xrdp from a Linux client. RDP is encrypted by default, so unlike VNC it doesn't require tunneling — although combining it with SSH is still recommended for extra security (episode 14).

Info

If logging in with a GNOME desktop fails or shows a blank screen, try an Xorg session first by selecting the "Xorg" session in the xrdp login dialog, or install the lighter Xfce session. Many xrdp login problems come from an unavailable desktop session.

GNOME Remote Desktop and the Comparison

The Wayland-Native Alternative

Besides xrdp, GNOME provides GNOME Remote Desktop — a built-in GNOME service that natively supports the RDP protocol, especially on Wayland sessions. Unlike xrdp, which is standalone and creates its own session, GNOME Remote Desktop shares the running session. Configuration is done via grdctl, and episode 18 will cover it thoroughly.

xrdp versus GNOME Remote Desktop

The two approaches each have their strengths:

AspectxrdpGNOME Remote Desktop
SessionCreates a new session (Xorg/Xvnc)Shares the running GNOME session
WaylandNot nativeNative Wayland
Multi-userSupports separate sessionsSingle-user
Configurationxrdp.ini filegrdctl / GUI
DependenciesStandaloneRequires GNOME

Rule of thumb: use xrdp if you need a standalone RDP server that can serve many users or run on a non-GNOME desktop. Use GNOME Remote Desktop if you're on GNOME/Wayland and only need to access the running session.

Conclusion

Episode 15 introduced RDP on Linux: installing and enabling xrdp, understanding the xrdp.ini file with its Xorg and Xvnc backends, connecting from Windows mstsc and Linux xfreerdp, and comparing xrdp with the Wayland-native GNOME Remote Desktop.

Key takeaways:

  • xrdp is an open source RDP server for Linux on port 3389.
  • The session backend determines the desktop: Xorg for lightweight, Xvnc for VNC compatibility.
  • xrdp.ini sets the port, encryption, and session definitions.
  • Windows mstsc can connect without installing any additional app.
  • RDP is encrypted by default, but an SSH tunnel still adds security.
  • xrdp is standalone and multi-user; GNOME Remote Desktop is Wayland-native and single-user.

In the next episode, episode 16, we bring together all the security lessons: hardening remote access — strong passwords and non-default ports, SSH-only exposure, fail2ban for VNC/RDP ports, TCP wrappers, and log monitoring and access auditing. See you there!

Learn Remote Desktop - RDP Server on Linux (xrdp & GNOME Remote Desktop) | Learn Remote Desktop