Relayium

شغّل عقدتك الخاصة: استخدم مُرحِّل وتخزين Relayium مجانًا

آخر تحديث: 2026-07-22

عمليات النقل عبر الشبكات والروابط المُخزَّنة تستهلك عرض نطاق المُرحِّل والقرص، وهذا يكلّفنا مالًا، لذا تعمل ضمن حصة مجانية وتصبح مدفوعة بعد تجاوزها. هناك طريقة لتفادي ذلك: شغّل عقدتك للترحيل/التخزين، اربطها بحسابك، فتتدفق عمليات نقلك عبر عقدتك بدل عقدتنا — لا شيء يُحسَب، ولا شيء يُفوتَر.

هذا يختلف عن الاستضافة الذاتية لخادم Relayium بالكامل. تبقى تستخدم حساب relayium.com المعتاد ونفس التطبيقات؛ أنت فقط تضيف عقدة تملكها لتحمل حركتك. يأخذك هذا الدليل من جهاز Linux جديد إلى عقدة متصلة في نحو خمس دقائق.

لماذا تشغّل عقدتك الخاصة

سببان. الأول هو التكلفة: عقدة تملكها تحمل حركة مُرحِّلك وتخزينك مباشرة، فلا تلمس أبدًا بنيتنا المحسوبة بالاستهلاك ولا يوجد ما يُفوتَر — استخدامك مجاني مهما كان كبيرًا.

الثاني هو التحكم: البايتات المُرحَّلة والكتل المُخزَّنة تعيش على عتاد تشغّله أنت، تحت تحكمك التشغيلي الخاص. يبقى النقل الفوري مشفَّرًا من الطرف إلى الطرف طوال الطريق، لذا حتى عقدتك الخاصة لا ترى سوى نص مُشفَّر.

ما الذي تحتاجه

خادم Linux يمكن الوصول إليه من الإنترنت — سواء VPS رخيص أو جهاز يعمل دائمًا في المنزل، كلاهما يفي بالغرض. ستحتاج صلاحية root (أو sudo)، والقدرة على فتح بضعة منافذ واردة. كلٌّ من amd64 وarm64 مدعوم.

الخطوة 1 — احصل على أمر التثبيت

سجّل الدخول في relayium.com، افتح صفحة الحساب (/me)، مرّر إلى «عُقدي»، وانقر على «إضافة عُقدة». ستحصل على أمر تثبيت لمرة واحدة مع رمز مضمَّن فيه — يُعرض الرمز مرة واحدة فقط، فانسخه فورًا. يبدو هكذا:

curl -fsSL https://relayium.com/install-node.sh | sudo RELAYIUM_CENTRAL_URL=https://relayium.com RELAYIUM_NODE_TOKEN=<your-token> RELAYIUM_NODE_STORAGE_DIR=/var/lib/relayium-node/blobs sh

الخطوة 2 — شغّله على خادمك بصلاحية root

الصق الأمر على خادمك. إنه يمرّر مثبّتنا إلى sh: يقوم المثبّت بتنزيل ثنائي relayium-node والتحقق من مجموعه، وتثبيته في /usr/local/bin، وكتابة خدمة systemd وتشغيلها. الـ sudo في البداية هو ما يتيح له تثبيت الخدمة؛ إن كنت أصلًا root فهو عملية لا أثر لها.

لأنها خدمة systemd، تُفعَّل العقدة عند الإقلاع وتعيد تشغيل نفسها إذا تعطّلت — تبقى متصلة عبر عمليات إعادة التشغيل دون أي عمل إضافي. إذا رأيت `relayium-node: command not found`، فأنت شغّلت الثنائي مباشرةً بدل المثبّت أعلاه — الأمر ذو السطر الواحد هو ما يضع الثنائي في مكانه.

هل تشغيل هذا المثبّت بصلاحية root آمن؟

قبل كل شيء: العقد التي تشغّلها بنفسك تعمل بالشيفرة ذاتها والتحصين ذاته الذي تعمل به عقد أسطولنا نحن — الثنائي نفسه من الإصدار المُوقَّع نفسه، يثبّته السكربت نفسه، تحت وحدة systemd نفسها. الفارق الوحيد هو لمن يعود الجهاز. وكل ما يلي ينطبق على الاثنين معًا.

سؤال في محله عن أمرٍ يمرّر سكربتًا من الإنترنت إلى صدفة root، وهو يستحق جوابًا محددًا لا مجرد طمأنة. صلاحية root تُستخدم للتثبيت فقط، ولا تُستخدم في أي شيء تفعله العقدة بعد ذلك. يُنشئ المثبّت حسابًا نظاميًا اسمه relayium-node بلا صدفة دخول وبلا مجلد منزل، ويكتب وحدات systemd، ويشغّل الخدمة، ثم ينتهي. أما العقدة نفسها فلا تعمل بصلاحية root أبدًا: وحدتها تضبط User=relayium-node، فمنذ اللحظة التي تتصل فيها هي حساب غير مُمتاز لا يملك شيئًا آخر على جهازك. (التحديث التلقائي، وهو مفعّل افتراضيًا، يضيف بالفعل وحدة ثانية تعمل بصلاحية root — والقسم التالي مخصص بالكامل لما تستطيع تلك الوحدة فعله وما لا تستطيعه.)

وحول هذا الحساب تضع الوحدة صندوق عزل من systemd. كل سطر فيه موجَّه إلى شيء قد يمدّ إليه مهاجمٌ يده لو استولى يومًا على عملية العقدة. ولا شيء هنا مخفيّ عنك: بعد التثبيت اقرأ الوحدة كاملة بـ `cat /etc/systemd/system/relayium-node.service`.

في الوحدةما الذي يمنعه إن اختُرقت العقدة يومًا
User=relayium-nodeالمهاجم مجرد مستخدم لا يملك شيئًا، وليس root.
ProtectHome=yes‏/home و /root غير مرئيين — لا مفاتيح SSH خاصة ولا بيانات مشاريع أخرى.
ProtectSystem=strictنظام الملفات كله للقراءة فقط؛ لا يمكن تعديل أي ملف نظام.
ReadWritePaths=المواضع الوحيدة القابلة للكتابة هي مجلد حالة العقدة نفسها، ومجلد التخزين إن أعددت واحدًا. وأي كتابة في مكان آخر تفشل.
NoExecPaths=لا شيء في مجلد التخزين قابل للتنفيذ — الملف المرفوع لا يمكن تشغيله.
NoNewPrivileges=yesلا طريق للعودة إلى root؛ حيل تصعيد الصلاحيات المعتادة مغلقة.
CapabilityBoundingSet=فارغة — لا قدرات Linux على الإطلاق.
ProtectKernelTunables=yes، ProtectKernelModules=yesالنواة بعيدة المنال: لا تغيير لـ sysctl، ولا تحميل وحدات، ولا زرع rootkit.

ما الذي يستطيع المحدِّث التلقائي فعله وما لا يستطيعه

يُعِدّ المثبّت أيضًا مؤقّت تحديث ذاتي، مفعّلًا افتراضيًا: يسأل relayium-node-update.timer موقع relayium.com كل عشر دقائق تقريبًا عن الإصدار الذي ينبغي أن تشغّله هذه العقدة. هذه وحدة ثانية، وهي تعمل بصلاحية root، لذا فهي مدينة لك بشرحٍ خاص بها.

المركز لا يرسل ثنائيًا أبدًا. جوابه كله رقم إصدار، وعلَمان (هل يجوز لهذه العقدة أن تنتقل الآن، وهل هذا تخفيضٌ متعمَّد للإصدار) وسطر قصير يوضّح السبب — لا بايتات ولا رابط ولا أمر. بعدها تجلب العقدة ذلك الإصدار بنفسها، وتقارن SHA-256 للأرشيف بملف checksums.txt الخاص بالإصدار، ثم تتحقق من توقيع ECDSA P-256 على ذلك الملف باستخدام مفتاح عام مُضمَّن داخل الثنائي نفسه الذي يجري التحقق. والنصف الخاص من هذا المفتاح ليس على الخادم الذي يجيب عن هذه الاستعلامات. فحتى لو اختُرق المركز، فأقصى ما يستطيعه هو تسمية إصدار؛ ولا يستطيع صناعة ثنائي يجتاز التحقق.

المحدِّث والعقدة عمليتان منفصلتان بصلاحيتين متعاكستين. فـ relayium-node.service هو صندوق العزل الموصوف أعلاه — وتحت ProtectSystem=strict لا يستطيع الكتابة في /usr/local/bin إطلاقًا، أي أن العقدة لا تستطيع أبدًا تعديل أي ثنائي، بما فيه ثنائيها هي. أما relayium-node-update.service فهو وحدة oneshot صغيرة تعمل بصلاحية root ولا تحمل صندوق عزل عن قصد، لأن استبدال ملف في /usr/local/bin يتطلب بالضبط تلك الصلاحية التي وُجد صندوق عزل العقدة كي يمنعها عنها. وحصر هذه القدرة في وحدة واحدة أحادية الغرض، بدل إرخاء تحصين العقدة نفسها، هو مغزى هذا الفصل كله: العملية التي تملك root لا تفعل شيئًا سوى تبديل الثنائيات، والعملية الحبيسة لا تستطيع أن تمسّ ثنائيًا أبدًا.

والتحديث الذي يسوء يتراجع عن نفسه. يبقي المحدِّث الثنائي القديم بجوار الجديد، ويعيد تشغيل الخدمة، ثم يترقّب نبضة لعشر دقائق كحد أقصى؛ فإن لم يبلّغ الإصدار الجديد عن سلامته خلال هذه المهلة أعاد الثنائي القديم إلى مكانه، وأعاد التشغيل من جديد، وسجّل الإصدار المعطوب حتى لا تُعاد المحاولة به. ولا يُقرأ أي ملف مخزَّن ولا يُنقل ولا يُحذف في أيٍّ من هذا.

إزالة عقدتك

الإلغاء سكربت واحد، وهو نفسه سواء كانت عقدتك تخزّن الملفات أو تُرحّل فقط. يزيل الوحدات والثنائي والإعدادات وحساب الخدمة، ويحاول قدر استطاعته إبلاغ relayium.com بأن العقدة لم تعد موجودة. وإن فشل ذلك الاتصال فهو سطر واحد على طرفيتك لا إلغاء معطوب — ويطبع معرّف العقدة كي تُعلَّم كمُزالة يدويًا.

نزّله وتحقّق منه ثم شغّله. تمريره مباشرة إلى `sh` يعني أن خطأ 404 أو انقطاعًا عابرًا في الشبكة سيجعل الأمر كله لا يطبع شيئًا وينتهي برمز 0، وهو ما يبدو كإلغاء ناجح.

لا يزيل إلا ما يعرفه: أي شيء غير متوقع في دليل الحالة أو دليل التخزين يُحتفظ به ويُبلَّغ عنه بدل حذفه.

curl -fsSL https://relayium.com/uninstall-node.sh -o uninstall-node.sh && \
  [ -s uninstall-node.sh ] && sudo sh uninstall-node.sh

الخطوة 3 — افتح المنافذ الواردة

البقاء متصلًا (نبضة إلى relayium.com) يحتاج وصولًا صادرًا فقط، وهو متوفر لديك بالفعل. لكن لكي يرحّل الأقران فعلًا عبر عقدتك ويخزّنوا عليها، يجب أن تكون منافذها الواردة قابلة للوصول. إن كان المضيف يشغّل جدار حماية، فافتحها — مع ufw يكون ذلك:

sudo ufw allow 3478/udp        # TURN
sudo ufw allow 8081/tcp        # storage
sudo ufw allow 49152:65535/udp # relay

الخطوة 4 — تأكّد ووجّه الحركة عبرها

عند العودة إلى صفحة الحساب، تظهر عقدتك تحت «عُقدي» وتتحوّل إلى «متصل» خلال نحو 30 ثانية. من ثم تفضّل عمليات نقل حسابك عقدتك الخاصة تلقائيًا.

لفرض ذلك — بحيث لا ترجع أبدًا إلى بنيتنا المشتركة — فعّل «استخدم عُقدي الخاصة فقط للترحيل/التخزين» في الصفحة ذاتها. مع تفعيله، إذا لم تكن أيٌّ من عقدك متصلة يفشل النقل بدل أن يستخدم عقدنا بصمت.

الأسئلة الشائعة

ظهر لي «‎relayium-node: command not found‎» — ما الخطأ؟

لقد شغّلت ثنائي relayium-node قبل تثبيته. استخدم أمر التثبيت ذا السطر الواحد من صفحة الحساب (بصيغة curl … | sudo … sh): إنه ينزّل الثنائي، ويضعه في مسار PATH، ويشغّله كخدمة. أنت لا تثبّت relayium-node بشكل منفصل أبدًا.

هل تبقى العقدة متصلة بعد إعادة التشغيل؟

نعم. يسجّل المثبّت خدمة systemd مُفعَّلة عند الإقلاع ومضبوطة على Restart=always، فتعود بعد إعادة التشغيل وتعيد تشغيل نفسها إذا تعطّلت. لا شيء إضافي لتشغيله.

كيف يختلف هذا عن الاستضافة الذاتية لـ Relayium؟

تشغيل عقدتك الخاصة يبقي حساب relayium.com المعتاد وتطبيقاتك ويضيف فقط عقدة تملكها لتحمل حركتك. أما الاستضافة الذاتية فتشغّل حزمة الخادم بالكامل (الحسابات، تطبيق الويب، الإشارة) على نطاقك الخاص — راجع دليل «الاستضافة الذاتية لـ Relayium» لذلك.

هل يمكن لأي شخص آخر استخدام عقدتي أو رؤية بياناتي؟

لا. ترتبط العقدة بحسابك عبر رمزها ولا تحمل سوى حركة حسابك. النقل الفوري مشفَّر من الطرف إلى الطرف والكتل المُخزَّنة نص مُشفَّر لا تستطيع عقدتك قراءته. بياناتك وإعدادات عقدتك قابلة للاستخدام من قِبلك أنت وحدك.

سجّل الدخول، افتح صفحة حسابك، وأضف عقدتك الأولى في أقل من دقيقة.

افتح صفحة الحساب

تابع القراءة