Zdalny pulpit na Linux VPS: konfiguracja xrdp i XFCE
Dowiedz się jak uruchomić graficzny pulpit na serwerze VPS przy użyciu xrdp oraz XFCE. Zabezpiecz połączenie tunelem SSH zamiast otwierać port 3389 i sprawdź rolę RustDesk.
Co w praktyce oznacza zdalny pulpit na VPS z systemem Linux
Dwa różne produkty odpowiadają na zapytanie o "zdalny pulpit na VPS z systemem Linux", a wybór niewłaściwego z nich skutkuje stratą popołudnia. Pierwszym z nich jest broker zdalnego dostępu. Samodzielnie hostowany serwer RustDesk jest typowym przykładem: przekazuje on sesję między dwiema maszynami, które już posiadasz, na przykład laptopem a komputerem domowym. Wynajęty serwer nie generuje żadnego pulpitu. Łączy on obie strony ze sobą i przesyła pakiety, gdy nie mogą one nawiązać bezpośredniego połączenia. Drugim rozwiązaniem jest rzeczywisty graficzny pulpit działający na wynajętym serwerze, dzięki czemu piksele są renderowane w centrum danych i przesyłane strumieniowo do użytkownika. Są to xrdp, VNC (virtual network computing) lub kontenerowe środowisko pracy.
Jedno pytanie pozwala je rozróżnić. Gdy rozwiązanie już działa, gdzie znajduje się wskaźnik myszy? Jeśli na maszynie, którą już posiadasz, potrzebujesz brokera. Jeśli na samym VPS, potrzebujesz pulpitu na VPS. Drugi przypadek zajmuje większość poniższej treści, ponieważ jest to scenariusz, który większość poradników pomija.
Która opcja pasuje do Twojego zadania
- RustDesk z własnym przekaźnikiem (relay). Chroni sesję przed przechodzeniem przez publiczny serwer rendezvous obsługiwany przez nieznane podmioty, ponieważ posiadasz parę kluczy. Nie chroni to jednak kontrolowanej maszyny, która nadal pozostaje tym samym komputerem, na którym zainstalowano klienta, z takimi samymi hasłami, jakie posiada ten komputer.
- xrdp przez tunel SSH lub VPN. Chroni przed ciągłym skanowaniem portu TCP 3389 w Internecie oraz przed próbami odgadnięcia hasła w oknie logowania RDP, ponieważ port ten nigdy nie jest wystawiony na świat. Nie chroni słabego hasła konta przed nikim, kto już uzyskał dostęp do tunelu.
- VNC przez ten sam tunel. Zapewnia sesję pulpitu, która przetrwa rozłączenie, wykorzystując protokół starszy i prostszy niż RDP. Sam w sobie nie zapewnia żadnej ochrony: to tunel wykonuje całą pracę związaną z bezpieczeństwem, dlatego VNC na publicznym porcie jest w tym zestawieniu najgorszą opcją.
- Środowisko kontenerowe, takie jak Webtop lub Kasm. Zapewnia przeglądarkę lub pełny pulpit w kontenerze, który można usunąć i zbudować od nowa, co chroni właściwą maszynę przed wszystkim, z czym styka się ta przeglądarka. Nie chroni to jednak hosta: obrazy te działają z szerokimi uprawnieniami i bezhasłowym
sudowewnątrz, więc kontener nie stanowi bariery, której należy ufać w przypadku wrogich obciążeń.
Instalacja xrdp i XFCE na Ubuntu 24.04
Obraz serwera VPS jest dostarczany bez graficznego środowiska pulpitu. Należy je zainstalować, a następnie dodać xrdp, czyli otwartoźródłowy serwer obsługujący RDP (remote desktop protocol), ten sam protokół, którego używa klient Windows. Należy wybrać lekkie środowisko graficzne; XFCE jest standardowym wyborem.
sudo apt update
sudo apt install -y xrdp xorgxrdp xfce4 xfce4-goodies dbus-x11
systemctl is-active xrdpUbuntu 24.04 zawiera xrdp w wersji 0.9.24 oraz xorgxrdp w repozytorium universe, według stanu na sierpień 2026. Należy zainstalować xorgxrdp, mimo że jest to tylko pakiet zalecany: stanowi on backend serwera X, który xrdp uruchamia dla nowej sesji. Bez niego okno logowania przyjmuje hasło, a następnie natychmiast wraca do ekranu logowania.
Teraz należy wskazać sesji, które środowisko graficzne ma zostać uruchomione. xrdp wykonuje /etc/xrdp/startwm.sh, który z kolei uruchamia ~/.xsession, jeśli ten plik istnieje.
echo "xfce4-session" > ~/.xsession
chmod 644 ~/.xsessionNa koniec, xrdp musi odczytać klucz TLS (transport layer security), który oferuje klientom. Plik ten posiada uprawnienia 640 i należy do grupy ssl-cert.
ls -l /etc/ssl/private/ssl-cert-snakeoil.key
id xrdpLista wskazuje -rw-r----- 1 root ssl-cert. Jeśli id xrdp nie wyświetla ssl-cert wśród grup, należy wykonać sudo adduser xrdp ssl-cert, a następnie sudo systemctl restart xrdp. Pominięcie tego kroku uniemożliwi xrdp otwarcie klucza, a /var/log/xrdp.log zarejestruje błąd z nazwą pliku snakeoil w wierszu.
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://.:3389The 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 3389You 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 /soundOn 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.
Ile pamięci RAM zużywa zdalny pulpit na VPS z 2 GB pamięci
Wybór środowiska graficznego decyduje o tym, czy plan 2 GB będzie wystarczający, czy bezużyteczny. Poniższe wartości to zaokrąglone, typowe zużycie pamięci tuż po zalogowaniu do systemu Ubuntu 24.04, zaczerpnięte z opublikowanych porównań, a nie pomiarów na konkretnej maszynie. Własne zużycie należy sprawdzić za pomocą free -m zaraz po nawiązaniu połączenia.
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"
}
]W przypadku 5 środowisk graficznych kluczowe znaczenie ma różnica w zapotrzebowaniu na zasoby. LXQt zużywa około 300 MB, a XFCE około 400 MB, co w obu przypadkach pozostawia na maszynie z 2 GB pamięci miejsce na przeglądarkę. GNOME wymaga około 1,200 MB jeszcze przed otwarciem jakiegokolwiek okna, co przy 2 GB RAM zmusza przeglądarkę do rywalizacji o pozostałe zasoby.
Głównym kosztem nie jest powłoka graficzna, lecz przeglądarka. Nowoczesna przeglądarka zużywa od 150 do 400 MB na każdą aktywną kartę, więc VPS z 2 GB RAM i środowiskiem XFCE obsłuży tylko kilka kart, zanim zacznie korzystać ze swapu. Należy dodać swap, aby system zwolnił zamiast kończyć procesy: sudo fallocate -l 2G /swapfile, a następnie sudo chmod 600 /swapfile, sudo mkswap /swapfile, sudo swapon /swapfile oraz odpowiedni wpis w /etc/fstab, aby konfiguracja przetrwała restart. Jeśli proces znika bez ostrzeżenia, należy wykonać dmesg | grep -i "killed process". Taki wpis oznacza, że mechanizm kernel out-of-memory killer zakończył proces, a przeglądarka jest zazwyczaj pierwszą ofiarą.
Drugim ograniczeniem, które łatwo zlekceważyć, jest procesor. VPS nie posiada GPU, więc serwer X korzysta z renderowania programowego przez llvmpipe, co oznacza, że procesor odpowiada za rysowanie każdego piksela. Przewijanie rozbudowanych stron i odtwarzanie wideo powoduje wzrost obciążenia procesora, co skutkuje spadkiem liczby klatek na sekundę, a nie zawieszeniem maszyny. Jest to ta sama bariera, na którą natrafisz, jeśli zastanawiasz się czy na VPS można grać w gry: w przypadku jakiejkolwiek grafiki 3D odpowiedź brzmi nie, właśnie z tego powodu.
Dźwięk i schowek w sesji xrdp
Ubuntu 24.04 korzysta z PipeWire do obsługi dźwięku, natomiast przekierowanie dźwięku w xrdp zostało zaprojektowane dla PulseAudio, dlatego świeża instalacja zapewnia działający obraz, ale brak dźwięku. Ubuntu dostarcza odpowiedni mostek w swoich pakietach.
sudo apt install -y pipewire-module-xrdp pulseaudio-utils alsa-utilsWyloguj się całkowicie z sesji RDP i zaloguj ponownie, ponieważ moduł jest ładowany w momencie uruchamiania sesji. Ponowne połączenie nie wystarczy. Następnie sprawdź z poziomu sesji:
pactl list short sinks
speaker-test -c 2 -t wav -l 1Powinieneś zobaczyć ujście (sink), którego nazwa zawiera xrdp, oraz usłyszeć sygnał testowy przez klienta. Brak ujścia xrdp oznacza, że moduł nie załadował się do tej sesji. Klient również musi żądać przesyłania dźwięku: odpowiada za to flaga /sound w xfreerdp3 lub ustawienie "Dźwięk zdalny" w sekcji Zasoby lokalne w kliencie Windows.
Schowek tekstowy działa w obu kierunkach, gdy xrdp-chansrv jest uruchomiony dla danej sesji, co xrdp wykonuje automatycznie. Potwierdź to za pomocą pgrep -a xrdp-chansrv. Jeśli kopiowanie i wklejanie przestanie działać w trakcie sesji, oznacza to, że proces został zakończony, a ponowne połączenie uruchomi go ponownie. Kopiowanie plików, w przeciwieństwie do tekstu, odbywa się przez oddzielny kanał zwany przekierowaniem dysków: /drive:home,/home/you w xfreerdp3 montuje lokalny folder w zdalnej sesji.
Wyskakujące okno polkit i inne błędy przy pierwszym logowaniu
Najczęstszym zaskoczeniem przy pierwszym logowaniu jest okno dialogowe z komunikatem Authentication is required to create a color managed device. Przyczyna jest konkretna. Usługa colord prosi polkit o uprawnienia, polkit przyznaje je automatycznie tylko sesji uznanej za lokalną, a sesja RDP nie jest tak traktowana, więc polkit prosi o hasło. Ubuntu 24.04 dostarcza polkit 124, w którym usunięto stare pliki lokalnych uprawnień .pkla, więc każdy poradnik zalecający utworzenie /etc/polkit-1/localauthority/50-local.d/45-allow-colord.pkla nie przynosi żadnego efektu w wersji 24.04. Należy zamiast tego utworzyć regułę JavaScript.
/* /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;
}
});Wykonaj sudo systemctl restart polkit i połącz się ponownie. Warto znać dwa inne rodzaje błędów na podstawie ich objawów.
Okno logowania przyjmuje hasło i natychmiast wraca do stanu początkowego. Sesja została uruchomiona i zakończona. Przeczytaj najpierw /var/log/xrdp-sesman.log, a następnie ~/.xsession-errors w katalogu domowym. Brakujący plik xorgxrdp, plik ~/.xsession wskazujący na niezainstalowane środowisko graficzne, brak uprawnień do zapisu w katalogu domowym lub zapełniony dysk kończą się takim rezultatem.
Po połączeniu widoczny jest szary ekran z kursorem X. Serwer X uruchomił się, ale środowisko graficzne nie. To ponownie ~/.xsession: uruchom xfce4-session ręcznie przez SSH i odczytaj wyświetlony błąd.
Funkcja własnego serwera RustDesk
RustDesk dzieli się na dwa procesy. hbbs to serwer ID i rendezvous, w którym rejestrują się klienci, a hbbr to przekaźnik (relay), który obsługuje sesję, gdy bezpośrednie połączenie peer-to-peer zawiedzie. Żaden z nich nie uruchamia środowiska graficznego. Oba pochodzą z jednego obrazu; poniżej znajduje się plik compose opublikowany przez projekt, z adresem przekaźnika zmienionym na własną nazwę hosta:
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-stoppedUruchom usługę, a następnie odczytaj klucz publiczny wygenerowany przez serwer przy pierwszym starcie:
sudo docker compose up -d
sudo cat ./data/id_ed25519.pubKażdy klient wymaga podania nazwy hosta oraz tego klucza publicznego w ustawieniach sieci (Network settings) w aplikacji RustDesk. Pasujący klucz prywatny pozostaje w ./data/id_ed25519. Usunięcie katalogu z danymi spowoduje wygenerowanie nowej pary kluczy, co wymusi ponowną konfigurację wszystkich klientów. Wykonaj kopię zapasową tego katalogu.
Firewall musi zezwalać na ruch na następujących portach. hbbs korzysta z TCP 21115, 21116 i 21118 oraz UDP 21116. hbbr korzysta z TCP 21117 i 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/tcpDlaczego RustDesk nie działa za nginx lub Traefik
Użytkownicy, którzy terminują TLS dla wszystkich usług na jednym reverse proxy, często napotykają tu problemy. hbbs i hbbr używają własnych protokołów binarnych przez TCP i UDP, a nie HTTP. Brak nagłówka Host do routingu oraz żądania HTTP do inspekcji sprawia, że blok server w nginx lub router HTTP w Traefik nie mają danych do dopasowania. Listener UDP na porcie 21116 nie jest elementem warstwy HTTP.
Działają dwa rozwiązania. nginx może przekazywać porty TCP za pomocą bloku stream, co stanowi zwykłe przekierowanie warstwy 4, a nie reverse proxy w typowym rozumieniu. Porty 21118 oraz 21119 obsługują natomiast websockety wykorzystywane przez klienta webowego RustDesk, co jest standardowym ruchem HTTP, więc te dwa porty mogą znajdować się za proxy. W takim przypadku należy dodać reguły firewalla, aby tylko proxy miało dostęp do 21118 i 21119, ponieważ hbbs ufa nagłówkowi X-Real-IP w połączeniach websocket, aby ustalić rzeczywisty adres klienta.
Jednorazowa przeglądarka w kontenerze
Czasami potrzebna jest po prostu czysta przeglądarka z niezmiennym adresem IP, odizolowana od własnego komputera. Kontenerowe środowisko pracy realizuje to zadanie przy znacznie mniejszej liczbie zainstalowanego oprogramowania. Webtop od LinuxServer to lekka opcja:
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-stoppedPort 3000 obsługuje HTTP, a 3001 HTTPS; dostęp do pulpitu uzyskuje się w karcie przeglądarki, bez konieczności używania klienta RDP. Tagi obrazów obejmują środowiska XFCE, KDE, MATE oraz i3 na kilku dystrybucjach bazowych. Dokumentacja projektu wprost ostrzega przed ryzykiem: kontener posiada uprzywilejowany dostęp do hosta i zawiera terminal z dostępem sudo bez hasła, dlatego nie powinien być wystawiony bezpośrednio na działanie Internetu bez zabezpieczeń. Z tego powodu powyższe porty są powiązane z 127.0.0.1, zamiast być publikowane na wszystkich adresach. Należy uzyskiwać do nich dostęp przez ten sam tunel SSH lub tę samą sieć VPN, która była używana dla xrdp.
Kasm Workspaces opiera się na tej samej koncepcji, lecz w znacznie większej skali, oferując konsolę webową, konta użytkowników oraz kontenery sesyjne, które resetują się po zakończeniu sesji. Wymaga to większych zasobów sprzętowych, niż oferuje mały VPS. Według stanu na sierpień 2026 r. udokumentowane minimum to 2 rdzenie CPU, 4 GB pamięci RAM oraz 50 GB przestrzeni SSD, a każda sesja użytkownika domyślnie wymaga dodatkowo 2 rdzeni i 2768 MB pamięci. Plan z 2 GB pamięci RAM nie wystarczy do jego uruchomienia. Instalacja polega na pobraniu i uruchomieniu skryptu:
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.shVNC i jego obecne zastosowania
VNC przesyła aktualizacje bufora ramki zamiast poleceń rysowania, dlatego na wolnych łączach działa mniej płynnie niż RDP i nie obsługuje kanału audio. Protokół ten znajduje zastosowanie w jednym przypadku: gdy wymagana jest sesja graficzna, która pozostaje aktywna po rozłączeniu i pozwala na powrót do tego samego stanu po ponownym połączeniu. TigerVNC realizuje to zadanie. vncserver -localhost yes :1 wiąże Xvnc z adresem 127.0.0.1 na porcie TCP 5901 i odrzuca połączenia z innych źródeł, dlatego należy tunelować go w taki sam sposób jak xrdp przy użyciu ssh -N -L 5901:127.0.0.1:5901 you@vps.example.com. Nigdy nie należy udostępniać portu VNC publicznie. Większość serwerów VNC zabezpiecza hasło jedynie podczas nawiązywania połączenia, nie szyfrując dalszej transmisji, co sprawia, że na publicznym porcie zawartość sesji jest możliwa do odczytania w sieci.
Czy VPS sprawdza się jako komputer stacjonarny?
Jako codzienne narzędzie pracy – nie, a powodów jest wiele. Brak GPU sprawia, że za renderowanie obrazu odpowiada CPU. Każde naciśnięcie klawisza wymaga czasu na przesył sieciowy, a 40 ms opóźnienia, które w SSH jest akceptowalne, w edytorze tekstu staje się odczuwalne. Obraz wideo jest kompresowany dwukrotnie: najpierw przez serwis, a następnie przez enkoder RDP. Pliki znajdują się na dysku, nad którym użytkownik nie ma fizycznej kontroli, a intensywne użytkowanie środowiska graficznego szybko wyczerpuje miesięczny limit transferu, przewidziany dla serwera WWW.
Jako maszyna tymczasowa VPS sprawdza się bardzo dobrze, a te same cechy stanowią o jego zaletach. Adres IP jest stabilny i należy do centrum danych, co jest wymagane, gdy usługa musi widzieć stały adres. Maszynę można przywrócić z obrazu w kilka minut, więc sesja, w której wystąpił problem, nie generuje żadnych kosztów. Środowisko jest odizolowane od fizycznego sprzętu i działa nawet po zamknięciu laptopa. Rozliczanie godzinowe sprawia, że jednorazowy pulpit jest tani.
Jeśli nadal nie masz pewności, do czego służy taka maszyna, warto zapoznać się z praktyczną listą zastosowań VPS przed instalacją środowiska graficznego. Jeśli powodem chęci posiadania pulpitu jest jedna konkretna aplikacja dla Windows, najpierw rozważ rzeczywiste różnice między Linux a Windows Server, ponieważ licencja zmienia koszt takiego rozwiązania.
FAQ
Czy mogę uruchomić zdalny pulpit na VPS z 2 GB pamięci RAM?
Tak, pod warunkiem użycia lekkiego środowiska graficznego. XFCE lub LXQt zajmują po zalogowaniu około 300 do 400 MB, co pozostawia wystarczająco dużo miejsca na przeglądarkę z kilkoma kartami. GNOME lub KDE Plasma na 2 GB pamięci RAM nie pozostawiają niemal żadnych zasobów dla aplikacji. Należy dodać plik wymiany (swap) o rozmiarze 2 GB, aby w przypadku braku pamięci system spowolnił działanie zamiast nagle kończyć procesy. Jeśli aplikacja znika bez komunikatu, należy sprawdzić dmesg | grep -i "killed process" pod kątem działania mechanizmu kernel out-of-memory killer.
Czy powinienem otwierać port 3389 na firewallu VPS?
Nie. Port TCP 3389 jest nieustannie skanowany, a wystawiony ekran logowania RDP zachęca do prób łamania haseł. Należy ustawić port=tcp://.:3389 w pliku /etc/xrdp/xrdp.ini, aby xrdp nasłuchiwał wyłącznie na 127.0.0.1, potwierdzić to za pomocą ss -tlnp | grep 3389 i łączyć się przez ssh -N -L 3389:127.0.0.1:3389 you@vps.example.com. W przypadku obsługi więcej niż jednej lub dwóch osób, należy powiązać xrdp z adresem WireGuard zamiast z interfejsem pętli zwrotnej (loopback).
Dlaczego xrdp pyta o uwierzytelnienie w celu utworzenia urządzenia zarządzanego kolorami?
Usługa colord prosi polkit o uprawnienia, a polkit przyznaje je automatycznie tylko w przypadku sesji lokalnej. Sesja RDP nie jest traktowana jako lokalna, co skutkuje wyświetlaniem monitu o hasło przy każdym logowaniu. W systemie Ubuntu 24.04 stara metoda .pkla nie działa, ponieważ polkit 124 zrezygnował z obsługi lokalnych plików autoryzacji. Należy utworzyć /etc/polkit-1/rules.d/45-allow-colord.rules zawierający regułę JavaScript, która zwraca polkit.Result.YES dla identyfikatorów akcji zaczynających się od org.freedesktop.color-manager., a następnie wykonać sudo systemctl restart polkit.
Czy mogę umieścić serwer RustDesk za nginx lub Traefik?
Nie w przypadku głównej usługi. hbbs i hbbr używają własnych protokołów binarnych zamiast HTTP, więc nie ma nagłówka Host, na podstawie którego można by kierować ruch, a port UDP 21116 nie może przechodzić przez proxy HTTP. Należy otworzyć porty TCP od 21115 do 21119 oraz UDP 21116 na firewallu i pozwolić klientom na bezpośrednie połączenie. Porty websocket 21118 i 21119, używane przez klienta webowego, obsługują HTTP i mogą znajdować się za proxy. W takim przypadku należy ograniczyć dostęp na firewallu tak, aby tylko proxy miało do nich dostęp, ponieważ hbbs ufa X-Real-IP w ramach tych połączeń.
Dlaczego w sesji xrdp nie ma dźwięku?
Ubuntu 24.04 korzysta z PipeWire, podczas gdy przekierowanie dźwięku w xrdp zostało zaprojektowane dla PulseAudio, dlatego dźwięk nie działa do momentu zainstalowania mostka. Należy wykonać sudo apt install -y pipewire-module-xrdp, a następnie całkowicie wylogować się z sesji i zalogować ponownie, ponieważ moduł jest ładowany przy starcie sesji, a ponowne połączenie go nie załaduje. Należy sprawdzić za pomocą pactl list short sinks, czy istnieje sink o nazwie xrdp oraz upewnić się, że klient żąda dźwięku, co odpowiada fladze /sound w xfreerdp3 lub opcji "Remote audio" w kliencie Windows.