
Établissez un accès distant sécurisé à une machine avec un shell interactif, le transfert de fichiers et un proxy web via WebRTC peer-to-peer chiffré de bout en bout, en utilisant un navigateur ou une CLI, sans redirection de ports ni comptes.
bitbang est un multitool d'accès distant sous forme de binaire statique unique. Depuis n'importe quel navigateur : un shell interactif et un explorateur de fichiers pour accéder à la machine distante. Vous pouvez également atteindre les applications web présentes sur le réseau de cette machine. Au-delà du navigateur, il assure la redirection de ports TCP, la copie de fichiers et le partage de terminal. Il ne nécessite ni compte ni configuration — il fonctionne simplement.

Sur la machine que vous souhaitez atteindre :``` curl -sSfL bitba.ng/install | sh bitbang serve
`serve` affiche une URL. Ouvrez-la dans n'importe quel navigateur et vous obtenez un terminal, un explorateur de fichiers et un proxy vers le réseau de cette machine — ou accédez à la même machine depuis un autre terminal avec `bitbang connect <url>`, qui ajoute la redirection de port (`-L`) et la copie de fichiers (`bitbang cp`). La connexion est chiffrée de bout en bout et pair-à-pair ; le serveur `bitba.ng` présente les deux extrémités, puis s'efface.
`bitbang` est un binaire Go statique unique. Il fait partie du [projet BitBang](https://github.com/richlegrand/bitbang) ; ce [livre blanc](https://github.com/richlegrand/bitbang/blob/main/whitepaper.md) couvre la conception en profondeur.
## Comparaison
| | ngrok | Tailscale | `bitbang` |
| ------------------------------ | ---------------------- | ------------------------------ | ------------------- |
| Configuration avant la première utilisation | Compte + jeton d'authentification | Compte + connexion sur chaque appareil | **Exécutez une seule commande** |
| Pour partager quelque chose, vous exécutez | un serveur web, plus ngrok | leur client sur les deux machines | **`bitbang serve`** |
| Ce qu'un navigateur à l'autre extrémité obtient | le serveur web que vous exécutiez déjà | rien — il a besoin de leur client | **un terminal, un explorateur de fichiers et des applications web sur le réseau distant** |
| Chemin des données | leurs serveurs | P2P (repli par relais) | **P2P (repli par relais)** |
| Chiffré de bout en bout | Pas par défaut | Oui | **Oui** |
## Recettes rapides
**Accéder à un service à la maison**
- [Montez votre NAS domestique depuis n'importe où (SMB)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#mount-your-home-nas-from-anywhere-smb)
- [Regardez votre bibliothèque multimédia depuis n'importe où (Jellyfin)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#watch-your-media-library-from-anywhere-jellyfin)
- [Utilisez votre propre LLM depuis n'importe où (Ollama, Open WebUI)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#use-your-own-llm-from-anywhere-ollama-open-webui)
- [Vérifiez vos caméras de sécurité (Frigate)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#check-your-security-cameras-frigate)
- [Accédez à votre domotique sans l'exposer (Home Assistant)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#reach-your-home-automation-without-exposing-it-home-assistant)
- [Imprimez sur votre imprimante domestique (IPP, CUPS)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#print-to-your-home-printer-ipp-cups)
**Accéder à une machine**
- [Obtenez un shell sur une machine derrière un NAT](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#get-a-shell-on-a-machine-behind-nat)
- [Obtenez un shell depuis votre téléphone](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#get-a-shell-from-your-phone)
- [Bureau à distance sur une machine Windows (RDP)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#remote-desktop-into-a-windows-machine-rdp)
- [Accédez à un bureau Linux ou Mac (VNC)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#reach-a-linux-or-mac-desktop-vnc)
- [SSH vers une machine sans port ouvert (OpenSSH)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#ssh-to-a-machine-with-no-open-port-openssh)
- [Configurez un Raspberry Pi sans écran](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#set-up-a-headless-raspberry-pi)
**Partager avec quelqu'un d'autre**
Partager consiste simplement à donner à quelqu'un une URL unique ou un code QR qui lui donne accès. Les autorisations peuvent être personnalisées et définies pour expirer en quelques minutes, heures, etc.
- [Partagez des fichiers sans les téléverser nulle part](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#share-files-without-uploading-them-anywhere)
- [Montrez votre projet à quelqu'un](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#show-someone-your-project)
- [Donnez un accès qui expire](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#give-someone-access-that-expires)
- [Vérifiez votre session d'agent depuis votre téléphone (Claude Code, tmux)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#check-your-agent-session-from-your-phone-claude-code-tmux)
- [Réparez le routeur de quelqu'un d'autre](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#fix-someone-elses-router)
**Développement et appareils**
- [Accédez à une base de données depuis votre machine de développement (Postgres, MySQL)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#reach-a-database-from-your-dev-machine-postgres-mysql)
- [Synchronisez des appareils qui ne peuvent pas se trouver (Syncthing)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#sync-devices-that-cannot-find-each-other-syncthing)
- [Regardez un robot depuis un navigateur (ROS, Foxglove)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#watch-a-robot-from-a-browser-ros-foxglove)
**Techniques**
- [Ce qu'un écouteur de redirection expose](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#what-a-forwarding-listener-exposes)
- [Laissez d'autres machines de votre LAN utiliser une redirection](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#let-other-machines-on-your-lan-use-a-forward)
- [Connu pour ne pas fonctionner](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#known-not-to-work)
## Utilisation de `bitbang`
Chaque connexion a deux extrémités : un **écouteur** (`bitbang serve`, exécuté sur la machine à atteindre) et un **connecteur** (un navigateur, ou la CLI `bitbang`, sur la machine qui effectue la connexion). Une URL d'écouteur sert les deux types de connecteurs.
### L'écouteur : `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
Chaque mode affiche un code QR, une URL et un code d'appairage. Le mode détermine ce que l'auditeur peut faire au total : serve shell n'a aucun transfert à accorder, et un auditeur en transfert seul ne lance jamais de shell, donc il n'y a rien à élever.