Relayium

إرسال ملف إلى شخص ما عبر الشبكات باستخدام واجهة Relayium الطرفية (CLI)

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

أحيانًا لا يكون الجهاز الآخر جهازك ولا يمكنك الدخول إليه عبر SSH — ملف لزميل في مكتب آخر، أو نسخة بناء لعميل، أو أرشيف لصديق في الطرف الآخر من البلاد. يقوم relayium send وreceive بنقله مباشرةً بينكما عبر الشبكات، بالاعتماد فقط على رمز اقتران قصير تُصدره واجهة CLI لديك عند الإرسال.

الاتصال من الند للند (P2P) ومُشفَّر من الطرف إلى الطرف. لا يمر عبر Relayium سوى مصافحة تعارف ضئيلة للغاية تُعرِّف الطرفين ببعضهما؛ أما بايتات الملف فلا تمر أبدًا.

قبل أن تبدأ

كل ما يلي هو relayium CLI، فثبّته أولًا إن لم تكن قد فعلت. على macOS وLinux، يُسقط أمر واحد ملفًا ثنائيًا مُسبق البناء في PATH الخاص بك:

curl -fsSL https://relayium.com/install.sh | sh

أرسِل أولًا، ثم مرِّر الرمز الذي يُطبَع لك

ما تحتاج إليه

  • واجهة CLI على الجهازين معًا. يطبع relayium version سطر إصدار على كلٍّ منهما، وإذا ردَّت الصَدفة بـ «command not found» فهي لم تُثبَّت هناك بعد.
  • مُرسِل مُسجَّل الدخول. يطبع relayium whoami بريد الحساب، وإصدار رمز اقتران يستلزم relayium login أولًا. أما جهاز الاستقبال فلا يسجّل الدخول إطلاقًا.
  • وجودكما معًا أمام الطرفية في الوقت نفسه. عمر الرمز خمس دقائق، فاتفقا على اللحظة قبل إصداره.
  • وسيلة لنقل ستة أرقام خارج القناة — مكالمة، أو نافذة محادثة، أو الغرفة التي تجلسان فيها معًا.

سجِّل الدخول مرة واحدة عبر relayium login، ثم اكتفِ بالإرسال. تُصدر واجهة CLI رمز اقتران وتطبعه مع الأمر الذي سينفّذه الطرف الآخر بالضبط، ثم تنتظر. مرِّر هذا الرمز خارج القناة — قُله في مكالمة، أو ألقِه في محادثة:

  1. على جهاز الإرسال، سجّل الدخول مرة واحدة. تخطَّ هذه الخطوة إذا كان relayium whoami يطبع بريد حسابك بالفعل.

    relayium login
  2. من المجلد الذي يوجد فيه الملف، ابدأ الإرسال. تُصدر واجهة CLI الرمز، وتطبع الأمر الخاص بالطرف الآخر، ثم تنتظر.

    relayium send ./release.zip
  3. اقرأ الأرقام الستة المطبوعة على الطرف الآخر خارج القناة. تتوقف عن العمل بعد خمس دقائق من إصدارها.

  4. على جهاز الاستقبال، وداخل المجلد الذي يجب أن تصل إليه الملفات، شغّل الأمر الذي ظهر للمُرسِل. أضِف مجلدًا بعده لإنزالها في مكان آخر.

    relayium receive 483920
    relayium receive 483920 ./downloads
  5. اترك الطرفيتين مفتوحتين حتى تعود صَدَفة الاستقبال إلى مِحَثِّها. هذه جلسة حية واحدة، وإغلاق أي طرف يوقف النقل.

كيف يبدو التشغيل الناجح

يطبع المُرسِل كتلة التسليم أولًا وينتظر، ثم يطبع رمز التحقق والمسار الذي حصل عليه. تعرض الطرفيتان رمز التحقق نفسه، وتنتهيان كلتاهما بالرمز 0.

# على جهاز الإرسال
Code: 483920   (valid 5 minutes)
On the other machine:  relayium receive 483920
  not installed there?  curl -fsSL https://relayium.com/install.sh | sh
waiting for the receiver…
verification code (SAS): 271044 — not the pairing code; compare it on both ends to rule out a substituted endpoint
path: direct

التحقق برمز SAS

عندما يتصل الطرفان، تطبع كلتا الطرفيتين رمز SAS (سلسلة المصادقة القصيرة) المكوَّن من 6 أرقام نفسه، والمُشتَق من بصمات شهادات TLS المثبّتة. قارنهما خارج القناة — اقرأ الرمز بصوت عالٍ في المكالمة — لتأكيد أن البصمات لم تُستبدل وأن خدمة الالتقاء لم تنتحل شخصية أي طرف. يصادق SAS على الطرفين؛ ولا يثبت كل قفزة في مسار الشبكة.

لأقوى حماية، أضِف --verify: عندئذٍ ينتظر النقل حتى تؤكد أن الرمزين متطابقان قبل أن يتحرك بايت واحد.

relayium send --verify ./release.zip

مباشر فقط — مجاني، أو يفشل

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

تعمل أوامر send/receive وtext في Relayium CLI باتصال P2P مباشر فقط: فلا تُمرَّر بايتات الملفات أو الرسائل عبر TURN أو أي خادم Relayium آخر. وإذا تعذّر على الطرفين إنشاء اتصال مباشر، تفشل الجلسة بدل الرجوع إلى مُرحِّل.

إن واجهت هذا، فالحل الموثوق هو daemon direct بين خادمين يمكن الوصول إليهما، أو push عبر SSH، أو رابط مخزّن تنشئه بأمر relayium up.

حين لا ينجح الأمر

أربعة أعطال تفسّر تقريبًا كل محاولة فاشلة. لكل واحد منها سطر تقرؤه أو أمر تشغّله يحسم الأمر، فلن تضطر أبدًا إلى تخمين أي الطرفين هو السبب.

العَرَض، الفحص، الإصلاح

لا يبدأ المُرسِل أصلًا ويطبع «minting a pairing code needs an account».
relayium whoami
# not logged in (run `relayium login`)

لا توجد بيانات اعتماد محفوظة على هذا الجهاز. شغّل relayium login ووافِق في المتصفح، فيطبع whoami بعدها بريد الحساب ويمضي الإرسال. لم يُصدَر أي رمز بعد، فلم يُهدَر شيء.

يُدخِل المُستقبِل الرمز فترفضه نقطة التعارف.
# على جهاز الإرسال — تذكر كتلة التسليم مدة الصلاحية بالضبط
relayium send ./release.zip
Code: 483920   (valid 5 minutes)

انتهى مفعول الرمز. اضغط Ctrl-C على جهاز الإرسال، وشغّل relayium send ./release.zip من جديد، ثم مرِّر الأرقام الستة الجديدة خلال الدقائق الخمس التي تذكرها كتلة التسليم الجديدة.

تطبع الطرفيتان رمزَي تحقق مختلفين.
relayium send --verify ./release.zip

توقّف ولا تُرسِل الملف. اختلاف الرمزين يعني أن بصمات الشهادات المثبّتة على الطرفين غير متطابقة، أي أن الطرف المقابل ليس الجهاز الذي تظنه. أعِد التشغيل مع --verify، فيتوقف النقل عند هذه المقارنة بانتظار تأكيدك، وتحقّق مع الشخص الآخر من الجهاز الذي يعمل عليه.

«no direct connection to the peer (both ends behind strict NAT?)».
relayium send ./release.zip
# no direct connection to the peer (both ends behind strict NAT?): …

لم يستطع أي من الطرفين الوصول إلى الآخر، ولا تملك واجهة CLI أي مسار عبر مُرحِّل لبايتات الملفات، وهذا بحكم التصميم. انقل أحد الطرفين إلى شبكة ذات عنوان يمكن الوصول إليه — خادم، أو نقطة اتصال من الهاتف — أو ارفع الملف بـ relayium up ومرِّر رابط التنزيل بدلًا من ذلك.

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

من أين يأتي رمز الاقتران؟

‏Relayium هو من يُصدره. شغِّل relayium send ./release.zip (بعد relayium login) فتطبع واجهة CLI رمزًا من 6 أرقام صالحًا لخمس دقائق، مع الأمر الذي سينفّذه الطرف الآخر بالضبط. لا يمكنك اختياره بنفسك — فالخادم لا يقبل إلا الرموز التي أصدرها هو.

هل يُرفَع الملف إلى أي مكان؟

لا. يتدفق الملف مباشرةً بينكما، مُشفَّرًا من الطرف إلى الطرف. لا يمر عبر Relayium سوى مصافحة تعارف صغيرة لتعريف الطرفين — أما الملف فلا يمر أبدًا.

ماذا لو تعذَّر علينا الاتصال؟

إذا كان الطرفان خلف NAT صارم بلا عنوان يمكن الوصول إليه، فلا يمكن إنشاء الاتصال المباشر ويفشل النقل — فواجهة CLI لا تملك احتياطيًا عبر مُرحِّل، وهذا بحكم التصميم. استخدم daemon direct بين خادمين يمكن الوصول إليهما، أو push عبر SSH، حين لا يتوفر مسار مباشر.

كيف أعرف أنه فعلًا الشخص الصحيح على الطرف الآخر؟

تطبع كلتا الطرفيتين رمز SAS متطابقًا من 6 أرقام مُشتَقًا من بصمات شهادات TLS المثبّتة. قارنهما خارج القناة؛ يؤكد التطابق أن البصمات لم تُستبدل وأن خدمة الالتقاء لم تنتحل شخصية أي طرف. يصادق الرمز على الطرفين، لا على كل قفزة في مسار الشبكة. أضِف --verify لتشترط ذلك التأكيد قبل أن يتحرك أي بايت.

أرسِل ملفك التالي مباشرةً إلى شخص على شبكة أخرى — مُشفَّرًا من الطرف إلى الطرف، ومجانًا.

احصل على CLI

تابِع القراءة