SSD Nodes Learn 🎉 VPS ab $5.50/Monat
Anleitungen Matt ConnorVon Matt Connor

Linux-VPS mit grafischem Desktop per RDP nutzen

Installieren Sie XFCE und xrdp auf einem Linux-VPS, sichern Sie RDP per SSH-Tunnel statt Port 3389 und erfahren Sie, wann RustDesk die bessere Wahl ist.

Was ein Remote-Desktop auf einem Linux-VPS tatsächlich bedeutet

Unter der Suche „Remote-Desktop auf einem Linux-VPS“ werden zwei unterschiedliche Produkte zusammengefasst. Wenn Sie das falsche auswählen, verlieren Sie einen Nachmittag. Das erste Produkt ist ein Broker für den Remotezugriff. Ein selbst gehosteter RustDesk-Server ist das typische Beispiel: Er vermittelt eine Sitzung zwischen zwei Rechnern, die Sie bereits besitzen, etwa zwischen Ihrem Laptop und dem PC zu Hause. Auf dem gemieteten Server wird kein Desktop angezeigt. Der Server stellt die beiden Endpunkte einander vor und leitet Pakete weiter, wenn diese einander nicht direkt erreichen können. Das zweite Produkt ist ein echter grafischer Desktop, der auf dem gemieteten Server ausgeführt wird. Die Bildinhalte werden also im Rechenzentrum erzeugt und an Sie übertragen. Dazu gehören xrdp, VNC (virtual network computing) und ein Container-Arbeitsbereich.

Eine Frage unterscheidet die beiden Varianten. Wo befindet sich der Mauszeiger, sobald alles funktioniert? Wenn er sich auf einem Rechner befindet, den Sie bereits besitzen, benötigen Sie einen Broker. Wenn er sich auf dem VPS selbst befindet, benötigen Sie einen Desktop auf dem VPS. Der zweite Fall nimmt im Folgenden den meisten Raum ein, weil er in den meisten Anleitungen ausgelassen wird.

Welche Option passt zu Ihrer Aufgabe

  • RustDesk mit eigenem Relay. Die Sitzung läuft dadurch nicht über einen öffentlichen Rendezvous-Server unbekannter Betreiber, weil Sie das Schlüsselpaar besitzen. Der zu steuernde Rechner wird dadurch nicht geschützt. Er bleibt der PC, auf dem Sie den Client installiert haben, mit dem dort festgelegten Passwort.
  • xrdp über einen SSH-Tunnel oder ein VPN. Dadurch sind Sie vor dem ständigen Scannen von TCP 3389 aus dem gesamten Internet und vor dem Ausprobieren von Passwörtern am RDP-Anmeldefenster geschützt, weil dieser Port nicht mit dem Internet verbunden ist. Ein schwaches Kontopasswort wird dadurch nicht vor Personen geschützt, die bereits Zugriff auf den Tunnel haben.
  • VNC über denselben Tunnel. Damit erhalten Sie eine Desktop-Sitzung, die eine Unterbrechung der Verbindung übersteht. Dabei verwenden Sie ein älteres und einfacheres Protokoll als RDP. VNC selbst schützt nichts. Die gesamte Sicherheitsfunktion übernimmt der Tunnel. VNC allein an einem öffentlichen Port ist daher hier die schlechteste Option.
  • Ein Container-Arbeitsbereich wie Webtop oder Kasm. Damit erhalten Sie einen Browser oder einen vollständigen Desktop in einem Container, den Sie löschen und neu erstellen können. Das schützt Ihren eigentlichen Rechner vor allem, womit dieser Browser in Kontakt kommt. Der Host wird dadurch nicht geschützt. Diese Images laufen mit weitreichenden Berechtigungen und einem passwortlosen sudo im Container. Der Container ist daher keine Grenze, der Sie eine nicht vertrauenswürdige Arbeitslast anvertrauen sollten.

xrdp und XFCE unter Ubuntu 24.04 installieren

Das Image eines VPS-Servers enthält keinen grafischen Desktop. Sie installieren zunächst einen Desktop und anschließend xrdp, den Open-Source-Server für RDP (Remote Desktop Protocol). Dieses Protokoll verwendet auch der Windows-Client. Wählen Sie einen ressourcenschonenden Desktop. XFCE ist dafür die übliche Wahl.

sudo apt update
sudo apt install -y xrdp xorgxrdp xfce4 xfce4-goodies dbus-x11
systemctl is-active xrdp

Ubuntu 24.04 enthält xrdp 0.9.24 und xorgxrdp in der Komponente universe (Stand August 2026). Installieren Sie xorgxrdp ausdrücklich anhand des Paketnamens, obwohl es nur als empfohlenes Paket gilt. Es ist das X-Server-Backend, das xrdp für eine neue Sitzung startet. Ohne dieses Paket nimmt das Anmeldefenster Ihr Kennwort an und zeigt anschließend sofort wieder das Anmeldefenster an.

Legen Sie nun fest, welcher Desktop in der Sitzung gestartet wird. xrdp führt /etc/xrdp/startwm.sh aus. Diese Datei startet ~/.xsession, wenn sie vorhanden ist.

echo "xfce4-session" > ~/.xsession
chmod 644 ~/.xsession

Zum Schluss muss xrdp den TLS-Schlüssel (Transport Layer Security) lesen können, den es den Clients anbietet. Die Datei hat den Modus 640 und gehört zur Gruppe ssl-cert.

ls -l /etc/ssl/private/ssl-cert-snakeoil.key
id xrdp

Die Ausgabe zeigt -rw-r----- 1 root ssl-cert. Wenn id xrdp ssl-cert nicht in der Gruppenliste ausgibt, führen Sie sudo adduser xrdp ssl-cert und anschließend sudo systemctl restart xrdp aus. Wenn Sie diesen Schritt überspringen, kann xrdp den Schlüssel nicht öffnen. /var/log/xrdp.log protokolliert den Fehler mit dem Dateinamen snakeoil in der betreffenden Zeile.

Why you should not open port 3389 to the internet

TCP 3389 is scanned continuously by everything on the internet, and an RDP login box answers politely to every password attempt. Do not open it. Bind xrdp to the loopback address instead, and reach it through a tunnel you already trust.

Edit /etc/xrdp/xrdp.ini and change the listener in the [Globals] section.

[Globals]
port=tcp://.:3389

The shipped file documents that syntax in its own comments: tcp://.:3389 means 127.0.0.1:3389, and tcp://:3389 means every interface. Restart and confirm, because a typo here silently leaves the service on all addresses.

sudo systemctl restart xrdp
ss -tlnp | grep 3389

You want 127.0.0.1:3389. Seeing 0.0.0.0:3389 means xrdp ignored your edit, usually because the line ended up under a different section heading further down the file.

Now open the tunnel from your own machine.

ssh -N -L 3389:127.0.0.1:3389 you@vps.example.com

-N means "open the connection but run no command", so the session exists only to carry the port. Leave that terminal running and point the RDP client at 127.0.0.1:3389. On a Linux client the software is FreeRDP 3, whose binary on Ubuntu 24.04 is named xfreerdp3:

sudo apt install -y freerdp3-x11
xfreerdp3 /v:127.0.0.1:3389 /u:you /dynamic-resolution +clipboard /sound

On Windows use the built-in mstsc and type 127.0.0.1 as the computer. FreeRDP asks you to trust the certificate on the first connect and prints Do you trust the above certificate? (Y/T/N), which is expected with the self-signed snakeoil certificate.

If ssh answers bind [127.0.0.1]:3389: Address already in use, something on your own machine already holds 3389. Move the local end with ssh -N -L 13389:127.0.0.1:3389 you@vps.example.com and connect to 127.0.0.1:13389.

One tunnel per person gets tiring, so for a team the better answer is a private network. Put the box behind a self-hosted WireGuard VPN, give it the tunnel address 10.8.0.1, and set port=tcp://10.8.0.1:3389 so xrdp answers only inside the VPN. Either way, the firewall rule for 3389 should not exist at all. If you are unsure what your current rules allow, start from ufw firewall basics on a VPS and check before you connect, not after.

Wie viel RAM verwendet ein Remote-Desktop auf einem VPS mit 2 GB

Die Wahl der Desktop-Umgebung entscheidet darüber, ob ein Tarif mit 2 GB komfortabel nutzbar oder praktisch unbrauchbar ist. Die folgenden Werte sind gerundete typische Angaben für den Speicherverbrauch direkt nach der Anmeldung unter Ubuntu 24.04. Sie stammen aus veröffentlichten Vergleichen und wurden nicht auf Ihrem System gemessen. Messen Sie den tatsächlichen Verbrauch direkt nach der Verbindung mit free -m.

ChartTypical memory in use after login, Ubuntu 24.04 (published figures)
The data behind this chart
[
  {
    "label": "LXQt",
    "idle_ram_mb": 300
  },
  {
    "label": "XFCE",
    "idle_ram_mb": 400
  },
  {
    "label": "MATE",
    "idle_ram_mb": 500
  },
  {
    "label": "KDE Plasma",
    "idle_ram_mb": 800
  },
  {
    "label": "GNOME",
    "idle_ram_mb": "1,200"
  }
]

Bei diesen 5 Desktop-Umgebungen ist vor allem die Spannweite entscheidend. LXQt liegt bei etwa 300 MB und XFCE bei etwa 400 MB. Beide lassen auf einem System mit 2 GB noch ausreichend Speicher für einen Browser. GNOME benötigt bereits vor dem Öffnen eines einzigen Fensters ungefähr 1,200 MB. Bei 2 GB konkurriert der Browser dadurch mit der Desktop-Umgebung um den verbleibenden Speicher.

Der Browser verursacht den eigentlichen Verbrauch, nicht die Desktop-Shell. Ein moderner Browser benötigt pro aktivem Tab typischerweise zwischen 150 und 400 MB. Ein VPS mit 2 GB und XFCE verkraftet daher einige Tabs und beginnt anschließend mit dem Swapping. Richten Sie Swap ein, damit das System langsamer wird, anstatt Prozesse zu beenden: sudo fallocate -l 2G /swapfile, anschließend sudo chmod 600 /swapfile, sudo mkswap /swapfile und sudo swapon /swapfile. Ergänzen Sie außerdem eine passende Zeile in /etc/fstab, damit die Konfiguration einen Reboot übersteht. Wenn ein Prozess ohne Warnung verschwindet, führen Sie dmesg | grep -i "killed process" aus. Diese Meldung bedeutet, dass der Out-of-Memory-Killer des Kernels den Prozess beendet hat. Meist trifft es den Browser.

Die CPU ist die zweite Begrenzung und wird leichter unterschätzt. Ein VPS verfügt über keine GPU. X verwendet daher über llvmpipe das Software-Rendering, sodass die CPU jedes Pixel berechnet. Das Scrollen durch eine aufwendige Seite und die Wiedergabe von Videos zeigen sich als normale CPU-Last. Die Bildrate sinkt, anstatt dass das System einfriert. Auf dieselbe Grenze stoßen Sie, wenn Sie sich fragen, ob Sie auf einem VPS spielen können: Für 3D-Anwendungen lautet die Antwort nein, und zwar genau aus diesem Grund.

Sound und Zwischenablage in einer xrdp-Sitzung

Ubuntu 24.04 verwendet PipeWire. Die Sound-Umleitung von xrdp wurde jedoch für PulseAudio entwickelt. Bei einer frischen Installation funktioniert daher die Bildübertragung, aber es ist kein Ton zu hören. Ubuntu stellt die erforderliche Bridge als Paket bereit.

sudo apt install -y pipewire-module-xrdp pulseaudio-utils alsa-utils

Melden Sie sich vollständig von der RDP-Sitzung ab und anschließend wieder an. Das Modul wird beim Start der Sitzung geladen. Eine erneute Verbindung reicht nicht aus. Prüfen Sie anschließend innerhalb der Sitzung:

pactl list short sinks
speaker-test -c 2 -t wav -l 1

Sie sollten einen Sink sehen, dessen Name xrdp enthält. Über den Client sollte außerdem der Testton zu hören sein. Wenn kein xrdp-Sink vorhanden ist, wurde das Modul nicht in diese Sitzung geladen. Ihr Client muss ebenfalls Audio anfordern. Dazu dient das /sound-Flag bei xfreerdp3. Im Windows-Client verwenden Sie alternativ die Einstellung „Remote audio“ unter „Local Resources“.

Die Textzwischenablage funktioniert in beide Richtungen, sobald xrdp-chansrv für Ihre Sitzung ausgeführt wird. xrdp startet diesen Prozess für Sie. Prüfen Sie dies mit pgrep -a xrdp-chansrv. Wenn das Kopieren und Einfügen während einer Sitzung nicht mehr funktioniert, wurde dieser Prozess beendet. Eine erneute Verbindung startet ihn neu. Das Kopieren von Dateien statt Text verwendet einen separaten Kanal namens Laufwerksumleitung: /drive:home,/home/you bei xfreerdp3 bindet einen lokalen Ordner in die Remotesitzung ein.

Das polkit-Popup und andere Fehler bei der ersten Anmeldung

Die häufigste Überraschung bei der ersten Anmeldung ist ein Dialog mit dem Text Authentication is required to create a color managed device. Die Ursache ist spezifisch. Der Dienst colord fragt polkit nach einer Berechtigung. polkit gewährt diese Aktion nur einer Sitzung, die es als lokal angemeldet betrachtet, ohne Rückfrage. Eine RDP-Sitzung gilt nicht als lokal angemeldet. Deshalb fordert polkit Sie zur Eingabe eines Passworts auf. Ubuntu 24.04 enthält polkit 124. Diese Version hat die alten local-authority-Dateien .pkla entfernt. Jede Anleitung, die Sie zum Schreiben von /etc/polkit-1/localauthority/50-local.d/45-allow-colord.pkla auffordert, hat unter 24.04 daher keinerlei Wirkung. Schreiben Sie stattdessen eine JavaScript-Regel.

/* /etc/polkit-1/rules.d/45-allow-colord.rules */
polkit.addRule(function(action, subject) {
    if (action.id.indexOf("org.freedesktop.color-manager.") === 0 &&
        subject.isInGroup("sudo")) {
        return polkit.Result.YES;
    }
});

Führen Sie sudo systemctl restart polkit aus und verbinden Sie sich erneut. Zwei weitere Fehler erkennen Sie an ihren Symptomen.

Das Anmeldefeld akzeptiert Ihr Passwort und erscheint sofort wieder. Die Sitzung wurde gestartet und ist anschließend beendet worden. Lesen Sie zuerst /var/log/xrdp-sesman.log und danach ~/.xsession-errors in Ihrem Home-Verzeichnis. Eine fehlende xorgxrdp, eine ~/.xsession mit dem Namen eines nicht installierten Desktops, ein Home-Verzeichnis, in das Sie nicht schreiben können, oder ein voller Datenträger führen alle zu diesem Verhalten.

Sie verbinden sich und sehen einen grauen Bildschirm mit einem X-Cursor. X wurde gestartet, der Desktop jedoch nicht. Das ist erneut ~/.xsession: Führen Sie xfce4-session manuell über SSH aus und lesen Sie die ausgegebene Fehlermeldung.

Aufgaben des selbst gehosteten RustDesk-Servers

RustDesk besteht aus zwei Prozessen. hbbs ist der ID- und Rendezvous-Server, bei dem sich Clients registrieren. hbbr ist das Relay, das die Sitzung überträgt, wenn eine direkte Peer-to-Peer-Verbindung fehlschlägt. Keiner der beiden Prozesse stellt einen Desktop bereit. Beide stammen aus einem Image. Dies ist die Compose-Datei, die das Projekt veröffentlicht, wobei die Relay-Adresse auf Ihren eigenen Hostnamen geändert wurde:

services:
  hbbs:
    container_name: hbbs
    image: rustdesk/rustdesk-server:latest
    command: hbbs -r rustdesk.example.com:21117
    ports:
      - 21115:21115
      - 21116:21116
      - 21116:21116/udp
      - 21118:21118
    volumes:
      - ./data:/root
    restart: unless-stopped
  hbbr:
    container_name: hbbr
    image: rustdesk/rustdesk-server:latest
    command: hbbr
    ports:
      - 21117:21117
      - 21119:21119
    volumes:
      - ./data:/root
    restart: unless-stopped

Starten Sie die Container. Lesen Sie anschließend den öffentlichen Schlüssel aus, den der Server beim ersten Start erzeugt hat:

sudo docker compose up -d
sudo cat ./data/id_ed25519.pub

Jeder Client benötigt Ihren Hostnamen und diesen öffentlichen Schlüssel. Tragen Sie beide im RustDesk-Client unter den Netzwerkeinstellungen ein. Der zugehörige private Schlüssel bleibt in ./data/id_ed25519. Wenn Sie das Datenverzeichnis löschen, erzeugt der Server ein neues Schlüsselpaar. Danach müssen Sie jeden Client mit dem neuen Schlüssel neu konfigurieren. Sichern Sie dieses Verzeichnis.

Die Firewall muss diese Ports direkt erlauben. hbbs verwendet TCP 21115, 21116 und 21118 sowie UDP 21116. hbbr verwendet TCP 21117 und 21119.

sudo ufw allow 21115/tcp
sudo ufw allow 21116/tcp
sudo ufw allow 21116/udp
sudo ufw allow 21117/tcp
sudo ufw allow 21118/tcp
sudo ufw allow 21119/tcp

Warum RustDesk nicht hinter nginx oder Traefik funktioniert

Leser, die TLS bereits für alle Dienste an einem Reverse Proxy terminieren, versuchen diesen Aufbau und scheitern. hbbs und hbbr verwenden eigene binäre Protokolle über TCP und UDP, nicht HTTP. Es gibt keinen Host-Header, anhand dessen das Routing erfolgen kann, und keine HTTP-Anfrage, die geprüft werden kann. Daher gibt es für einen nginx-Block server oder einen Traefik-HTTP-Router nichts, worauf er abgleichen könnte. Der UDP-Listener auf 21116 ist auf keiner Protokollebene eine HTTP-Komponente.

Zwei Dinge funktionieren. nginx kann die TCP-Ports mit einem stream-Block weiterleiten. Das ist eine einfache Weiterleitung auf Layer 4 und im üblichen Sinn kein Reverse Proxy. Auf den Ports 21118 und 21119 laufen die vom RustDesk-Webclient verwendeten WebSockets. Dabei handelt es sich um gewöhnliches HTTP, sodass diese beiden Ports hinter Ihrem Proxy betrieben werden können. Wenn Sie das tun, fügen Sie Firewall-Regeln hinzu, damit nur der Proxy 21118 und 21119 erreichen kann. hbbs vertraut bei WebSocket-Verbindungen auf den X-Real-IP-Header, um die tatsächliche Client-Adresse zu ermitteln.

Ein kurzlebiger Browser in einem Container

Manchmal benötigen Sie nur einen sauberen Browser mit einer unveränderlichen IP-Adresse, der von Ihrem eigenen Rechner getrennt bleibt. Ein Container-Arbeitsbereich erfüllt diese Anforderungen mit deutlich weniger installierter Software. Webtop von LinuxServer ist die schlanke Option:

services:
  webtop:
    image: lscr.io/linuxserver/webtop:latest
    container_name: webtop
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
    volumes:
      - /path/to/data:/config
    ports:
      - 127.0.0.1:3000:3000
      - 127.0.0.1:3001:3001
    shm_size: "1gb"
    restart: unless-stopped

Port 3000 stellt HTTP bereit, Port 3001 stellt HTTPS bereit. Sie erreichen den Desktop in einem Browser-Tab, ohne dass irgendwo ein RDP-Client erforderlich ist. Die Image-Tags decken XFCE, KDE, MATE und i3 auf mehreren Basisdistributionen ab. Die Dokumentation des Projekts weist ausdrücklich auf das Risiko hin: Der Container hat privilegierten Zugriff auf den Host und enthält ein Terminal mit passwortlosem sudo. Deshalb sollte er nicht ungeschützt aus dem Internet erreichbar sein. Aus diesem Grund sind die oben genannten Ports an 127.0.0.1 gebunden und nicht auf allen Adressen veröffentlicht. Greifen Sie über denselben SSH-Tunnel oder dasselbe VPN darauf zu, das Sie für xrdp verwendet haben.

Kasm Workspaces verfolgt dasselbe Konzept in deutlich größerem Umfang. Es bietet eine Webkonsole, Benutzerkonten und Container pro Sitzung, die beim Ende der Sitzung zurückgesetzt werden. Dafür ist mehr Leistung erforderlich, als ein kleiner VPS bereitstellt. Seit August 2026 sind laut Dokumentation mindestens 2 CPU-Kerne, 4 GB Arbeitsspeicher und 50 GB SSD erforderlich. Zusätzlich verwendet jede Benutzersitzung standardmäßig 2 Kerne und 2768 MB. Ein Tarif mit 2 GB kann Kasm Workspaces nicht ausführen. Die Installation besteht aus einem Download und einem Skript:

cd /tmp
curl -O https://kasm-static-content.s3.amazonaws.com/kasm_release_1.17.0.7f020d.tar.gz
tar -xf kasm_release_1.17.0.7f020d.tar.gz
sudo bash kasm_release/install.sh

VNC und wo es weiterhin sinnvoll ist

VNC überträgt Framebuffer-Aktualisierungen statt Zeichenbefehle. Über eine langsame Verbindung wirkt es daher schwerfälliger als RDP. Außerdem verfügt VNC über keinen Audiokanal. In einer Situation ist VNC weiterhin sinnvoll: Sie möchten eine Desktop-Sitzung nach dem Trennen der Verbindung weiterlaufen lassen und beim nächsten Zugriff dieselbe Sitzung wiederherstellen. TigerVNC unterstützt das. vncserver -localhost yes :1 bindet Xvnc an 127.0.0.1 auf TCP 5901 und weist Verbindungen von allen anderen Adressen zurück. Sie tunneln VNC daher genauso wie xrdp mit ssh -N -L 5901:127.0.0.1:5901 you@vps.example.com. Veröffentlichen Sie niemals einen VNC-Port. Die meisten VNC-Server schützen das Passwort nur während des Handshakes, nicht aber die danach übertragenen Daten. Auf einem öffentlichen Port können Dritte daher den Sitzungsinhalt im Netzwerkverkehr mitlesen.

Ist ein VPS als Desktop geeignet?

Als täglich verwendeter Desktop: nein. Die Gründe summieren sich. Es gibt keine GPU, daher rendert die CPU sämtliche Inhalte. Jeder Tastendruck wartet auf einen Netzwerk-Roundtrip. Eine Latenz von 40 ms, die sich in SSH unproblematisch anfühlt, fällt in einem Texteditor auf. Das Video wird zweimal komprimiert: einmal von der Website und anschließend vom RDP-Encoder. Ihre Dateien liegen auf einem Datenträger, den Sie nicht selbst besitzen. Eine intensive Desktop-Nutzung verbraucht außerdem ein monatliches Bandbreitenkontingent, das für einen Webserver bemessen wurde.

Als kurzlebige Maschine ist ein VPS dagegen sehr gut geeignet. Genau diese Eigenschaften sind dafür ausschlaggebend. Die IP-Adresse ist stabil und gehört zu einem Rechenzentrum. Das ist sinnvoll, wenn ein Dienst eine konsistente Adresse sehen muss. Die Maschine lässt sich innerhalb weniger Minuten aus einem Image neu erstellen. Wenn eine Sitzung Schadsoftware oder andere unerwünschte Inhalte aufnimmt, entsteht dadurch kein dauerhafter Schaden. Der VPS ist von Ihrer tatsächlichen Hardware isoliert und läuft weiter, wenn Ihr Laptop geschlossen ist. Durch die stundenweise Abrechnung bleibt ein Wegwerf-Desktop günstig.

Wenn Sie noch klären, wofür die Maschine gedacht ist, sollten Sie die praktische Übersicht über die Einsatzmöglichkeiten eines VPS lesen, bevor Sie darauf einen Desktop installieren. Wenn der Grund für den gewünschten Desktop nur eine einzelne Windows-Anwendung ist, vergleichen Sie zunächst die tatsächlichen Unterschiede zwischen Linux und Windows Server damit. Die Lizenz verändert die Kosten der Lösung.

FAQ

Kann ich einen Remote-Desktop auf einem VPS mit 2 GB betreiben?

Ja, mit einer ressourcenschonenden Desktop-Umgebung. XFCE oder LXQt belegen nach der Anmeldung ungefähr 300 bis 400 MB. Damit bleibt ausreichend Speicher für einen Browser mit einigen Tabs. GNOME oder KDE Plasma lassen auf 2 GB fast keinen Speicher für Anwendungen übrig. Legen Sie eine 2-GB-Swap-Datei an. Dadurch wird der Rechner bei Speicherdruck langsamer, anstatt Prozesse zu beenden. Wenn etwas ohne Meldung verschwindet, prüfen Sie dmesg | grep -i "killed process" auf den Out-of-Memory-Killer des Kernels.

Sollte ich Port 3389 in der Firewall meines VPS öffnen?

Nein. TCP 3389 wird ständig gescannt. Ein aus dem Internet erreichbarer RDP-Anmeldebildschirm lädt zu Passwortangriffen ein. Setzen Sie port=tcp://.:3389 in /etc/xrdp/xrdp.ini, damit xrdp nur auf 127.0.0.1 lauscht. Bestätigen Sie dies mit ss -tlnp | grep 3389 und stellen Sie die Verbindung mit ssh -N -L 3389:127.0.0.1:3389 you@vps.example.com her. Für mehr als ein oder zwei Benutzer binden Sie xrdp statt an Loopback an eine WireGuard-Adresse.

Warum fragt xrdp „Authentication is required to create a color managed device“?

Der Dienst colord fordert bei polkit eine Berechtigung an. polkit erteilt diese Aktion nur einer lokal angemeldeten Sitzung automatisch. Eine RDP-Sitzung gilt nicht als lokal angemeldet. Deshalb wird bei jeder Anmeldung nach einem Passwort gefragt. Unter Ubuntu 24.04 bewirkt die alte .pkla-Lösung nichts, weil polkit 124 die lokalen Authority-Dateien entfernt hat. Erstellen Sie /etc/polkit-1/rules.d/45-allow-colord.rules mit einer JavaScript-Regel. Diese Regel muss polkit.Result.YES für Aktions-IDs zurückgeben, die mit org.freedesktop.color-manager. beginnen. Führen Sie anschließend sudo systemctl restart polkit aus.

Kann ich einen selbst gehosteten RustDesk-Server hinter nginx oder Traefik betreiben?

Nicht den Hauptdienst. hbbs und hbbr verwenden eigene Binärprotokolle und nicht HTTP. Daher gibt es keinen Host-Header, anhand dessen geroutet werden kann. Außerdem kann UDP 21116 einen HTTP-Proxy grundsätzlich nicht durchqueren. Öffnen Sie TCP 21115 bis 21119 sowie UDP 21116 in der Firewall. Lassen Sie die Clients direkt eine Verbindung herstellen. Die Websocket-Ports 21118 und 21119 werden vom Webclient verwendet. Sie arbeiten mit HTTP und können hinter einem Proxy betrieben werden. Wenn Sie das tun, schränken Sie sie in der Firewall so ein, dass nur der Proxy sie erreicht. hbbs vertraut bei diesen Verbindungen auf X-Real-IP.

Warum gibt es in meiner xrdp-Sitzung keinen Ton?

Ubuntu 24.04 verwendet PipeWire. Die Tonumleitung von xrdp wurde jedoch für PulseAudio entwickelt. Daher fehlt die Audioausgabe, bis Sie die Bridge installieren. Führen Sie sudo apt install -y pipewire-module-xrdp aus. Melden Sie sich anschließend vollständig von der Sitzung ab und erneut an. Das Modul wird beim Sitzungsstart geladen. Eine erneute Verbindung lädt es nicht. Prüfen Sie mit pactl list short sinks, ob ein Sink mit xrdp vorhanden ist. Stellen Sie außerdem sicher, dass der Client Audio anfordert. Dafür wird beim xfreerdp3-Flag /sound verwendet. Im Windows-Client heißt die Einstellung „Remote audio“.

#remote-desktop#xrdp#rustdesk#vnc#self-hosting