
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 è un multitool di accesso remoto composto da un singolo binario statico. Da qualsiasi browser: una shell interattiva e un browser di file per accedere alla macchina remota. Puoi anche raggiungere le applicazioni web sulla rete di quella macchina. Oltre al browser, offre inoltro di porte 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 di file (`bitbang cp`). La connessione è crittografata end-to-end e peer-to-peer; il server `bitba.ng` presenta le due estremità, poi si fa da parte.
`bitbang` è un singolo binario Go statico. Fa parte del [progetto BitBang](https://github.com/richlegrand/bitbang); questo [whitepaper](https://github.com/richlegrand/bitbang/blob/main/whitepaper.md) copre 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'estremità remota | il web server che stavi già eseguendo | niente — richiede il loro client | **un terminale, un file browser e web app sulla rete remota** |
| Percorso dei dati | i loro server | P2P (fallback relay) | **P2P (fallback relay)** |
| Crittografato end-to-end | Non di default | Sì | **Sì** |
## Ricette rapide
**Raggiungi un servizio a casa**
- [Monta il tuo NAS di casa da qualsiasi luogo (SMB)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#mount-your-home-nas-from-anywhere-smb)
- [Guarda la tua libreria multimediale da qualsiasi luogo (Jellyfin)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#watch-your-media-library-from-anywhere-jellyfin)
- [Usa il tuo LLM da qualsiasi luogo (Ollama, Open WebUI)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#use-your-own-llm-from-anywhere-ollama-open-webui)
- [Controlla le tue telecamere di sicurezza (Frigate)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#check-your-security-cameras-frigate)
- [Raggiungi la tua domotica senza esporla (Home Assistant)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#reach-your-home-automation-without-exposing-it-home-assistant)
- [Stampa sulla tua stampante di casa (IPP, CUPS)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#print-to-your-home-printer-ipp-cups)
**Accedi a una macchina**
- [Ottieni una shell su una macchina dietro NAT](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#get-a-shell-on-a-machine-behind-nat)
- [Ottieni una shell dal tuo telefono](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#get-a-shell-from-your-phone)
- [Desktop remoto su una macchina Windows (RDP)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#remote-desktop-into-a-windows-machine-rdp)
- [Raggiungi un desktop Linux o Mac (VNC)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#reach-a-linux-or-mac-desktop-vnc)
- [SSH verso una macchina senza porte aperte (OpenSSH)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#ssh-to-a-machine-with-no-open-port-openssh)
- [Configura un Raspberry Pi headless](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#set-up-a-headless-raspberry-pi)
**Condividi con qualcun altro**
La condivisione consiste semplicemente nel dare a qualcuno un URL univoco o un codice QR che gli garantisce l'accesso. Le autorizzazioni possono essere personalizzate e impostate per scadere in minuti, ore, ecc.
- [Condividi file senza caricarli da nessuna parte](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#share-files-without-uploading-them-anywhere)
- [Mostra a qualcuno il tuo progetto](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#show-someone-your-project)
- [Dai a qualcuno un accesso che scade](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#give-someone-access-that-expires)
- [Controlla la tua sessione agente dal telefono (Claude Code, tmux)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#check-your-agent-session-from-your-phone-claude-code-tmux)
- [Ripara il router di qualcun altro](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#fix-someone-elses-router)
**Sviluppo e dispositivi**
- [Raggiungi un database dalla tua macchina di sviluppo (Postgres, MySQL)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#reach-a-database-from-your-dev-machine-postgres-mysql)
- [Sincronizza dispositivi che non riescono a trovarsi (Syncthing)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#sync-devices-that-cannot-find-each-other-syncthing)
- [Guarda un robot da un browser (ROS, Foxglove)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#watch-a-robot-from-a-browser-ros-foxglove)
**Tecniche**
- [Cosa espone un listener di forwarding](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#what-a-forwarding-listener-exposes)
- [Consenti ad altre macchine sulla tua LAN di usare un forward](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#let-other-machines-on-your-lan-use-a-forward)
- [Noto per non funzionare](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#known-not-to-work)
## Usare `bitbang`
Ogni connessione ha due estremità: un **listener** (`bitbang serve`, in esecuzione sulla macchina da raggiungere) e un **connector** (un browser, o la CLI `bitbang`, sulla macchina che effettua la connessione). Un singolo 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
Ciascuna stampa un codice QR, un URL e un codice di accoppiamento. La modalità determina cosa può fare l'ascoltatore: serve shell non ha alcun forwarding da concedere, e un listener solo-forward non avvia mai una shell, quindi non c'è nulla da elevare.