فارسی (Farsi)
€EUR

دسکتاپ XFCE و TigerVNC روی VPS لینوکس

2 min
سرور مجازی (VPS/VDS)

برخی کارها با دسکتاپ گرافیکی ساده‌تر است: اجرای مرورگر، ابزار گرافیکی یا برنامه‌ی دسکتاپ روی یک ماشین راه دور. 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 از مشکل رایج صفحه‌ی خاکستری جلوگیری می‌کند.

Bash
apt update && apt upgrade -y apt install -y xfce4 xfce4-goodies tigervnc-standalone-server tigervnc-common dbus-x11

اگر هنوز کاربر اختصاصی ندارید، بسازید:

Bash
adduser USER usermod -aG sudo USER

🔑 تنظیم گذرواژه‌ی VNC و نشست

به آن کاربر بروید و گذرواژه‌ی VNC را تنظیم کنید (حداکثر ۸ نویسه معتبر است):

Bash
su - USER vncpasswd

به پرسش گذرواژه‌ی فقط‌خواندنی پاسخ n بدهید. سپس به TigerVNC بگویید XFCE را اجرا کند:

Bash
mkdir -p ~/.vnc cat > ~/.vnc/xstartup <<'EOF' #!/bin/sh unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS exec startxfce4 EOF chmod +x ~/.vnc/xstartup

آن را دستی و با گوش دادن فقط روی localhost آزمایش کنید:

Bash
vncserver :1 -localhost yes -geometry 1920x1080 -depth 24 vncserver -list vncserver -kill :1

⚙️ شروع خودکار با systemd

دوباره با root، یک یونیت بسازید که نشست را برای کاربر شما اجرا کند. نمایشگر :1 با پورت TCP شماره‌ی 5901 متناظر است.

INI
1# /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
Bash
systemctl daemon-reload systemctl enable --now vncserver@1.service systemctl status vncserver@1.service

برای کاربر دوم، یونیت را با نامی دیگر، با آن کاربر و نمایشگر :2 (پورت 5902) کپی کنید.

🔒 اتصال از طریق تونل SSH

گزینه‌ی -localhost yes باعث می‌شود VNC فقط روی 127.0.0.1 گوش دهد و چیزی از بیرون در دسترس نباشد. از رایانه‌ی خودتان یک تونل باز کنید:

Bash
ssh -N -L 5901:localhost:5901 USER@VPS_IP

آن پنجره را باز نگه دارید. در نمایشگر VNC به localhost:5901 وصل شوید و گذرواژه‌ی VNC را وارد کنید. همین دستور در PowerShell ویندوز و Terminal مک هم کار می‌کند. پورت 5901 را در هیچ فایروالی باز نکنید.

✅ بررسی

روی VPS مطمئن شوید VNC فقط روی آدرس حلقه‌ی برگشت گوش می‌دهد:

Bash
ss -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 شما در دسترس است.

با آخرین پیشنهادها، تخفیف‌ها و تبلیغات ویژه به‌روز بمانید.

مشاهده تخفیف‌ها

ما از کوکی استفاده می‌کنیم

ما از کوکی‌های تحلیلی برای بهبود تجربه شما در سایت خود استفاده می‌کنیم. هیچ داده‌ای به اشخاص ثالث فروخته نمی‌شود. اطلاعات بیشتر در سیاست حفظ حریم خصوصی ما.