KamoCRM

Xrdp was told its session backend was itself, so nothing ever rendered

FixKlusterServices
Shipped
September 24, 2026 at 4:12 AM UTC
Author
Kamo
Commit
1dba600

Opening a computer gave a black screen that never became a desktop. The cause is one unanchored sed in this file: sed -i 's/^port=.*/port=3389/' /etc/xrdp/xrdp.ini It was meant to set the listener. xrdp.ini has FIVE port= lines and only the first is a listener; the rest are the backend each session type connects to. [Xorg] ships `port=-1`, meaning "sesman allocates the display and xrdp reaches it over the local socket". Rewritten to 3389 next to its `ip=127.0.0.1`, it tells xrdp that its session backend is the listener — itself. Every connection then dials 3389, reads its own protocol back as garbage, and dies on the first packet: [ERROR] libxrdp_force_read: header read error [ERROR] [ITU-T X.224] Connection Sequence: CR-TPDU (Connection Request) failed Confirmed against the distribution's own file: [Xorg] port=-1 there, port=3389 in the image. EVERY SYMPTOM POINTED SOMEWHERE ELSE. guacd logs "RDP server closed/refused connection: Manually logged off", which reads as the guest hanging up on purpose. xrdp-sesman.log records no session at all, so there is no authentication failure to find. /home/<member>/ has no .xsession-errors and no .xorgxrdp log, because nothing ever got as far as starting a session — which also makes every desktop, Xwrapper and polkit theory unfalsifiable by inspection, since none of them was ever reached. The sed is now anchored to the first match, and the build FAILS if [Xorg] has lost port=-1. Without that check this is invisible until somebody opens a computer, which is the whole problem with it.

All changes

Like what you see shipping?

All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.

Start Free ForeverView Pricing