بعض المهام أسهل مع واجهة رسومية: تشغيل متصفح أو أداة بواجهة أو تطبيق مكتبي على جهاز بعيد. XFCE خفيف بما يكفي لخادم صغير، ويتيح لك TigerVNC رؤيته من حاسوبك. يعدّ هذا الدليل الإعداد على VPS Linux Infrawire بحيث لا يُكشف منفذ VNC للإنترنت أبدًا: لا تصل إليه إلا عبر نفق SSH.
📋 المتطلبات
- خادم VPS بنظام Ubuntu 24.04 أو Debian 12 مع وصول SSH بصلاحية root (من منطقة العميل تجد عنوان IP وكلمة مرور root الخاصة بالـ VPS).
- ذاكرة لا تقل عن 2 جيجابايت لسطح مكتب مريح.
- عميل 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. يعمل الأمر نفسه في PowerShell على ويندوز وفي Terminal على macOS. لا تفتح المنفذ 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 الخاص بك.