Manche Aufgaben gehen mit grafischer Oberfläche leichter von der Hand: einen Browser, ein GUI-Werkzeug oder eine Desktop-Anwendung auf einem entfernten Rechner starten. XFCE ist leicht genug für einen kleinen Server, und mit TigerVNC sehen Sie ihn auf Ihrem eigenen Computer. Diese Anleitung richtet ihn auf einem VPS Linux Infrawire so ein, dass der VNC-Port nie im Internet erreichbar ist: Sie gelangen nur über einen SSH-Tunnel hin.
📋 Voraussetzungen
- Ein VPS mit Ubuntu 24.04 oder Debian 12 und SSH-Root-Zugang (in Ihrem Kundenbereich finden Sie die IP und das Root-Passwort des VPS).
- Mindestens 2 GB RAM für einen komfortablen Desktop.
- Ein SSH-Client auf Ihrem Computer und ein VNC-Viewer (RealVNC Viewer oder TigerVNC Viewer).
- Ein normales Benutzerkonto: Starten Sie den Desktop nicht als root.
📦 XFCE und TigerVNC installieren
Aktualisieren Sie das System und installieren Sie dann Desktop und Server. dbus-x11 verhindert ein häufiges Problem mit grauem Bildschirm.
Bashapt update && apt upgrade -y apt install -y xfce4 xfce4-goodies tigervnc-standalone-server tigervnc-common dbus-x11
Legen Sie einen eigenen Benutzer an, falls Sie noch keinen haben:
Bashadduser USER usermod -aG sudo USER
🔑 VNC-Passwort und Sitzung festlegen
Wechseln Sie zu diesem Benutzer und setzen Sie das VNC-Passwort (höchstens 8 Zeichen sind signifikant):
Bashsu - USER vncpasswd
Beantworten Sie die Frage nach dem schreibgeschützten Passwort mit n. Danach weisen Sie TigerVNC an, XFCE zu starten:
Bashmkdir -p ~/.vnc cat > ~/.vnc/xstartup <<'EOF' #!/bin/sh unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS exec startxfce4 EOF chmod +x ~/.vnc/xstartup
Testen Sie von Hand, mit Lauschen nur auf localhost:
Bashvncserver :1 -localhost yes -geometry 1920x1080 -depth 24 vncserver -list vncserver -kill :1
⚙️ Automatischer Start mit systemd
Erstellen Sie wieder als root eine Unit, die die Sitzung für Ihren Benutzer ausführt. Display :1 entspricht dem TCP-Port 5901.
INI1# /etc/systemd/system/vncserver@.service 2[Unit] 3Description=TigerVNC server on display %i 4After=network.target 5 6[Service] 7Type=forking 8User=USER 9Group=USER 10WorkingDirectory=/home/USER 11PIDFile=/home/USER/.vnc/%H:%i.pid 12ExecStartPre=-/usr/bin/vncserver -kill :%i 13ExecStart=/usr/bin/vncserver :%i -localhost yes -geometry 1920x1080 -depth 24 14ExecStop=/usr/bin/vncserver -kill :%i 15 16[Install] 17WantedBy=multi-user.target
Bashsystemctl daemon-reload systemctl enable --now vncserver@1.service systemctl status vncserver@1.service
Für einen zweiten Benutzer kopieren Sie die Unit unter anderem Namen mit diesem Benutzer und Display :2 (Port 5902).
🔒 Über einen SSH-Tunnel verbinden
Die Option -localhost yes lässt VNC nur auf 127.0.0.1 lauschen, von außen ist nichts erreichbar. Öffnen Sie auf Ihrem eigenen Computer einen Tunnel:
Bashssh -N -L 5901:localhost:5901 USER@VPS_IP
Lassen Sie dieses Fenster offen. Verbinden Sie Ihren VNC-Viewer mit localhost:5901 und geben Sie das VNC-Passwort ein. Derselbe Befehl funktioniert in der Windows-PowerShell und im macOS-Terminal. Öffnen Sie Port 5901 in keiner Firewall.
✅ Überprüfung
Prüfen Sie auf dem VPS, dass VNC nur auf der Loopback-Adresse lauscht:
Bashss -tlnp | grep 5901 systemctl is-active vncserver@1.service
Sie sollten 127.0.0.1:5901 sehen und nicht 0.0.0.0:5901. Auf Ihrem Computer sollte der Viewer bei bestehendem Tunnel den XFCE-Desktop anzeigen.
🛠️ Fehlerbehebung
Grauer Bildschirm oder kein Desktop. Prüfen Sie, ob ~/.vnc/xstartup ausführbar ist, ob dbus-x11 installiert ist, und lesen Sie das Log mit cat ~/.vnc/*.log. Eine fehlende Zeile exec startxfce4 ist die häufigste Ursache.
„A VNC server is already running as :1“. Eine veraltete Sperre ist übrig. Führen Sie vncserver -kill :1 aus, entfernen Sie bei Bedarf /tmp/.X1-lock und /tmp/.X11-unix/X1 und starten Sie den Dienst neu.
Der Tunnel verweigert die Verbindung. Wahrscheinlich ist der Dienst gestoppt: Prüfen Sie systemctl status vncserver@1.service. Achten Sie außerdem darauf, dass der lokale Port 5901 auf Ihrem Computer nicht schon belegt ist, oder wählen Sie einen anderen wie -L 5999:localhost:5901.
🎉 Ihr VPS bietet jetzt einen privaten XFCE-Desktop, erreichbar nur über Ihren SSH-Tunnel.