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

على الجهاز الذي تريد الوصول إليه:``` curl -sSfL bitba.ng/install | sh bitbang serve
`serve` يطبع عنوان URL. افتحه في أي متصفح وستحصل على طرفية، ومتصفح ملفات، ووكيلًا لشبكة ذلك الجهاز — أو يمكنك الوصول إلى نفس الجهاز من طرفية أخرى باستخدام `bitbang connect <url>`، الذي يضيف إعادة توجيه المنافذ (`-L`) ونسخ الملفات (`bitbang cp`). الاتصال مشفّر من طرف إلى طرف ومن نظير إلى نظير؛ خادم `bitba.ng` يقدّم الطرفين لبعضهما، ثم يتنحى جانبًا.
`bitbang` هو ملف ثنائي واحد ثابت بلغة Go. إنه جزء من [مشروع BitBang](https://github.com/richlegrand/bitbang)؛ وتغطي هذه [الورقة التقنية](https://github.com/richlegrand/bitbang/blob/main/whitepaper.md) التصميم بعمق.
## كيف يقارن
| | ngrok | Tailscale | `bitbang` |
| ------------------------------ | ---------------------- | ------------------------------ | ------------------- |
| الإعداد قبل أول استخدام | حساب + رمز مصادقة | حساب + تسجيل دخول على كل جهاز | **تشغيل أمر واحد** |
| لمشاركة شيء ما، تشغّل | خادم ويب، بالإضافة إلى ngrok | عميلهم على كلا الجهازين | **`bitbang serve`** |
| ما يحصل عليه المتصفح في الطرف البعيد | خادم الويب الذي كنت تشغّله بالفعل | لا شيء — يحتاج إلى عميلهم | **طرفية، ومتصفح ملفات، وتطبيقات ويب على الشبكة البعيدة** |
| مسار البيانات | خوادمهم | P2P (تراجع عبر الترحيل) | **P2P (تراجع عبر الترحيل)** |
| مشفّر من طرف إلى طرف | ليس افتراضيًا | نعم | **نعم** |
## وصفات سريعة
**الوصول إلى خدمة في المنزل**
- [تحميل NAS المنزلي من أي مكان (SMB)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#mount-your-home-nas-from-anywhere-smb)
- [مشاهدة مكتبة الوسائط من أي مكان (Jellyfin)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#watch-your-media-library-from-anywhere-jellyfin)
- [استخدام LLM الخاص بك من أي مكان (Ollama, Open WebUI)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#use-your-own-llm-from-anywhere-ollama-open-webui)
- [فحص كاميرات الأمان (Frigate)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#check-your-security-cameras-frigate)
- [الوصول إلى أتمتة المنزل دون كشفها (Home Assistant)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#reach-your-home-automation-without-exposing-it-home-assistant)
- [الطباعة على طابعة المنزل (IPP, CUPS)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#print-to-your-home-printer-ipp-cups)
**الوصول إلى جهاز**
- [الحصول على قشرة على جهاز خلف NAT](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#get-a-shell-on-a-machine-behind-nat)
- [الحصول على قشرة من هاتفك](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#get-a-shell-from-your-phone)
- [سطح مكتب بعيد إلى جهاز Windows (RDP)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#remote-desktop-into-a-windows-machine-rdp)
- [الوصول إلى سطح مكتب Linux أو Mac (VNC)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#reach-a-linux-or-mac-desktop-vnc)
- [SSH إلى جهاز بدون منفذ مفتوح (OpenSSH)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#ssh-to-a-machine-with-no-open-port-openssh)
- [إعداد Raspberry Pi بدون شاشة](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#set-up-a-headless-raspberry-pi)
**المشاركة مع شخص آخر**
المشاركة تعني ببساطة إعطاء شخص ما عنوان URL فريدًا أو رمز QR يمنحه الوصول. يمكن تخصيص الأذونات وضبطها لتنتهي خلال دقائق أو ساعات، إلخ.
- [مشاركة الملفات دون رفعها إلى أي مكان](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#share-files-without-uploading-them-anywhere)
- [إظهار مشروعك لشخص ما](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#show-someone-your-project)
- [منح شخص ما وصولًا ينتهي](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#give-someone-access-that-expires)
- [التحقق من جلسة الوكيل من هاتفك (Claude Code, tmux)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#check-your-agent-session-from-your-phone-claude-code-tmux)
- [إصلاح جهاز توجيه شخص آخر](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#fix-someone-elses-router)
**التطوير والأجهزة**
- [الوصول إلى قاعدة بيانات من جهاز التطوير (Postgres, MySQL)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#reach-a-database-from-your-dev-machine-postgres-mysql)
- [مزامنة الأجهزة التي لا يمكنها العثور على بعضها (Syncthing)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#sync-devices-that-cannot-find-each-other-syncthing)
- [مشاهدة روبوت من متصفح (ROS, Foxglove)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#watch-a-robot-from-a-browser-ros-foxglove)
**تقنيات**
- [ما يكشفه مستمع إعادة التوجيه](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#what-a-forwarding-listener-exposes)
- [السماح لأجهزة أخرى على شبكتك المحلية باستخدام إعادة توجيه](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#let-other-machines-on-your-lan-use-a-forward)
- [معروف أنه لا يعمل](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#known-not-to-work)
## استخدام `bitbang`
كل اتصال له طرفان: **مستمع** (`bitbang serve`، يعمل على الجهاز الذي يتم الوصول إليه) و**موصل** (متصفح، أو واجهة سطر الأوامر `bitbang`، على الجهاز الذي يقوم بالوصول). عنوان 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 لا يملك أي تحويل ليمنحه، والمستمع المخصص للتحويل فقط لا يبدأ شلًا أبدًا، لذا لا يوجد شيء يمكن تصعيده إليه.
هناك إعداد افتراضي واحد يستحق المعرفة: التحويل والوكيل يصلان إلى أي مضيف:منفذ يمكن للمستمع الوصول إليه، وليس فقط المضيف الذي كنت تقصده، لذا فإن رابطًا تم توزيعه لقاعدة بيانات يصل أيضًا إلى بقية تلك الشبكة. تسمية الأهداف بعد الكلمة تضيّق النطاق — 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 لكن لا يمكنهم استضافة مشاركة.
بشكل افتراضي، يطبع الأمر عنواني URL للحامل: