سطح مكتب رسومي على Linux VPS عبر xrdp وXFCE
شغّل سطح مكتب XFCE حقيقياً على Linux VPS باستخدام xrdp، ومرّر الاتصال عبر SSH بدلاً من فتح المنفذ 3389، واعرف متى يناسبك RustDesk.
ما المقصود فعلياً بسطح المكتب البعيد على Linux VPS
توجد فئتان مختلفتان من المنتجات عند البحث عن «سطح المكتب البعيد على Linux VPS»، واختيار المنتج الخطأ قد يضيّع فترة بعد الظهر. الفئة الأولى هي وسيط للوصول البعيد. ويُعد خادم RustDesk المستضاف ذاتياً مثالاً شائعاً عليها؛ فهو يرحّل جلسة بين جهازين تملكهما مسبقاً، مثل الحاسوب المحمول والحاسوب الموجود في المنزل. لا يعرض الخادم المستأجر أي سطح مكتب على الإطلاق. بل يعرّف الطرفين ببعضهما ويمرّر الحزم عندما يتعذر عليهما الوصول المباشر إلى بعضهما. أما الفئة الثانية فهي سطح مكتب رسومي فعلي يعمل على الخادم المستأجر، بحيث تُرسم وحدات البكسل في مركز البيانات وتُبث إليك. ومن أمثلتها xrdp وVNC (الحوسبة الشبكية الافتراضية) أو مساحة عمل داخل حاوية.
يوجد سؤال واحد يميّز بين الفئتين. بعد تشغيل هذا الحل، أين يوجد مؤشر الماوس؟ إذا كان موجوداً على جهاز تملكه مسبقاً، فأنت تريد وسيطاً. وإذا كان موجوداً على VPS نفسه، فأنت تريد سطح مكتب يعمل على VPS. يركّز الجزء الأكبر أدناه على الحالة الثانية، لأنها الحالة التي تتجاهلها معظم الأدلة.
الخيار الأنسب لمهمتك
- RustDesk مع relay خاص بك. يحمي الجلسة من المرور عبر rendezvous server عام يديره أشخاص لا تعرفهم، لأن مفاتيح التشفير العامة والخاصة تكون لديك. لكنه لا يحمي الجهاز الذي تتحكم فيه؛ فهذا الجهاز يظل هو الكمبيوتر الذي ثبّتَّ عليه العميل، وبكلمة المرور الموجودة على ذلك الكمبيوتر.
- xrdp عبر نفق SSH أو VPN. يحميك من الفحص المستمر للمنفذ TCP 3389 على مستوى الإنترنت، ومن تخمين كلمات المرور في واجهة تسجيل دخول RDP، لأن هذا المنفذ لا يكون مكشوفاً على الإنترنت. لكنه لا يحمي كلمة مرور حساب ضعيفة من أي شخص لديه النفق بالفعل.
- VNC عبر النفق نفسه. يوفّر لك جلسة سطح مكتب تستمر بعد انقطاع الاتصال، باستخدام بروتوكول أقدم وأبسط من RDP. لا يحمي أي شيء بمفرده؛ فالنفق ينفّذ جميع وظائف الأمان. لذلك فإن تشغيل VNC وحده على منفذ عام هو أسوأ خيار هنا.
- مساحة عمل داخل container مثل Webtop أو Kasm. توفّر لك متصفحاً أو سطح مكتب كاملاً داخل container يمكنك حذفُه وإعادة بنائه، ما يحمي جهازك الحقيقي من أي شيء يتفاعل معه ذلك المتصفح. لكنها لا تحمي المضيف؛ فهذه الصور تعمل بامتيازات واسعة وبحساب
sudoمن دون كلمة مرور داخلها، ولذلك لا ينبغي أن تثق بأن container يشكّل حاجزاً أمنياً عند تشغيل workload غير موثوق.
ثبّت xrdp وXFCE على Ubuntu 24.04
لا تتضمن صورة خادم VPS سطح مكتب رسوميًا. ثبّت سطح مكتب، ثم ثبّت xrdp، وهو الخادم مفتوح المصدر الذي يستخدم بروتوكول RDP (بروتوكول سطح المكتب البعيد)، وهو البروتوكول نفسه الذي يستخدمه عميل Windows. اختر سطح مكتب خفيفًا؛ ويُعد XFCE الخيار المعتاد.
sudo apt update
sudo apt install -y xrdp xorgxrdp xfce4 xfce4-goodies dbus-x11
systemctl is-active xrdpيتضمن Ubuntu 24.04 الإصدار 0.9.24 من xrdp وxorgxrdp في مكوّن universe، اعتبارًا من August 2026. ثبّت xorgxrdp بالاسم، رغم أنّه حزمة موصى بها فقط؛ فهو الواجهة الخلفية لخادم X التي يبدأها xrdp لجلسة جديدة. من دونه، تقبل نافذة تسجيل الدخول كلمة المرور ثم تعيدك مباشرةً إلى نافذة تسجيل الدخول.
حدّد الآن سطح المكتب الذي يجب أن تبدأه الجلسة. يشغّل xrdp /etc/xrdp/startwm.sh، الذي يشغّل ~/.xsession عند وجود ذلك الملف.
echo "xfce4-session" > ~/.xsession
chmod 644 ~/.xsessionأخيرًا، يحتاج xrdp إلى قراءة مفتاح TLS (أمن طبقة النقل) الذي يقدّمه للعملاء. وضع الملف هو 640، ومالكه هو المجموعة ssl-cert.
ls -l /etc/ssl/private/ssl-cert-snakeoil.key
id xrdpيعرض الأمر -rw-r----- 1 root ssl-cert. إذا لم يطبع id xrdp القيمة ssl-cert ضمن المجموعات، فنفّذ sudo adduser xrdp ssl-cert ثم sudo systemctl restart xrdp. إذا تخطيت ذلك، فلن يتمكن xrdp من فتح المفتاح، وسيسجّل /var/log/xrdp.log الفشل مع اسم ملف snakeoil في السطر.
لماذا يجب عدم فتح المنفذ 3389 على الإنترنت
يجري فحص TCP 3389 باستمرار من جهات مختلفة على الإنترنت، وتستجيب نافذة تسجيل الدخول إلى RDP لكل محاولة كلمة مرور. لا تفتح هذا المنفذ. اربط xrdp بعنوان loopback بدلاً من ذلك، ووصل إليه عبر نفق تثق به مسبقاً.
حرّر /etc/xrdp/xrdp.ini وغيّر المستمع في قسم [Globals].
[Globals]
port=tcp://.:3389يوثّق الملف المرفق هذه الصياغة في تعليقاته: يعني tcp://.:3389 العنوان 127.0.0.1:3389، بينما يعني tcp://:3389 كل واجهة. أعد تشغيل الخدمة وتحقق من النتيجة، لأن خطأ مطبعياً هنا قد يترك الخدمة على جميع العناوين دون ظهور خطأ واضح.
sudo systemctl restart xrdp
ss -tlnp | grep 3389يجب أن ترى 127.0.0.1:3389. ظهور 0.0.0.0:3389 يعني أن xrdp تجاهل تعديلك، ويحدث ذلك عادةً لأن السطر وُضع ضمن عنوان قسم مختلف في موضع لاحق من الملف.
افتح النفق الآن من جهازك.
ssh -N -L 3389:127.0.0.1:3389 you@vps.example.comيعني -N «افتح الاتصال، لكن لا تشغّل أي أمر»، ولذلك تكون الجلسة مخصصة لحمل المنفذ فقط. اترك تلك الطرفية قيد التشغيل، ووجّه عميل RDP إلى 127.0.0.1:3389. على عميل Linux، البرنامج هو FreeRDP 3، واسمه الثنائي في Ubuntu 24.04 هو xfreerdp3:
sudo apt install -y freerdp3-x11
xfreerdp3 /v:127.0.0.1:3389 /u:you /dynamic-resolution +clipboard /soundعلى Windows، استخدم mstsc المضمّن واكتب 127.0.0.1 في حقل الكمبيوتر. يطلب منك FreeRDP الوثوق بالشهادة عند الاتصال الأول، ويعرض Do you trust the above certificate? (Y/T/N)، وهذا متوقع مع شهادة snakeoil الموقّعة ذاتياً.
إذا أعاد ssh الإجابة bind [127.0.0.1]:3389: Address already in use، فهذا يعني أن شيئاً ما على جهازك يشغل 3389 بالفعل. غيّر الطرف المحلي باستخدام ssh -N -L 13389:127.0.0.1:3389 you@vps.example.com، ثم اتصل بـ 127.0.0.1:13389.
يصبح إنشاء نفق لكل شخص مرهقاً، ولذلك تكون الشبكة الخاصة حلاً أفضل للفريق. ضع الخادم خلف شبكة WireGuard VPN مستضافة ذاتياً، وامنحه عنوان النفق 10.8.0.1، واضبط port=tcp://10.8.0.1:3389 بحيث يستجيب xrdp داخل VPN فقط. في كلتا الحالتين، يجب ألا توجد قاعدة جدار ناري للمنفذ 3389 أصلاً. إذا لم تكن متأكداً مما تسمح به قواعدك الحالية، فابدأ من أساسيات جدار ufw الناري على VPS وتحقق قبل الاتصال، لا بعده.
كم يستهلك سطح المكتب البعيد من RAM على VPS بسعة 2 GB
يحدد سطح المكتب الذي تختاره ما إذا كانت خطة 2 GB مريحة أم غير قابلة للاستخدام. الأرقام أدناه قيم نموذجية مقربة للذاكرة المستخدمة مباشرة بعد تسجيل الدخول إلى Ubuntu 24.04، وهي مأخوذة من مقارنات منشورة وليست قياسات على جهازك. قِس استهلاك جهازك باستخدام free -m مباشرة بعد الاتصال.
البيانات وراء هذا الرسم البياني
[
{
"label": "LXQt",
"idle_ram_mb": 300
},
{
"label": "XFCE",
"idle_ram_mb": 400
},
{
"label": "MATE",
"idle_ram_mb": 500
},
{
"label": "KDE Plasma",
"idle_ram_mb": 800
},
{
"label": "GNOME",
"idle_ram_mb": "1,200"
}
]الفارق بين أسطح المكتب هذه هو العامل المهم. يستهلك LXQt نحو 300 MB، بينما يستهلك XFCE نحو 400 MB، ولذلك يترك أي منهما مساحة في خادم بسعة 2 GB لتشغيل متصفح. يحتاج GNOME إلى نحو 1,200 MB قبل فتح أي نافذة، وهذا يترك المتصفح على جهاز بسعة 2 GB في منافسة مع سطح المكتب على الذاكرة المتبقية.
المتصفح هو التكلفة الفعلية، وليس غلاف سطح المكتب. يستهلك المتصفح الحديث بين 150 و400 MB لكل علامة تبويب نشطة، ولذلك يستطيع VPS بسعة 2 GB يشغّل XFCE التعامل مع عدد قليل من علامات التبويب قبل أن يبدأ استخدام swap. أضف swap كي يتباطأ الجهاز بدلاً من إنهاء العمليات: sudo fallocate -l 2G /swapfile، ثم sudo chmod 600 /swapfile، وsudo mkswap /swapfile، وsudo swapon /swapfile، وأضف السطر المطابق في /etc/fstab كي يصمد بعد إعادة التشغيل. عندما يختفي شيء دون تحذير، شغّل dmesg | grep -i "killed process". يعني ذلك السطر أن قاتل العمليات عند نفاد الذاكرة في النواة أنهى العملية، ويكون المتصفح هو الضحية المعتادة.
وحدة المعالجة المركزية هي الحد الآخر، ومن السهل التقليل من أثرها. لا يحتوي VPS على GPU، لذلك يعود X إلى التصيير البرمجي عبر llvmpipe، ما يعني أن وحدة المعالجة المركزية ترسم كل بكسل. يظهر تمرير صفحة ثقيلة وتشغيل الفيديو كحمل عادي على وحدة المعالجة المركزية، وينخفض معدل الإطارات بدلاً من تجمد الجهاز. هذا هو الحد نفسه الذي تواجهه إذا كنت تتساءل هل يمكنك تشغيل الألعاب على VPS: بالنسبة إلى أي شيء ثلاثي الأبعاد، الإجابة هي لا، ولهذا السبب تحديداً.
الصوت والحافظة في جلسة xrdp
يستخدم Ubuntu 24.04 PipeWire للصوت، بينما كُتبت إعادة توجيه الصوت في xrdp بالاعتماد على PulseAudio. لذلك يوفّر التثبيت الجديد فيديو يعمل دون مشكلة، لكن من دون صوت. توفّر حزم Ubuntu الجسر اللازم.
sudo apt install -y pipewire-module-xrdp pulseaudio-utils alsa-utilsسجّل الخروج من جلسة RDP بالكامل، ثم سجّل الدخول مرة أخرى، لأن الوحدة تُحمّل عند بدء الجلسة. لا يكفي إعادة الاتصال. ثم تحقّق من داخل الجلسة:
pactl list short sinks
speaker-test -c 2 -t wav -l 1يجب أن ترى sink يذكر اسمه xrdp، وأن تسمع نغمة الاختبار عبر العميل. إذا لم يظهر sink خاص بـxrdp، فهذا يعني أن الوحدة لم تُحمّل في هذه الجلسة. يجب على العميل أيضاً طلب الصوت. هذا هو دور العلامة /sound في xfreerdp3، أو إعداد "Remote audio" ضمن Local Resources في عميل Windows.
تعمل حافظة النصوص في الاتجاهين بعد تشغيل xrdp-chansrv لجلسَتك، ويبدأ xrdp تشغيله نيابةً عنك. أكّد ذلك باستخدام pgrep -a xrdp-chansrv. إذا توقف النسخ واللصق عن العمل أثناء الجلسة، فهذا يعني أن العملية توقفت، وإعادة الاتصال تعيد تشغيلها. أما نسخ الملفات بدلاً من النصوص، فيستخدم قناة منفصلة تُسمى إعادة توجيه محركات الأقراص: يؤدي /drive:home,/home/you على xfreerdp3 إلى تثبيت مجلد محلي داخل الجلسة البعيدة.
نافذة polkit المنبثقة، وأعطال تسجيل الدخول الأولى
أكثر المفاجآت شيوعاً عند تسجيل الدخول للمرة الأولى هي ظهور مربع حوار بالنص Authentication is required to create a color managed device. السبب محدد. تطلب خدمة colord الإذن من polkit، ويمنح polkit هذا الإجراء بصمت فقط لجلسة يعتبرها محلية أمام الجهاز. لا تُعتبر جلسة RDP جلسة محلية أمام الجهاز، لذلك يطلب منك polkit كلمة المرور. يأتي Ubuntu 24.04 مع polkit 124، الذي أزال ملفات السلطة المحلية القديمة .pkla، لذلك لا تؤثر إطلاقاً على 24.04 أي إرشادات تطلب منك كتابة /etc/polkit-1/localauthority/50-local.d/45-allow-colord.pkla. اكتب قاعدة JavaScript بدلاً من ذلك.
/* /etc/polkit-1/rules.d/45-allow-colord.rules */
polkit.addRule(function(action, subject) {
if (action.id.indexOf("org.freedesktop.color-manager.") === 0 &&
subject.isInGroup("sudo")) {
return polkit.Result.YES;
}
});شغّل sudo systemctl restart polkit ثم أعد الاتصال. هناك عطَلان آخران يجدر بك معرفة أعراضهما.
يقبل مربع تسجيل الدخول كلمة المرور ثم يعود مباشرة. بدأت الجلسة ثم توقفت. اقرأ /var/log/xrdp-sesman.log أولاً، ثم اقرأ ~/.xsession-errors في مجلد home الخاص بك. ينتهي الأمر بهذه النتيجة إذا كان xorgxrdp مفقوداً، أو كان ~/.xsession يحدد سطح مكتب غير مثبّت، أو كان مجلد home غير قابل للكتابة، أو كان القرص ممتلئاً.
تتصل وترى شاشة رمادية مع مؤشر X. بدأ X، لكن سطح المكتب لم يبدأ. هذه هي مشكلة ~/.xsession مرة أخرى: شغّل xfce4-session يدوياً عبر SSH واقرأ الخطأ الذي يطبعه.
ما الذي يفعله خادم RustDesk المستضاف ذاتياً
ينقسم RustDesk إلى عمليتين. hbbs هو خادم المعرّف والاتصال الوسيط الذي تسجّل فيه العملاء، وhbbr هو خادم الترحيل الذي ينقل الجلسة عند فشل اتصال مباشر بين الطرفين. لا تشغّل أيٌّ منهما سطح مكتب. يأتي كلاهما من صورة واحدة، وهذا هو ملف compose الذي ينشره المشروع، بعد تغيير عنوان الترحيل إلى اسم المضيف الخاص بك:
services:
hbbs:
container_name: hbbs
image: rustdesk/rustdesk-server:latest
command: hbbs -r rustdesk.example.com:21117
ports:
- 21115:21115
- 21116:21116
- 21116:21116/udp
- 21118:21118
volumes:
- ./data:/root
restart: unless-stopped
hbbr:
container_name: hbbr
image: rustdesk/rustdesk-server:latest
command: hbbr
ports:
- 21117:21117
- 21119:21119
volumes:
- ./data:/root
restart: unless-stoppedشغّل الحاويات، ثم اقرأ المفتاح العام الذي أنشأه الخادم عند تشغيله لأول مرة:
sudo docker compose up -d
sudo cat ./data/id_ed25519.pubيحتاج كل عميل إلى اسم المضيف الخاص بك وإلى ذلك المفتاح العام. أدخل القيمتين ضمن إعدادات Network في عميل RustDesk. يبقى المفتاح الخاص المطابق في ./data/id_ed25519. إذا حذفت مجلد البيانات، فسينشئ الخادم زوجاً جديداً، وعندها يجب إعادة إعداد كل عميل باستخدام المفتاح الجديد. خذ نسخة احتياطية من ذلك المجلد. إذا أصبح هذا هو الأسلوب الذي يستخدمه فريقك للوصول إلى كل جهاز، بدلاً من كونه تجربة في عطلة نهاية الأسبوع، فمن المفيد اتباع بناء مخصص لخادم ترحيل RustDesk للاستفادة من معالجة مفاتيح Ed25519، واستخدام وسوم صور محددة بدلاً من latest، ومراعاة عرض النطاق الذي ستدفع تكلفته خطتك في النهاية.
يجب أن يسمح جدار الحماية بهذه المنافذ مباشرة. يستخدم hbbs منافذ TCP 21115 و21116 و21118، إضافة إلى UDP 21116. ويستخدم hbbr منفذي TCP 21117 و21119.
sudo ufw allow 21115/tcp
sudo ufw allow 21116/tcp
sudo ufw allow 21116/udp
sudo ufw allow 21117/tcp
sudo ufw allow 21118/tcp
sudo ufw allow 21119/tcpلماذا لا يعمل RustDesk خلف nginx أو Traefik
يحاول القراء الذين ينهون TLS لجميع الخدمات عبر Reverse Proxy واحد تطبيق ذلك، لكن المحاولة تفشل. يتحدث hbbs وhbbr باستخدام بروتوكولاتهما الثنائية الخاصة عبر TCP وUDP، وليس عبر HTTP. لا يوجد ترويسة Host يمكن التوجيه وفقاً لها، ولا طلب HTTP يمكن فحصه، لذلك لا يجد block server في nginx أو موجّه HTTP في Traefik ما يطابقه. المستمع UDP على المنفذ 21116 ليس مكوّناً من مكونات HTTP بأي مستوى.
هناك خياران يعملان. يمكن لـnginx إعادة توجيه منافذ TCP باستخدام block stream، وهذا إعادة توجيه عادية في الطبقة 4، وليس Reverse Proxy بالمعنى المعتاد. ويحمل المنفذان 21118 و21119 اتصالات WebSocket التي يستخدمها عميل RustDesk على الويب، وهي HTTP عادية، لذلك يمكن وضع هذين المنفذين خلف الـproxy. إذا فعلت ذلك، فأضف قواعد جدار ناري بحيث لا يتمكن من الوصول إلى 21118 و21119 إلا الـproxy، لأن hbbs يعتمد على ترويسة X-Real-IP في اتصالات WebSocket لمعرفة عنوان العميل الحقيقي.
متصفح مؤقت داخل حاوية
أحياناً كل ما تحتاج إليه هو متصفح نظيف بعنوان IP ثابت، مع عزله عن جهازك. يوفّر لك workspace داخل حاوية ذلك مع تثبيت عدد أقل بكثير من البرامج. يُعد Webtop من LinuxServer خياراً خفيفاً:
services:
webtop:
image: lscr.io/linuxserver/webtop:latest
container_name: webtop
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
volumes:
- /path/to/data:/config
ports:
- 127.0.0.1:3000:3000
- 127.0.0.1:3001:3001
shm_size: "1gb"
restart: unless-stoppedيخدم المنفذ 3000 اتصالات HTTP، بينما يخدم المنفذ 3001 اتصالات HTTPS. يمكنك الوصول إلى سطح المكتب من علامة تبويب في المتصفح دون الحاجة إلى عميل RDP على الإطلاق. تشمل وسوم الصور XFCE وKDE وMATE وi3 على عدة توزيعات أساسية. توضّح وثائق المشروع مخاطر ذلك صراحةً: تملك الحاوية صلاحيات مميّزة على المضيف، وتتضمن طرفية مع وصول إلى sudo دون كلمة مرور. لذلك يجب ألا تعرّضها للإنترنت من دون حماية. ولهذا تُربط المنافذ المذكورة أعلاه بالعنوان 127.0.0.1 بدلاً من نشرها على جميع العناوين. يمكنك الوصول إليها عبر نفق SSH نفسه أو VPN نفسه الذي استخدمته مع xrdp.
يقدّم Kasm Workspaces الفكرة نفسها، ولكن على نطاق أكبر بكثير، مع وحدة تحكم ويب وحسابات مستخدمين وحاويات مستقلة لكل جلسة تُعاد تهيئتها عند انتهاء الجلسة. يحتاج إلى موارد أكبر مما يوفره VPS صغير. اعتباراً من August 2026، الحد الأدنى الموثّق هو 2 من أنوية CPU و4 GB من الذاكرة و50 GB من SSD، وتستخدم كل جلسة مستخدم افتراضياً 2 من الأنوية و2768 MB إضافية. لن تتمكن خطة بسعة 2 GB من تشغيله. يتكون التثبيت من تنزيل وبرنامج نصي:
cd /tmp
curl -O https://kasm-static-content.s3.amazonaws.com/kasm_release_1.17.0.7f020d.tar.gz
tar -xf kasm_release_1.17.0.7f020d.tar.gz
sudo bash kasm_release/install.shVNC ومتى يظل مناسباً
يرسل VNC تحديثات framebuffer بدلاً من أوامر الرسم، لذلك يبدو أثقل من RDP على اتصال بطيء، كما أنه لا يوفّر قناة للصوت. يظل مناسباً في حالة واحدة: عندما تريد جلسة سطح مكتب تستمر في العمل بعد قطع الاتصال، وتريد استعادة الجلسة نفسها عند العودة. يوفّر TigerVNC ذلك. يربط vncserver -localhost yes :1 Xvnc بالعنوان 127.0.0.1 على TCP 5901، ويرفض الاتصالات من أي مكان آخر، لذلك تنشئ نفقاً له بالطريقة نفسها المستخدمة مع xrdp عبر ssh -N -L 5901:127.0.0.1:5901 you@vps.example.com. لا تنشر منفذ VNC أبداً. تحمي معظم خوادم VNC كلمة المرور أثناء المصافحة فقط، ولا تحمي أي شيء بعدها، ولذلك تكون محتويات الجلسة قابلة للقراءة عبر الشبكة عند استخدام منفذ عام.
هل VPS مناسب ليكون سطح مكتب؟
كجهاز تستخدمه يومياً، لا. فالأسباب كثيرة. لا توجد وحدة GPU، لذلك ينفّذ CPU جميع عمليات الرسم. كل ضغطة مفتاح تنتظر ذهاب الطلب عبر الشبكة وعودة الاستجابة، وزمن تأخير قدره 40 ms قد يكون مقبولاً في SSH لكنه ملحوظ في محرر نصوص. يُضغط الفيديو مرتين: مرة في الموقع، ومرة أخرى بواسطة برنامج ترميز RDP. تكون ملفاتك على قرص لا تملكه، كما أن الاستخدام المكثف لسطح المكتب يستهلك حصة النطاق الترددي الشهرية التي حُدّدت أصلاً لخادم ويب.
لكنه مناسب جداً كجهاز مؤقت يمكن التخلص منه، والخصائص نفسها تفسّر ذلك. يكون عنوان IP ثابتاً وتملكه مركز بيانات، وهذا ما تحتاج إليه عندما يجب أن ترى إحدى الخدمات عنواناً ثابتاً. يمكن إعادة إنشاء الجهاز من image خلال دقائق، لذلك لا تكلّفك الجلسة التي التقطت شيئاً ضاراً أي شيء. الجهاز معزول عن عتادك الحقيقي، ويواصل التشغيل عندما يكون حاسوبك المحمول مغلقاً. وتجعل الفوترة بالساعة سطح المكتب المؤقت رخيصاً.
إذا كنت لا تزال تحدد الغرض من هذا الجهاز، فستجد القائمة العملية لما يجيده VPS مفيدة قبل تثبيت سطح مكتب عليه. وإذا كان سبب رغبتك في سطح المكتب هو تشغيل تطبيق Windows واحد، فقارن ذلك أولاً بـالفروق الفعلية بين Linux وWindows Server، لأن الترخيص يغيّر تكلفة هذا الخيار.
FAQ
هل يمكنني تشغيل سطح مكتب بعيد على VPS بسعة 2 GB؟
نعم، باستخدام سطح مكتب خفيف. يستهلك XFCE أو LXQt نحو 300 إلى 400 MB بعد تسجيل الدخول، ما يترك مساحة كافية لمتصفح بعدة علامات تبويب. يستهلك GNOME أو KDE Plasma على 2 GB معظم الذاكرة، ولا يترك إلا القليل جداً للتطبيقات. أضف ملف swap بسعة 2 GB حتى يؤدي ضغط الذاكرة إلى إبطاء الجهاز بدلاً من إنهاء العمليات، وعندما يختفي شيء من دون رسالة، افحص dmesg | grep -i "killed process" بحثاً عن قاتل العمليات عند نفاد ذاكرة kernel.
هل ينبغي أن أفتح المنفذ 3389 في جدار VPS الناري؟
لا. يجري فحص TCP 3389 باستمرار، وتدعو نقطة تسجيل الدخول المكشوفة إلى RDP إلى تخمين كلمات المرور. عيّن port=tcp://.:3389 في /etc/xrdp/xrdp.ini حتى يستمع xrdp على 127.0.0.1 فقط، وتحقق من ذلك باستخدام ss -tlnp | grep 3389، ثم اتصل به باستخدام ssh -N -L 3389:127.0.0.1:3389 you@vps.example.com. إذا كان عدد المستخدمين أكثر من شخص أو شخصين، فاربط xrdp بعنوان WireGuard بدلاً من loopback.
لماذا يطلب xrdp رسالة "Authentication is required to create a color managed device"؟
تطلب خدمة colord الإذن من polkit، ولا يمنح polkit هذا الإجراء بصمت إلا لجلسة محلية أمام الجهاز. جلسة RDP ليست جلسة محلية أمام الجهاز، لذلك تظهر مطالبة بكلمة المرور عند كل تسجيل دخول. في Ubuntu 24.04، لا يفعل الإصلاح القديم .pkla شيئاً، لأن polkit 124 أزال ملفات local authority. أنشئ /etc/polkit-1/rules.d/45-allow-colord.rules بحيث يحتوي على قاعدة JavaScript تُرجع polkit.Result.YES لمعرّفات الإجراءات التي تبدأ بـorg.freedesktop.color-manager.، ثم شغّل sudo systemctl restart polkit.
هل يمكنني وضع خادم RustDesk مستضاف ذاتياً خلف nginx أو Traefik؟
ليس الخدمة الرئيسية. يستخدم hbbs وhbbr بروتوكولات ثنائية خاصة بهما بدلاً من HTTP، لذلك لا يوجد رأس Host يمكن التوجيه بناءً عليه، ولا يمكن لـUDP 21116 عبور وكيل HTTP إطلاقاً. افتح TCP من 21115 إلى 21119 وUDP 21116 في الجدار الناري، ودَع العملاء يتصلون مباشرة. أما منفذا websocket، 21118 و21119، اللذان يستخدمهما عميل الويب، فهما يعملان عبر HTTP ويمكن وضعهما خلف وكيل. إذا فعلت ذلك، فقيّدهما في الجدار الناري بحيث لا يصل إليهما إلا الوكيل، لأن hbbs يثق بـX-Real-IP في تلك الاتصالات.
لماذا لا يوجد صوت في جلسة xrdp؟
يستخدم Ubuntu 24.04 PipeWire، بينما صُممت إعادة توجيه الصوت في xrdp لـPulseAudio، لذلك لا يتوفر الصوت حتى تثبّت الجسر. شغّل sudo apt install -y pipewire-module-xrdp، ثم سجّل الخروج من الجلسة بالكامل وسجّل الدخول مرة أخرى، لأن الوحدة تُحمّل عند بدء الجلسة، ولن يؤدي إعادة الاتصال إلى تحميلها. تحقّق باستخدام pactl list short sinks من وجود sink يحمل اسم xrdp، وتأكد من أن العميل يطلب الصوت؛ وهذا هو الخيار /sound في xfreerdp3 أو "Remote audio" في عميل Windows.