
bitbang-cli v0.5.0
ब्राउज़र या CLI का उपयोग करके, बिना पोर्ट फ़ॉरवर्डिंग या खातों के, एंड-टू-एंड एन्क्रिप्टेड पीयर-टू-पीयर WebRTC के माध्यम से इंटरैक्टिव शेल, फ़ाइल स्थानांतरण और वेब प्रॉक्सी के साथ किसी मशीन पर सुरक्षित दूरस्थ पहुँच स्थापित करें।
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 प्रोजेक्ट का हिस्सा है; यह व्हाइटपेपर डिज़ाइन को विस्तार से कवर करता है।
यह कैसे तुलना करता है
| ngrok | Tailscale | bitbang | |
|---|---|---|---|
| पहले उपयोग से पहले सेटअप | अकाउंट + ऑथटोकन | अकाउंट + प्रत्येक डिवाइस पर लॉगिन | एक कमांड चलाएँ |
| कुछ साझा करने के लिए, आप चलाते हैं | एक वेब सर्वर, साथ में ngrok | दोनों मशीनों पर उनका क्लाइंट | bitbang serve |
| दूसरे सिरे पर ब्राउज़र को क्या मिलता है | वह वेब सर्वर जो आप पहले से चला रहे थे | कुछ नहीं -- इसके लिए उनका क्लाइंट चाहिए | एक टर्मिनल, एक फ़ाइल ब्राउज़र, और रिमोट नेटवर्क पर वेब ऐप्स |
| डेटा पथ | उनके सर्वर | P2P (रिले फ़ॉलबैक) | P2P (रिले फ़ॉलबैक) |
| एंड-टू-एंड एन्क्रिप्टेड | डिफ़ॉल्ट रूप से नहीं | हाँ | हाँ |
त्वरित व्यंजन विधियाँ
घर पर किसी सेवा तक पहुँचें
- कहीं से भी अपना होम NAS माउंट करें (SMB)
- कहीं से भी अपनी मीडिया लाइब्रेरी देखें (Jellyfin)
- कहीं से भी अपना खुद का LLM उपयोग करें (Ollama, Open WebUI)
- अपने सुरक्षा कैमरे जाँचें (Frigate)
- अपने होम ऑटोमेशन को उजागर किए बिना उस तक पहुँचें (Home Assistant)
- अपने होम प्रिंटर पर प्रिंट करें (IPP, CUPS)
किसी मशीन पर पहुँचें
- NAT के पीछे की मशीन पर शेल प्राप्त करें
- अपने फ़ोन से शेल प्राप्त करें
- Windows मशीन में रिमोट डेस्कटॉप करें (RDP)
- Linux या Mac डेस्कटॉप तक पहुँचें (VNC)
- बिना खुले पोर्ट वाली मशीन पर SSH करें (OpenSSH)
- हेडलेस Raspberry Pi सेटअप करें
किसी और के साथ साझा करें
साझा करने का अर्थ है किसी को बस एक अद्वितीय URL या QR कोड देना जो उन्हें पहुँच प्रदान करता है। अनुमतियाँ अनुकूलित की जा सकती हैं और मिनटों, घंटों आदि में समाप्त होने के लिए सेट की जा सकती हैं।
- फ़ाइलें कहीं अपलोड किए बिना साझा करें
- किसी को अपना प्रोजेक्ट दिखाएँ
- किसी को वह त्रुटि दिखाएँ जिस पर आप अटके हैं
- किसी को ऐसी पहुँच दें जो समाप्त हो जाए
- अपने फ़ोन से अपना एजेंट सत्र जाँचें (Claude Code, tmux)
- किसी और का राउटर ठीक करें
विकास और डिवाइस
- अपनी डेव मशीन से डेटाबेस तक पहुँचें (Postgres, MySQL)
- उन डिवाइस को सिंक करें जो एक-दूसरे को नहीं ढूँढ पाते (Syncthing)
- ब्राउज़र से रोबोट देखें (ROS, Foxglove)
तकनीकें
- एक फ़ॉरवर्डिंग लिसनर क्या उजागर करता है
- अपने LAN की अन्य मशीनों को फ़ॉरवर्ड का उपयोग करने दें
- ज्ञात है कि काम नहीं करता
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 उसी तक पहुँचता है और किसी और चीज़ तक नहीं।