कुछ काम ग्राफ़िकल डेस्कटॉप के साथ आसान होते हैं: रिमोट मशीन पर ब्राउज़र, GUI टूल या डेस्कटॉप ऐप चलाना। XFCE छोटे सर्वर के लिए पर्याप्त हल्का है, और TigerVNC उसे आपके अपने कंप्यूटर पर दिखाता है। यह गाइड VPS Linux Infrawire पर इसे इस तरह सेट करती है कि VNC पोर्ट कभी इंटरनेट पर खुला न रहे: उस तक केवल SSH टनल से पहुँचा जाता है।
📋 पूर्वापेक्षाएँ
- Ubuntu 24.04 या Debian 12 वाला VPS, जिस पर root SSH एक्सेस हो (अपने ग्राहक क्षेत्र से आपको VPS का IP और root पासवर्ड मिल जाता है)।
- आरामदेह डेस्कटॉप के लिए कम से कम 2 GB RAM।
- आपके कंप्यूटर पर SSH क्लाइंट और VNC व्यूअर (RealVNC Viewer या TigerVNC Viewer)।
- एक सामान्य उपयोगकर्ता खाता: डेस्कटॉप को root के रूप में न चलाएँ।
📦 XFCE और TigerVNC इंस्टॉल करें
सिस्टम अपडेट करें, फिर डेस्कटॉप और सर्वर इंस्टॉल करें। dbus-x11 ग्रे स्क्रीन की आम समस्या से बचाता है।
Bashapt update && apt upgrade -y apt install -y xfce4 xfce4-goodies tigervnc-standalone-server tigervnc-common dbus-x11
अगर अभी तक समर्पित उपयोगकर्ता नहीं है तो बनाएँ:
Bashadduser USER usermod -aG sudo USER
🔑 VNC पासवर्ड और सेशन सेट करें
उस उपयोगकर्ता पर जाएँ और VNC पासवर्ड सेट करें (अधिकतम 8 अक्षर ही मायने रखते हैं):
Bashsu - USER vncpasswd
रीड-ओनली पासवर्ड वाले सवाल पर n उत्तर दें। फिर TigerVNC को 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
हाथ से आज़माएँ, केवल localhost पर सुनते हुए:
Bashvncserver :1 -localhost yes -geometry 1920x1080 -depth 24 vncserver -list vncserver -kill :1
⚙️ systemd से अपने-आप शुरू करें
फिर से root बनकर ऐसी यूनिट बनाएँ जो आपके उपयोगकर्ता के लिए सेशन चलाए। डिस्प्ले :1 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
दूसरे उपयोगकर्ता के लिए यूनिट को दूसरे नाम से, उस उपयोगकर्ता और डिस्प्ले :2 (पोर्ट 5902) के साथ कॉपी करें।
🔒 SSH टनल से जुड़ें
-localhost yes विकल्प VNC को केवल 127.0.0.1 पर सुनने देता है, इसलिए बाहर से कुछ भी पहुँच में नहीं है। अपने कंप्यूटर से टनल खोलें:
Bashssh -N -L 5901:localhost:5901 USER@VPS_IP
उस विंडो को खुला रहने दें। अपने VNC व्यूअर में localhost:5901 से जुड़ें और VNC पासवर्ड डालें। यही कमांड Windows PowerShell और macOS Terminal में भी चलती है। पोर्ट 5901 को किसी भी फ़ायरवॉल में न खोलें।
✅ सत्यापन
VPS पर पुष्टि करें कि VNC केवल लूपबैक पते पर सुन रहा है:
Bashss -tlnp | grep 5901 systemctl is-active vncserver@1.service
आपको 0.0.0.0:5901 नहीं, 127.0.0.1:5901 दिखना चाहिए। आपके कंप्यूटर पर टनल चालू होने के बाद व्यूअर को XFCE डेस्कटॉप दिखाना चाहिए।
🛠️ समस्या निवारण
ग्रे स्क्रीन या डेस्कटॉप नहीं। जाँचें कि ~/.vnc/xstartup निष्पादन योग्य है, dbus-x11 इंस्टॉल है, और लॉग cat ~/.vnc/*.log से पढ़ें। exec startxfce4 पंक्ति का न होना सबसे आम कारण है।
"A VNC server is already running as :1"। एक पुराना लॉक बचा हुआ है। vncserver -kill :1 चलाएँ, फिर अगर बने रहें तो /tmp/.X1-lock और /tmp/.X11-unix/X1 हटाएँ और सेवा दोबारा शुरू करें।
टनल कनेक्शन अस्वीकार करता है। संभवतः सेवा रुकी हुई है: systemctl status vncserver@1.service देखें। यह भी सुनिश्चित करें कि आपके कंप्यूटर पर लोकल पोर्ट 5901 पहले से उपयोग में न हो, या -L 5999:localhost:5901 जैसा कोई दूसरा पोर्ट चुनें।
🎉 आपका VPS अब निजी XFCE डेस्कटॉप देता है, जिस तक केवल आपके SSH टनल से पहुँचा जा सकता है।