Skip to content

Instantly share code, notes, and snippets.

@valorad
Created June 5, 2022 13:18
  • Star 16 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
Star You must be signed in to star a gist
Embed
What would you like to do?
Installing xrdp

Ubuntu:

sudo apt install xrdp 
sudo adduser xrdp ssl-cert 
sudo systemctl restart xrdp

Fedora:

Install pacakge

sudo dnf install xrdp xorgxrdp

Configure firewall

sudo firewall-cmd --permanent --add-port=3389/tcp
sudo firewall-cmd --reload

Configure SELinux

sudo chcon --type=bin_t /usr/sbin/xrdp
sudo chcon --type=bin_t /usr/sbin/xrdp-sesman

/etc/X11/Xwrapper.config


# ...

# Allow anybody to start X:
allowed_users=anybody

/etc/xrdp/xrdp.ini

Uncomment the lines for [Xorg]

;
; Session types
;

; Some session types such as Xorg, X11rdp and Xvnc start a display server.
; Startup command-line parameters for the display server are configured
; in sesman.ini. See and configure also sesman.ini.
[Xorg]
name=Xorg
lib=libxup.so
username=ask
password=ask
ip=127.0.0.1
port=-1
code=20

xsession

cp /etc/X11/xinit/xinitrc ~/.xsession

replace the last if -fi section with desktop startup command

Example full working config:

# File: ~/.xsession

#!/usr/bin/sh
# Copyright (C) xxxx

# Mandatorily source xinitrc-common, which is common code shared between the
# Xsession and xinitrc scripts which has been factored out to avoid duplication
. /etc/X11/xinit/xinitrc-common

exec dbus-run-session -- startlxqt

Restart services

sudo systemctl restart xrdp
sudo systemctl restart xrdp-sesman

Archlinux

Install pacakge

yay -S xrdp xorgxrdp-git

/etc/X11/Xwrapper.config


# ...

# Allow anybody to start X:
allowed_users=anybody

/etc/xrdp/sesman.ini

# ...
[Xorg]
param=/usr/lib/Xorg
# Leave the rest of the lines untouched
#...

xinit

cp /etc/X11/xinit/xinitrc ~/.xinitrc

~/.xinitrc


# ...

# !!! Remove several lines from "twm" to "xterm",
# !!! since we don't need them and they throw error if not removed

# Start Desktop Environment
exec dbus-run-session -- startplasma-x11

Enable + Restart services

systemctl enable xrdp
systemctl enable xrdp-sesman
systemctl restart xrdp
systemctl restart xrdp-sesman

More info: https://wiki.archlinux.org/index.php/Xrdp

@rajhlinux
Copy link

rajhlinux commented Jul 8, 2022

Thanks dude! This worked for me on my Arch Linux Plasma KDE.

I rather prefer XORGRDP as the backend for XRDP since the picture quality is vector based and hence it looks like the remote desktop is running on the local host machine.

@eric-riggan
Copy link

Aaaaaand bookmarked. Works great on KDE

@hzxie
Copy link

hzxie commented Dec 6, 2022

Native RDP has been supported by GNOME >= 42 (Ubuntu >= 22.04).
For detailed information, please refer to https://infinitescript.com/2022/12/enable-microsoft-remote-desktop-rdp-on-linux/

@Venomtek
Copy link

Venomtek commented Mar 4, 2023

Native RDP has been supported by GNOME >= 42 (Ubuntu >= 22.04). For detailed information, please refer to https://infinitescript.com/2022/12/enable-microsoft-remote-desktop-rdp-on-linux/

Too bad it requires the user to be logged in already which is basically useless for 99% of the people who use RDP.

@hzxie
Copy link

hzxie commented Mar 4, 2023

@Venomtek
There are some solutions to fix this problem.
For example, https://extensions.gnome.org/extension/4338/allow-locked-remote-desktop/

@Venomtek
Copy link

Venomtek commented Mar 4, 2023

@Venomtek There are some solutions to fix this problem. For example, https://extensions.gnome.org/extension/4338/allow-locked-remote-desktop/

Yeah because gnome is known for not breaking extensions after an update...
I'd rather implement it properly with xrdp and know that it will continue to work tomorrow instead of using some janky extension.
Maybe one day gnome devs will properly implement it in their backend. I won't hold my breath.

Also your "solution" doesn't work with other desktops, yet xrdp I can switch DEs at will.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment