Prerequisites
- Docker and Docker Compose v2 (
docker compose, bundled with Docker Desktop and modern Docker Engine).
Steps
1
Download the compose file
Terminal
2
Start the stack
Terminal
3
Open the app
Open http://localhost:3000 in your browser. Pick a file and press Create secure link, then paste that link into a second tab to join as the receiver. Show QR renders the same link as a scannable code, which is how you receive on a phone once the app is reachable from one (see the note below).
What this runs
This starts the stack in STUN-only mode. Direct peer-to-peer connections are used, which work on most home and mobile networks. No files pass through the server. To support peers behind strict firewalls, symmetric NAT, or CGNAT, add a TURN relay.The defaults assume the browser and the server are on the same machine. To reach the app from another device on your network, set both of these in Then open the app at
.env to your machine’s LAN IP:.env
Terminal
http://192.168.1.x:3000 on the sending machine too, not localhost:3000. The share link and its QR code carry whichever address the page was loaded from, so a sender sitting on localhost hands the phone an address that only resolves back to the phone.No rebuild: the client reads its server address at runtime. CLIENT_URL matters as much as the socket URL, because it is the origin the server’s CORS check allows, and without it the browser is blocked even though the page loads.