
bitbang-cli v0.5.0
أنشئ وصولاً آمناً عن بُعد إلى جهاز يتضمن قشرة تفاعلية (shell)، ونقل ملفات، ووكيل ويب عبر WebRTC من نظير إلى نظير بتشفير من الطرف إلى الطرف، باستخدام متصفح أو واجهة سطر أوامر (CLI) دون الحاجة إلى إعادة توجيه المنافذ أو إنشاء حسابات.
BitBang CLI
bitbang هي أداة متعددة الاستخدامات للوصول عن بُعد في صورة ملف تنفيذي ثابت واحد. من أي متصفح: وصول إلى صدفة تفاعلية ومتصفح ملفات على الجهاز البعيد. يمكنك أيضًا الوصول إلى تطبيقات الويب على شبكة ذلك الجهاز. وإلى جانب المتصفح، تقوم الأداة بإعادة توجيه منافذ TCP، ونسخ الملفات، ومشاركة الطرفية. لا تتطلب أي حساب أو إعدادات -- إنها تعمل مباشرة.

على الجهاز الذي تريد الوصول إليه:
curl -sSfL bitba.ng/install | sh
bitbang serve
serve يطبع عنوان URL. افتحه في أي متصفح فتحصل على طرفية، ومتصفح ملفات، ووكيل (proxy) إلى شبكة ذلك الجهاز -- أو يمكنك الوصول إلى الجهاز نفسه من طرفية أخرى باستخدام bitbang connect <url>، الذي يضيف إعادة توجيه المنافذ (-L) ونسخ الملفات (bitbang cp). الاتصال مشفّر من طرف إلى طرف ومباشر بين الطرفين (peer-to-peer)؛ خادم bitba.ng يعرّف الطرفين ببعضهما ثم ينسحب جانبًا.
bitbang هو ملف Go ثنائي ثابت واحد. وهو جزء من مشروع BitBang؛ وتغطي هذه الورقة البيضاء التصميم بعمق.
كيف يقارَن
| ngrok | Tailscale | bitbang | |
|---|---|---|---|
| الإعداد قبل الاستخدام الأول | حساب + authtoken | حساب + تسجيل الدخول على كل جهاز | تشغيل أمر واحد |
| لمشاركة شيء ما، تشغّل | خادم ويب، بالإضافة إلى ngrok | عميلهم على كلا الجهازين | bitbang serve |
| ما يحصل عليه متصفح على الطرف البعيد | خادم الويب الذي كنت تشغّله بالفعل | لا شيء -- فهو يحتاج عميلهم | طرفية، ومتصفح ملفات، وتطبيقات ويب على الشبكة البعيدة |
| مسار البيانات | خوادمهم | P2P (مع تراجع إلى relay) | P2P (مع تراجع إلى relay) |
| مشفّر من طرف إلى طرف | ليس افتراضيًا | نعم | نعم |
وصفات سريعة
الوصول إلى خدمة في المنزل
- اربط NAS المنزلي من أي مكان (SMB)
- شاهد مكتبة الوسائط من أي مكان (Jellyfin)
- استخدم نموذجك اللغوي الخاص من أي مكان (Ollama, Open WebUI)
- تحقق من كاميرات المراقبة (Frigate)
- الوصول إلى أتمتة منزلك دون كشفها (Home Assistant)
- اطبع على طابعة منزلك (IPP, CUPS)
الدخول إلى جهاز
- احصل على shell على جهاز خلف NAT
- احصل على shell من هاتفك
- سطح مكتب عن بُعد إلى جهاز Windows (RDP)
- الوصول إلى سطح مكتب Linux أو Mac (VNC)
- SSH إلى جهاز بلا منفذ مفتوح (OpenSSH)
- إعداد Raspberry Pi بلا شاشة (headless)
المشاركة مع شخص آخر
تتضمن المشاركة ببساطة إعطاء شخص ما عنوان URL فريدًا أو رمز QR يمنحه الوصول. يمكن تخصيص الأذونات وضبطها لتنتهي صلاحيتها خلال دقائق أو ساعات، إلخ.
- شارك الملفات دون رفعها إلى أي مكان
- اعرض مشروعك على شخص ما
- اعرض على شخص ما الخطأ الذي علقت عنده
- امنح شخصًا ما وصولًا ينتهي صلاحيته
- تحقق من جلسة الوكيل الخاص بك من هاتفك (Claude Code، tmux)
- أصلح موجّه شخص آخر
التطوير والأجهزة
- الوصول إلى قاعدة بيانات من جهاز التطوير الخاص بك (Postgres، MySQL)
- زامن الأجهزة التي لا تستطيع العثور على بعضها البعض (Syncthing)
- راقب روبوتًا من متصفح (ROS، Foxglove)
التقنيات
- ما الذي يكشفه مستمع إعادة التوجيه
- اسمح لأجهزة أخرى على شبكتك المحلية باستخدام إعادة توجيه
- المعروف أنه لا يعمل
استخدام bitbang
كل اتصال له طرفان: مستمع (bitbang serve، يعمل على الجهاز الذي يتم الوصول إليه) وموصّل (متصفح، أو أداة bitbang CLI، على الجهاز الذي يقوم بالوصول). عنوان URL واحد للمستمع يخدم كلا نوعي الموصّلات.
المستمع: bitbang serve
bitbang serve # everything: shell + proxy + files + forward
bitbang serve shell # just a terminal
bitbang serve files ~/share # just a directory (-files-upload to allow uploads)
bitbang serve proxy localhost:8080 # just one web app, straight at the URL
bitbang serve proxy a.lan:80,b.lan:80 # ...or several, chosen in the browser
bitbang serve forward 127.0.0.1:22 # just TCP, for `connect -L`
bitbang serve shell files ~/share proxy nas.lan:8096 # any combination
كل منهما يطبع رمز QR وعنوان URL ورمز اقتران. يحدد الوضع ما يمكن للمستمع فعله على الإطلاق: serve shell لا يملك أي إعادة توجيه لمنحه، والمستمع المخصص لإعادة التوجيه فقط لا يبدأ صدفة أبدًا، لذا لا يوجد شيء للتصعيد إليه.
هناك إعداد افتراضي يستحق المعرفة: إعادة التوجيه والوكيل يصلان إلى أي host:port يمكن للمستمع الوصول إليه، وليس فقط الهدف الذي كان في ذهنك، لذا فإن رابطًا يُمنح لقاعدة بيانات يصل أيضًا إلى بقية تلك الشبكة. تسمية الأهداف بالكلمة تضيّق ذلك -- forward db.internal:5432 يصل إلى ذلك الهدف ولا شيء غيره.
مشاركة جلسة قيد التشغيل: bitbang share
serve shell يبدأ صدفة جديدة. أما share فينشر جلسة tmux قيد التشغيل بالفعل:
bitbang share # publish the current tmux session
bitbang share --read-only # publish without a control URL
bitbang share status|stop|rotate
يعود الأمر بعد النشر، لذا يعمل Ctrl-Z وbitbang share وfg
لمهمة قيد التنفيذ بالفعل. تتطلب الاستضافة tmux 3.2+ على Unix أو
WSL. يمكن لعملاء Windows الأصليين فتح عناوين URL لكن لا يمكنهم استضافة مشاركة.