Niektóre zadania są łatwiejsze w środowisku graficznym: uruchomienie przeglądarki, narzędzia z interfejsem lub aplikacji desktopowej na zdalnej maszynie. XFCE jest wystarczająco lekki dla małego serwera, a TigerVNC pozwala oglądać go na własnym komputerze. Ten poradnik konfiguruje go na VPS Linux Infrawire tak, aby port VNC nigdy nie był wystawiony do Internetu: dostęp jest wyłącznie przez tunel SSH.
📋 Wymagania wstępne
- VPS z Ubuntu 24.04 lub Debian 12 i dostępem SSH jako root (w panelu klienta znajdziesz adres IP i hasło root VPS).
- Co najmniej 2 GB RAM dla komfortowej pracy pulpitu.
- Klient SSH na komputerze oraz przeglądarka VNC (RealVNC Viewer lub TigerVNC Viewer).
- Zwykłe konto użytkownika: nie uruchamiaj pulpitu jako root.
📦 Instalacja XFCE i TigerVNC
Zaktualizuj system, a potem zainstaluj pulpit i serwer. Pakiet dbus-x11 zapobiega częstemu problemowi z szarym ekranem.
Bashapt update && apt upgrade -y apt install -y xfce4 xfce4-goodies tigervnc-standalone-server tigervnc-common dbus-x11
Utwórz dedykowanego użytkownika, jeśli jeszcze go nie masz:
Bashadduser USER usermod -aG sudo USER
🔑 Ustawienie hasła VNC i sesji
Przełącz się na tego użytkownika i ustaw hasło VNC (znaczących jest najwyżej 8 znaków):
Bashsu - USER vncpasswd
Na pytanie o hasło tylko do odczytu odpowiedz n. Następnie wskaż TigerVNC, by uruchamiał XFCE:
Bashmkdir -p ~/.vnc cat > ~/.vnc/xstartup <<'EOF' #!/bin/sh unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS exec startxfce4 EOF chmod +x ~/.vnc/xstartup
Przetestuj ręcznie, nasłuchując tylko na localhost:
Bashvncserver :1 -localhost yes -geometry 1920x1080 -depth 24 vncserver -list vncserver -kill :1
⚙️ Automatyczny start przez systemd
Jako root utwórz jednostkę uruchamiającą sesję dla Twojego użytkownika. Wyświetlacz :1 odpowiada portowi TCP 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
Dla drugiego użytkownika skopiuj jednostkę pod inną nazwą, z tym użytkownikiem i wyświetlaczem :2 (port 5902).
🔒 Połączenie przez tunel SSH
Opcja -localhost yes sprawia, że VNC nasłuchuje tylko na 127.0.0.1, więc nic nie jest dostępne z zewnątrz. Na własnym komputerze otwórz tunel:
Bashssh -N -L 5901:localhost:5901 USER@VPS_IP
Zostaw to okno otwarte. W przeglądarce VNC połącz się z localhost:5901 i podaj hasło VNC. To samo polecenie działa w PowerShellu na Windows i w Terminalu macOS. Nie otwieraj portu 5901 w żadnej zaporze.
✅ Weryfikacja
Na VPS sprawdź, czy VNC nasłuchuje wyłącznie na adresie pętli zwrotnej:
Bashss -tlnp | grep 5901 systemctl is-active vncserver@1.service
Powinieneś zobaczyć 127.0.0.1:5901, a nie 0.0.0.0:5901. Na komputerze, po otwarciu tunelu, przeglądarka powinna pokazać pulpit XFCE.
🛠️ Rozwiązywanie problemów
Szary ekran lub brak pulpitu. Sprawdź, czy ~/.vnc/xstartup jest wykonywalny, czy zainstalowano dbus-x11, i przeczytaj log poleceniem cat ~/.vnc/*.log. Najczęstszą przyczyną jest brak linii exec startxfce4.
„A VNC server is already running as :1”. Pozostała nieaktualna blokada. Wykonaj vncserver -kill :1, a jeśli nadal występują, usuń /tmp/.X1-lock i /tmp/.X11-unix/X1, po czym zrestartuj usługę.
Tunel odrzuca połączenie. Usługa prawdopodobnie jest zatrzymana: sprawdź systemctl status vncserver@1.service. Upewnij się też, że lokalny port 5901 nie jest już zajęty na Twoim komputerze, albo wybierz inny, np. -L 5999:localhost:5901.
🎉 Twój VPS oferuje teraz prywatny pulpit XFCE, dostępny wyłącznie przez Twój tunel SSH.