Skip to content
Tenvo AI · مباشر · الإصدار v0.16.4 · TLS · شهادات لكل جهاز · AGPL-3.0 · الخطة المجانية · 30 جهازًا · بنية تحتية قابلة للاستضافة الذاتية · مفتاح API خاص · MCP لـ CLAUDE & CURSOR
العودة إلى المدونةدليل

خادم سطح المكتب البعيد على Linux: إعداد X11VNC وRustDesk

Tenvo Editorial Team7 دقائق قراءة
خادم سطح المكتب البعيد على Linux: إعداد X11VNC وRustDesk

تحاول إدارة أو دعم أجهزة Linux عن بُعد وسئمت الحلول الارتجالية الهشة — SSH للوصول إلى الطرفية، نسخ ملفات كبيرة يدوياً، أو إرسال رابط TeamViewer لشخص ما في كل مرة.

تحاول إدارة أو دعم أجهزة لينوكس عن بُعد وسئمت الحلول العشوائية القابلة للكسر — SSH للوصول إلى الصدف، نسخ الملفات الكبيرة يدويًا، أو إرسال رابط TeamViewer في كل مرة. إذا أردت سطح مكتب بعيد مستمر على جهة الخادم يعمل عند الإقلاع، ينجو من إعادة التشغيل، ويمكن استضافته ذاتيًا تحت سيطرتك، يمرّر هذا الدليل عبر نهجين عمليين على الخادم: X11VNC لجلسات X11 الكلاسيكية وعميل خادم RustDesk لنسخة حديثة ذاتية الاستضافة كرابط/وسيط (relay/rendezvous).

متى تشغّل خادم سطح مكتب بعيد مخصّص على لينوكس (ولماذا)

قائمة تحقق سريعة لتقرير ما إذا كان خادم سطح المكتب على جهة الخادم منطقيًا:

  • تحتاج وصولًا بدون حضور أو وصولًا غير مراقب إلى جهاز (خوادم مختبر، أجهزة مكتب، أكشاك).
  • تريد نقطة نهاية واحدة دائمة يمكنك الاتصال بها دون أن تطلب من شخص ما تشغيل عميل أولاً.
  • تفضل الاستضافة الذاتية (دون سحابة طرف ثالث) أو تريد وسيطًا محليًا لتجنب تعريض منافذ RDP/VNC مباشرة.
  • تريد دمج وصول VNC الكلاسيكي على X11 مع تجاوز NAT/المرور عبر relay لتسهيل استخدام العميل.

X11VNC هو خادم VNC صغير ومستقر على جهة الخادم يصدر ما يعرضه X11 (غالبًا :0). مكونات خادم RustDesk (hbbs + hbbr) توفر خدمة rendezvous وخيار relay لاتصالات الند للند — مفيدة عندما تكون العملاء خلف NAT. كلاهما يمكن أن يتعايش: X11VNC يمنحك نقطة VNC دائمة، وRustDesk يمنحك طريقة مُدارة لتمكين العملاء من العثور على المضيف دون فتح توجيه منافذ.

الخيار A — X11VNC: وصول X11 ثابت وبسيط على جهة الخادم

Install and secure x11vnc

على Debian/Ubuntu:

sudo apt update
sudo apt install -y x11vnc

أنشئ ملف كلمة مرور (استخدم عبارة مرور قوية). استبدل 'remote' بمالك دليل المنزل للمستخدم البعيد.

sudo -u remote mkdir -p /home/remote/.vnc
sudo -u remote x11vnc -storepasswd /home/remote/.vnc/passwd
sudo chown -R remote:remote /home/remote/.vnc

اعثر على ملف Xauthority الصحيح لمدير العرض لديك. مواقع شائعة:

  • LightDM: /var/run/lightdm/root/:0
  • GDM (GNOME): /run/user/1000/gdm/Xauthority or check /home//.Xauthority

شغّل x11vnc يدويًا مرة للتحقق:

sudo -u remote x11vnc -display :0 -auth /home/remote/.Xauthority -rfbauth /home/remote/.vnc/passwd -forever -shared -noxdamage -o /var/log/x11vnc.log

Systemd unit for an always-on service

ضع هذا الملف في /etc/systemd/system/x11vnc.service — حرّر User و Group ومسار -auth ليتطابق مع توزيعك/مدير العرض.

[Unit]
Description=x11vnc server for display :0
After=graphical.target

[Service]
Type=simple
User=remote
Group=remote
ExecStart=/usr/bin/x11vnc -display :0 -auth /home/remote/.Xauthority -rfbauth /home/remote/.vnc/passwd -forever -shared -noxdamage -repeat -o /var/log/x11vnc.log
Restart=on-failure

[Install]
WantedBy=graphical.target

تمكين وتشغيل:

sudo systemctl daemon-reload
sudo systemctl enable --now x11vnc.service
sudo journalctl -u x11vnc -f

Network and security considerations

VNC بشكل افتراضي غير مُشفر. خيارات لتقوية نقطة نهاية VNC على جهة الخادم:

  • الاستماع على localhost وإلزام نفق SSH: شغّل x11vnc مع -rfbport 5901 واستخدم systemd للاستماع على 127.0.0.1 فقط، ثم SSH -L 5901:localhost:5901.
  • استخدم VPN للوصول إلى شبكة المضيف المحلية.
  • حدد الوصول بجدار ناري (مثال ufw أدناه).
  • إذا احتجت عملاء بعيدين بدون SSH، ضع VNC خلف stunnel/NGINX TLS proxy (يزيد استهلاك CPU والتعقيد).
# Basic UFW rule to allow local-network VNC only
sudo ufw allow from 192.168.0.0/16 to any port 5900 proto tcp
# Or bind to localhost and tunnel via SSH for remote access

ملاحظات: X11VNC يتطلب جلسة X11. على Wayland (GNOME في بعض التوزيعات) استخدم خوادم متوافقة مع Wayland (مثل wayvnc) أو الميزة المدمجة في سطح المكتب لسطح المكتب البعيد (غالبًا RDP).

الخيار B — خدمة خادم RustDesk: rendezvous و relay ذاتي الاستضافة

RustDesk يمنحك القدرة على استضافة خدمة الإشارة (hbbs) وخادم relay (hbbr) ذاتيًا حتى يتمكن العملاء من العثور على مضيفيك والوصول إليها دون تعريض منافذ VNC/RDP الخام. إذا كنت تشغّل بالفعل X11VNC لجلسة سطح المكتب، يمكنك وضع RustDesk أمامها لتجاوز NAT ولتجربة عميل أسهل. مكونات خادم RustDesk غالبًا ما تُوزّع كصور docker؛ تحقق من إصدارات المشروع — على سبيل المثال علامات الخادم تشمل v1.2.0 (تحقق من الوسم الحالي في مستودع RustDesk).

Simple Docker Compose example

هذا compose يطلق hbbs (rendezvous) و hbbr (relay اختياري). المنافذ المعروضة هي افتراضات شائعة مستخدمة في وثائق المجتمع (عدّل إذا غيّر المصدر المنافذ).

version: '3.7'
services:
  hbbs:
    image: rustdesk/rustdesk-server:latest
    container_name: rustdesk-hbbs
    restart: unless-stopped
    ports:
      - '21112:21112/tcp'   # rendezvous
    environment:
      - HBBS_KEY=your_secret_key_here

  hbbr:
    image: rustdesk/rustdesk-server:latest
    container_name: rustdesk-hbbr
    restart: unless-stopped
    ports:
      - '21113:21113/udp'   # relay

ملاحظات:

  • استبدل HBBS_KEY (أو متغيرات البيئة الأخرى حسب تعليمات RustDesk الحالية) بقيمة آمنة.
  • صور RustDesk الرسمية وأسماء متغيرات البيئة تتغير بين الإصدارات — راجع مستودع خادم RustDesk قبل الإنتاج.

Connecting clients

على جانب العميل (RustDesk على سطح المكتب/الجوال)، وجه العميل إلى عنوان خادم hbbs الخاص بك (اسم DNS أو IP عام): مثلاً 1.2.3.4:21112. إذا كان hbbr relay متاحًا ومطلوبًا، سيستخدمه العميل لتمرير الحركة عندما يفشل الاتصال المباشر (P2P). يمكنك بعد ذلك تكوين العميل إما للتحكم عن بُعد في وكيل RustDesk مُشغل على المضيف أو استخدام RustDesk كوسيط يتصل بخدمة VNC موجودة على المضيف (لهذا عادة تشغّل وكيل RustDesk على المضيف، والذي يمكنه بدوره إعادة التوجيه إلى جلسة X11VNC).

Systemd alternative to Docker

إذا فضلت عدم استخدام Docker، ابنِ ثنائيات rustdesk-server باتباع توثيق المشروع وثبّتها كخدمات systemd (hbbs و hbbr). التعبئة تختلف حسب الإصدار؛ نهج Docker هو أسرع طريقة للحصول على خادم قابل للتكرار.

الأمن، تجاوز NAT، ومتى تتجنب تعريض المنافذ

نهجان عامة لتجنب تعريض منافذ سطح المكتب مباشرة:

  1. أبقِ VNC/RDP مربوطًا بـ localhost؛ اجبر الوصول عبر SSH/VPN. هذا أبسط خيار وأكثره قابلية للتدقيق لإعدادات المسؤول الوحيد.
  2. استضف relay/rendezvous ذاتيًا (RustDesk) واستخدم TLS + مصادقة. هذا يقلل المنافذ المفتوحة على المضيف لكنه يتطلب تشغيل وتأمين خوادم relay.

مقاطع جدار ناري (UFW):

# Allow only SSH from your office and block the rest
sudo ufw allow from 203.0.113.0/24 to any port 22 proto tcp
sudo ufw deny 5900/tcp

# If running RustDesk server on the relay box (example)
sudo ufw allow 21112/tcp
sudo ufw allow 21113/udp

قائمة أمنية عملية:

  • استخدم مصادقة قوية لحساب وكيل VNC أو RustDesk.
  • دوّر أو احْمِ مفاتيح الخادم (مفتاح RustDesk HBBS) واحتفظ بالصور محدثة.
  • استخدم IDS/مراقبة لتنبيهك على عمليات فحص المنافذ والمحاولات الفاشلة لتسجيل الدخول.
  • إذا احتجت جلسات سطح مكتب مُشفّرة، أنهِ TLS عند reverse proxy (Nginx/Caddy) أمام الـ relay وفرض TLS 1.2+ وشفرات قوية.

نصائح تشغيلية، استكشاف الأخطاء، والصيانة

مشكلات شائعة وحلولها:

  • لا يظهر سطح المكتب عبر VNC: تأكد أن عرض X هو :0 (ps aux | grep X) وأن x11vnc يستخدم ملف -auth الصحيح.
  • الخدمة لا تبدأ عند الإقلاع: اضبط WantedBy في unit الخاص بـ systemd على graphical.target وتأكد أن مدير العرض يبدأ قبل x11vnc.
  • عملاء RustDesk لا يستطيعون الوصول إلى الخادم: تحقق من DNS والجدار الناري؛ اختبر باستخدام أدوات telnet/أدوات IP وافحص سجلات الحاويات (docker-compose logs -f).
  • الأداء سيئ: فعّل -noxdamage لـ x11vnc (تمزّق أقل، CPU أقل في بعض أحمال العمل) وفكّر في تعديل الضغط/الترميزات على العميل عند توفرها.

خطة صيانة:

  • طبق تحديثات أمنية لنظام التشغيل أسبوعيًا. على Debian/Ubuntu يمكنك أتمتة unattended-upgrades للتحديثات الجزئية.
  • تابع مستودعات RustDesk أو x11vnc العليا لإصلاحات الأمان. إذا استخدمت صور docker، جدول تحديث الصور وإعادة النشر.
  • نسّخ ملفات التكوين وأي شهادات TLS؛ خزّن مفاتيح HBBS في مدير أسرار إن أمكن.

متى قد يكون أداة تجارية أو RDP الخيار الأفضل

مقايضات صادقة:

  • TeamViewer / AnyDesk: يتفوقان في سهولة الاستخدام القصوى للمستخدمين غير التقنيين، تجاوز NAT الشامل، وتطبيقات جوال مصقولة. إذا احتجت دعمًا فوريًا بدون عمليات من مئات نقاط النهاية غير التقنية، قد يكون SaaS تجاري مجديًا من حيث التكلفة. راجع مقارنةنا في rustdesk-vs-anydesk للتفاصيل.
  • RDP (Microsoft Remote Desktop): على خوادم وأجهزة Windows، عادةً ما يمنح RDP الأصلي أداءً وميزات أفضل (الحافظة، نقل الملفات، الصوت). لكن RDP يعرّض سطح هجوم أعلى إن لم يكن خلف VPN أو بوابة آمنة.

إذا كان هدفك الأساسي الاستضافة الذاتية والخصوصية — وتقبل مزيدًا من الإعداد الأولي والصيانة المستمرة — فتركيبة X11VNC + خادم RustDesk حل عملي وقوي.

مزيد من القراءة والموارد الداخلية

إذا أردت تجنّب توجيه المنافذ كليًا، اطلع على الشرح التفصيلي: Remote desktop without port forwarding. للمشهد الأعلى لنشر حل خاص بك، راجع Self-hosted remote desktop guide. لممارسات تشديد الأمان، تحقق من Remote desktop security.

أخيرًا، Tenvo تركز على أدوات سطح مكتب بعيد مفتوحة ومُستضافة ذاتيًا — إذا أردت بديل عميل/خادم مصمم للاستضافة الذاتية والعمل عبر منصات متعددة، تحقق من صفحات التنزيل أو التسعير للبدء: /download و /pricing. نصف أنماط النشر المماثلة في مشاركات أخرى ونبقي الأمثلة محدثة.

إذا رغبت بمساعدة على توزيعة محددة، مدير عرض معين، أو ضبط بدء systemd لبيئة معينة، أخبرني بالتوزيعة ومدير العرض (مثال: Ubuntu 22.04 with GDM) وسأقدّم لك ملف unit مخصّص وأوامر مسار -auth. عندما تكون جاهزًا، حمّل Tenvo أو حاول بناء الستاك الموضح أعلاه — ابدأ من /download.

احصل على Tenvo

مستعد لتجربته بنفسك؟

مجانًا حتى 30 جهازًا، دون بطاقة ائتمان. جاهز ومتصِل في دقيقتين.