Relayium

استقبال الملفات من سطر الأوامر

آخر تحديث: 2026-09-01

الإرسال نصف القصة فقط — عاجلًا أم آجلًا ستكون أنت في الطرف المُستقبِل: زميل يريد أن يسلّمك ملفًا عبر الإنترنت، أو أحد أجهزتك يريد أن يمرّره إلى آخر، أو ترك لك أحدهم رابطًا مُخزَّنًا لتجلبه متى شئت. يغطي Relayium CLI الحالات الثلاث بأمر مختلف لكلٍّ منها، ولا تحتاج أيٌّ منها حسابًا في جهة الاستقبال.

اختر receive حين يرسل إليك شخص آخر برمز اقتران، وserve حين تريد صندوق وارد دائمًا تستطيع الأجهزة الموثوقة الدفع إليه في أي وقت، وdown حين أعطاك المُرسِل رابطًا مُشفَّرًا مُخزَّنًا وقد يكون غير متصل بالفعل.

ثلاث طرق للاستقبال، ومتى تنطبق كل منها

الأمر الذي تشغّله يعتمد على من يبدأ النقل وكيف يعرف الجهازان أحدهما الآخر:

  • ‏‎relayium receive <code> [destdir]‎ — يرسل إليك شخص عبر الشبكات باستخدام رمز اقتران أصدره (من CLI أو تطبيق Relayium أو صفحة الويب) ثم أبلغك به خارج القناة. مُشفَّر من الطرف إلى الطرف، ويمر عبر مُرحِّل كلما أصدره الخادم للرمز، مع رمز SAS يمكنك مقارنته.
  • ‏‎relayium serve [--dir D] [--port N] [--once] [--allow-delete]‎ — يستمع هذا الجهاز لعمليات الدفع daemon direct عبر relayium://، على المنفذ 9031 افتراضيًا.
  • ‏‎relayium down <link> [destdir]‎ — جلب رابط مُخزَّن وفك تشفيره؛ لا حاجة إلى حساب للتنزيل (أما relayium pull القديم عبر SSH فقد أُوقف).

receive: شخص يرسل إليك ملفًا عبر الشبكات

ما تحتاجه قبل الخطوة 1

  • الـ CLI على هذا الجهاز. يطبع relayium version سطر إصدار، وإذا ردّت الصدفة بـ command not found فهو غير مثبَّت هنا بعد.
  • مرسِل مسجَّل الدخول وجالس أمام طرفيته الآن. وهو وحده من يحتاج حسابًا — أما أنت فلا تسجّل الدخول للاستقبال إطلاقًا.
  • الأرقام الستة، تصلك عبر قناة خارجة عن المسار. وهي تعيش خمس دقائق من لحظة توليد الـ CLI لديه لها، فاتفقا على اللحظة أولًا.
  • وسيلة تقرأ بها ستة أرقام أخرى عليه بعد ذلك: فالـ SAS يُقارَن نطقًا لا على الشاشة.
  • يمكن أن يكون الطرف الآخر relayium send أو relayium pair أو تطبيق Relayium أو صفحة الويب — فكلٌّ منها يُصدر رمزًا يمكنك استقباله بـ receive.

هذا هو نصف الاستقبال من relayium send. يشغّل الطرف الآخر ‎relayium send <path>‎ من جهته (بعد relayium login)، فتُصدر واجهة CLI لديه رمزًا من 6 أرقام صالحًا لـ 5 دقائق وتطبعه. ثم يخبرك به عبر أي قناة تثقان بها كلاكما — مكالمة، رسالة محادثة. تشغّل أنت receive بذلك الرمز:

relayium receive 483920

# أو إلى مجلد محدد
relayium receive 483920 ./downloads
  1. اتفق مع المرسِل على موعد تشغيله لـ send. فالرمز يبدأ بالانتهاء من لحظة توليده لا من لحظة وصوله إليك.

  2. خذ الأرقام الستة عبر قناة يثق بها كلاكما — مكالمة، أو نافذة محادثة، أو الغرفة التي تجلسان فيها.

  3. شغّل receive من الدليل الذي يُفترض أن تصل إليه الملفات، أو سمِّ دليلًا صراحةً.

    relayium receive 483920
    relayium receive 483920 ./downloads
  4. حين تطبع الطرفيتان رمز تحقّق، اقرأ رمزك بصوت مسموع وتأكّد أنه يطابق رمزه. إنه ليس رمز الاقتران، وهو الشيء الوحيد الذي يستبعد استبدال الطرف المقابل.

  5. اترك الطرفية وشأنها حتى تعود إلى المحث. فهذه جلسة حيّة واحدة: إغلاق أي طرف يوقف النقل.

كيف يبدو استقبال ناجح

يبيّن سطر path كيف تنتقل البايتات — relay، أو direct / lan للاتصال من نظير إلى نظير — ويعرض الطرفان رمز التحقق نفسه. والرموز المختلفة هي النتيجة الوحيدة التي يجب ألّا تقبلها — توقّف وتحقّق مع المُرسِل من الجهاز الذي يعمل عليه.

$ relayium receive 483920
verification code (SAS): 271044 — not the pairing code; compare it on both ends to rule out a substituted endpoint
path: direct
  • الاتصال مُشفَّر من الطرف إلى الطرف؛ وبمجرد الاتصال يعرض الطرفان رمز SAS (سلسلة مصادقة قصيرة) نفسه. قارنه مع المُرسِل خارج القناة لتتأكد من أن بصمات شهادات TLS المثبّتة لم تُستبدل وأن خدمة الالتقاء لم تنتحل شخصية أي طرف. يصادق SAS على الطرفين، لا على كل قفزة في مسار الشبكة.
  • بلا وجهة محددة: تصل الملفات إلى المجلد الحالي.
  • قاعدة الترحيل نفسها كما في send: كلما أصدر الخادم مُرحِّلًا للرمز مرّ كل بايت عبر هذا المُرحِّل المُشفَّر واحتُسب ضمن حصة حركة البيانات الشهرية للحساب الذي أنشأ الرمز — حساب المُرسِل، لا حسابك أبدًا. ولا يتصل الطرفان من نظير إلى نظير إلا حين لا يصدر مُرحِّل، وعندها يفشل النقل إن لم يوجد مسار مباشر.
  • الرمز هو رمز الاقتران نفسه الذي تستخدمه التطبيقات وصفحة الويب: يمكن لمُرسِل على relayium.com أو في تطبيق Relayium أن يقرأ لك رمزًا تستقبله هنا، ويمكن الانضمام إلى رمز أصدره relayium send من صفحة الويب بدلًا من CLI.
  • المُستقبِل لا يحتاج حسابًا أبدًا، على أي شبكة. المُرسِل وحده هو من يسجّل الدخول، كي تتمكن واجهة CLI لديه من إصدار الرمز.

serve: حوّل هذا الجهاز إلى صندوق وارد مُستمِع

يعمل serve بالعكس: بدل أن تمدّ يدك أنت، تدفع أجهزة أخرى إليك مباشرةً عبر relayium:// — مصمَّم للأجهزة التي تثق بها أصلًا، مثل حاسوبك المحمول يدفع إلى NAS، أو خادم بناء يُسقط منتجاته على جهاز تملكه — عبر اتصال TLS 1.3 مثبَّت، بلا SSH وبلا تعارف.

relayium serve

# مجلد ومنفذ محددان، مع السماح بطلبات الحذف
relayium serve --dir ~/incoming --port 9031 --allow-delete
  1. شغّل المُنصِت مع تسمية الدليل الذي ستصل إليه الدفعات.

    relayium serve --dir ~/incoming
  2. عند أول دفعة من جهاز جديد، يعرض serve عنوانه وبصمته ويسألك. وافق مرة واحدة، فتمر الدفعات التالية من البصمة نفسها بصمت.

  3. إن كان هذا المُنصِت سيعمل بلا طرفية، فلا تعتمد على ذلك السؤال — لا أحد هناك ليجيب عنه، والمرسِل غير المعروف يُرفَض من فوره. استخدم بدلًا من ذلك التصريح المسبق الموصوف في القسم التالي.

  • أول مرة يدفع إليك جهاز جديد، يعرض serve (عند تشغيله في طرفية) عنوانه وبصمته ويطلب منك الموافقة عليه مرة واحدة؛ بعد ذلك تمر عمليات الدفع من البصمة نفسها بصمت.
  • بلا طرفية — خدمة systemd، برنامج نصي بلا TTY — لا أحد ليُسأل، فيُرفض الطرف الدافع غير المعروف فورًا. بدلًا من ذلك، امنحه الإذن مسبقًا باستخدام البصمة التي يطبعها الطرف الدافع بـ relayium id:

منح الإذن مسبقًا لـ serve دون إشراف

لتشغيل serve دون إشراف (systemd، برنامج نصي في الخلفية)، اجعل الطرف الدافع يشغّل relayium id لطباعة بصمته، ثم امنحها الإذن مسبقًا من جهة الاستقبال:

relayium authorize <fingerprint>
  • ‏--dir يحدّد أين تصل الملفات (الافتراضي هو المجلد الحالي)؛ ‏--once يقبل نقلًا واحدًا ثم يخرج؛ ‏--allow-delete يتيح لطلب --delete (المرآة) الوارد أن يزيل الملفات فعلًا هنا، وهو معطّل افتراضيًا.
  • ‏--config-dir (الافتراضي ~/.config/relayium) هو مكان هوية هذا المضيف وقائمة بصماته المُصرَّح بها — تجاوزه إن كنت تشغّل serve كخدمة مخصّصة.

‏pull ‏(SSH): أُوقف

ملاحظة تاريخية: كان هذا القسم يشرح عمليات النقل عبر SSH في Relayium — أي push أو sync إلى وجهة بصيغة user@host:path، وrelayium pull، والخيارين -i و-p. وقد أوقف CLI الحالي هذه العمليات ويرفضها برسالة «SSH transfers are currently disabled»، لذا لم تعد الأوامر التي كانت هنا تعمل ولم تعد معروضة. بين جهازين تديرهما، استخدم relayium serve مع push أو sync إلى relayium://host؛ وتشرح النسختان الإنجليزية والصينية المبسّطة المُحدَّثتان من هذه الصفحة، المرتبطتان في أعلاها، الخطوات الحالية.

لجلب شيء من خادم تديره، ارفعه من الخادم بـ relayium up وشغّل هنا relayium down بالرابط — أو شغّل relayium serve على هذا الجهاز واجعل الخادم يدفعه بـ push إلى relayium://this-host.

relayium down '<complete-link-with-#k-fragment>' ./local-dest

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

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

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

تُدخِل الرمز فيرفضه خادم اللقاء.
relayium receive 483920
# the rendezvous refuses the code

غالبًا انقضت الدقائق الخمس — فالرمز ينتهي ابتداءً من لحظة توليد الـ CLI لدى المرسِل له، لا من لحظة إخبارك به. اطلب منه تشغيل send مرة أخرى وقراءة الأرقام الجديدة عليك فورًا. وخطأ رقم واحد يبدو من هنا مطابقًا تمامًا، فأعد قراءة الرمز عليه قبل أن تفترض أنه انتهى.

يكتمل النقل لكنك لا تجد الملفات.
relayium receive 483920 ./downloads

من دون تحديد وجهة، يكتب receive في الدليل الذي شغّلته منه، وهو نادرًا ما يكون المكان الذي بحثت فيه. حدّد دليلًا صراحةً، أو شغّل pwd أولًا لتتيقّن.

يفشل برسالة «no direct connection to the peer (both ends behind strict NAT?)».
relayium receive 483920
# no direct connection to the peer (both ends behind strict NAT?): …

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

يقول down إن الرابط غير صالح أو إنه لا يستطيع فك تشفير الملف.
relayium down '<link-without-fragment>' ./downloads
# invalid link or missing key

انسخ الرابط كاملًا مرة أخرى، بما في ذلك #k=. فهذا الجزء هو مفتاح فك التشفير الوحيد، ولا يستطيع الخادم إعادة بنائه إن حُذف.

جهاز يدفع إلى مُنصِت serve لديك فيُرفَض دون أن تُسأل قط.
relayium serve --dir ~/incoming

ذلك السؤال لا يوجد إلا حين تكون لـ serve طرفية. أما تحت systemd أو داخل سكربت أو خلف أنبوب فلا أحد ليُسأل، فتُرفَض البصمة المجهولة من فورها. اطلب من المرسِل تشغيل relayium id، وصرّح لها هنا بـ relayium authorize <البصمة>، بالـ ‎--config-dir‎ نفسه الذي يعمل به المُنصِت.

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

هل أحتاج حسابًا لاستقبال الملفات؟

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

هل يتوافق relayium receive مع رمز اقتران المتصفح؟

نعم. يستخدم الإصدار الحالي من relayium والتطبيقات وصفحة الويب على relayium.com رموز الاقتران نفسها، فيستطيع relayium receive استقبال رمز أصدره متصفّح أو تطبيق، ويستطيع المتصفّح الانضمام إلى رمز أصدره relayium send. ولا يعود إلى الاقتران القديم المقتصر على CLI والمباشر فقط إلا إصدار أقدم من relayium CLI أو خادم يسبق تلميحات الاقتران.

ماذا يحدث إذا دفع جهاز غير معروف إلى مُستمِع serve لديّ؟

في الطرفية، يُطلب منك الموافقة عليه بعنوانه وبصمته عند أول دفعة، وتُحفَظ الموافقة. بلا طرفية — خدمة systemd، مهمة cron — لا أحد ليُسأل، فيُرفض الطرف الدافع غير المعروف؛ امنحه الإذن مسبقًا أولًا بـ ‎relayium authorize <fingerprint>‎.

هل يمكنني جلب ملفات من خادم أديره؟

ليس باستخدام relayium pull: فقد أُوقف هو وعمليات النقل عبر SSH في CLI الحالي. شغّل relayium serve على هذا الجهاز واجعل الخادم يرسل إليه بـ relayium push relayium://this-host، أو ارفع من الخادم بـ relayium up واجلب الرابط هنا بـ relayium down.

أين يحفظ relayium هويتي والأقران الموثوقين؟

في ~/.config/relayium افتراضيًا — تجاوز الموقع بـ --config-dir في أي أمر يمسّ الهوية أو الثقة.

مستعد لاستقبال نقلك الأول؟ ثبّت الـ CLI واختر receive أو serve أو down.

احصل على الـ CLI

تابع القراءة