
bitbang-cli v0.5.0
Stabilisci un accesso remoto sicuro a una macchina con shell interattiva, trasferimento file e proxy web tramite WebRTC peer-to-peer crittografato end-to-end, usando un browser o CLI senza inoltro di porte o account.
BitBang CLI
bitbang è un multitool per l'accesso remoto distribuito come singolo binario statico. Da qualsiasi browser: accesso tramite shell interattiva e file browser alla macchina remota. Puoi anche raggiungere le web app presenti sulla rete di quella macchina. Oltre al browser, offre port forwarding TCP, copia di file e condivisione del terminale. Non richiede account né configurazione -- funziona e basta.

Sulla macchina che vuoi raggiungere:
curl -sSfL bitba.ng/install | sh
bitbang serve
serve stampa un URL. Aprilo in qualsiasi browser e ottieni un terminale, un file browser e un proxy verso la rete di quella macchina -- oppure raggiungi la stessa macchina da un altro terminale con bitbang connect <url>, che aggiunge il port forwarding (-L) e la copia dei file (bitbang cp). La connessione è cifrata end-to-end e peer-to-peer; il server bitba.ng introduce le due estremità, poi si fa da parte.
bitbang è un singolo binario Go statico. Fa parte del progetto BitBang; questo whitepaper illustra il design in dettaglio.
Come si confronta
| ngrok | Tailscale | bitbang | |
|---|---|---|---|
| Configurazione prima del primo utilizzo | Account + authtoken | Account + login su ogni dispositivo | Esegui un solo comando |
| Per condividere qualcosa, esegui | un web server, più ngrok | il loro client su entrambe le macchine | bitbang serve |
| Cosa ottiene un browser all'altro capo | il web server che stavi già eseguendo | nulla -- richiede il loro client | un terminale, un file browser e le web app sulla rete remota |
| Percorso dei dati | i loro server | P2P (fallback su relay) | P2P (fallback su relay) |
| Cifratura end-to-end | Non di default | Sì | Sì |
Ricette rapide
Raggiungere un servizio a casa
- Monta il tuo NAS di casa da qualsiasi luogo (SMB)
- Guarda la tua libreria multimediale da qualsiasi luogo (Jellyfin)
- Usa il tuo LLM da qualsiasi luogo (Ollama, Open WebUI)
- Controlla le tue telecamere di sicurezza (Frigate)
- Raggiungi la tua domotica senza esporla (Home Assistant)
- Stampa sulla tua stampante di casa (IPP, CUPS)
Accedere a una macchina
- Ottieni una shell su una macchina dietro NAT
- Ottieni una shell dal tuo telefono
- Desktop remoto su una macchina Windows (RDP)
- Raggiungi un desktop Linux o Mac (VNC)
- SSH verso una macchina senza porte aperte (OpenSSH)
- Configura un Raspberry Pi headless
Condividere con qualcun altro
Condividere significa semplicemente fornire a qualcuno un URL univoco o un codice QR che gli dia accesso. I permessi possono essere personalizzati e impostati per scadere in minuti, ore, ecc.
- Condividere file senza caricarli da nessuna parte
- Mostrare il tuo progetto a qualcuno
- Mostrare a qualcuno l'errore su cui sei bloccato
- Concedere a qualcuno un accesso che scade
- Controllare la sessione del tuo agente dal telefono (Claude Code, tmux)
- Sistemare il router di qualcun altro
Sviluppo e dispositivi
- Raggiungere un database dalla tua macchina di sviluppo (Postgres, MySQL)
- Sincronizzare dispositivi che non riescono a trovarsi (Syncthing)
- Osservare un robot da un browser (ROS, Foxglove)
Tecniche
- Cosa espone un listener di inoltro
- Consentire ad altre macchine sulla tua LAN di usare un inoltro
- Casi noti per non funzionare
Usare bitbang
Ogni connessione ha due estremità: un listener (bitbang serve, in esecuzione sulla macchina che viene raggiunta) e un connector (un browser, oppure la CLI bitbang, sulla macchina che effettua il collegamento). Un unico URL del listener serve entrambi i tipi di connector.
Il listener: 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
Ognuno stampa un codice QR, un URL e un codice di accoppiamento. La modalità determina ciò che il listener può fare in assoluto: serve shell non ha alcun forwarding da concedere, e un listener di solo forwarding non avvia mai una shell, quindi non c'è nulla a cui escalare.