برخی کارها با دسکتاپ گرافیکی سادهتر است: اجرای مرورگر، ابزار گرافیکی یا برنامهی دسکتاپ روی یک ماشین راه دور. XFCE برای یک سرور کوچک بهاندازهی کافی سبک است و TigerVNC اجازه میدهد آن را از رایانهی خودتان ببینید. این راهنما آن را روی VPS Linux Infrawire طوری راهاندازی میکند که پورت VNC هرگز در اینترنت در معرض دید نباشد: فقط از طریق تونل SSH به آن میرسید.
📋 پیشنیازها
- یک VPS با Ubuntu 24.04 یا Debian 12 و دسترسی SSH با کاربر root (از بخش مشتری خود، IP و گذرواژهی root ماشین را پیدا میکنید).
- دستکم ۲ گیگابایت رم برای یک دسکتاپ روان.
- یک کلاینت 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 را تنظیم کنید (حداکثر ۸ نویسه معتبر است):
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 را وارد کنید. همین دستور در PowerShell ویندوز و Terminal مک هم کار میکند. پورت 5901 را در هیچ فایروالی باز نکنید.
✅ بررسی
روی VPS مطمئن شوید VNC فقط روی آدرس حلقهی برگشت گوش میدهد:
Bashss -tlnp | grep 5901 systemctl is-active vncserver@1.service
باید 127.0.0.1:5901 را ببینید، نه 0.0.0.0: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 شما در دسترس است.