A temporary file-receiving station hosted on the Tor network. Run it, share your .onion address, receive files, shut it down.
Lighthouse removes the usual friction from receiving files from someone:
- No port forwarding
- No cloud storage accounts
- No server setup
- No file size limits
You spin it up, Tor creates a hidden service and gives you an .onion address. You share that address with whoever needs to send you files. They open it in Tor Browser, upload the file, you download it. Done. Shut it down.
Sender (Tor Browser) --> .onion address --> Tor network --> Lighthouse (your machine)
Tor's hidden service acts as the networking layer, so your machine is reachable without a public IP or open ports.
- Frontend — React + TypeScript (Vite, TanStack Router, Tailwind CSS)
- Backend — Python (FastAPI), proxied at
/api/ - Transport — Tor hidden service
Prerequisites: Docker and Docker Compose.
Start
sudo docker compose up -dGet your .onion address
sudo docker exec lighthouse-tor cat /var/lib/tor/hidden_service/hostnameLighthouse will spin up the frontend, backend, storage, and Tor hidden service.
Share the .onion address with the sender and wait for the file to arrive.
Access localhost on your browser to be able to go to the /files route and download your file.
You can access the MinIO Panel on http://localhost:9001.
By default, the access is "lighthouse" and password "lighthouse_secret". You can change these values by creating a .env file on the project root with these values:
MINIO_ROOT_USER=yourUser
MINIO_ROOT_PASSWORD=yourPassword
This route is inaccessible outside your localhost, so only you have access to your files.
Stop
sudo docker compose downlighthouse/
├── backend/ # Python API
└── frontend/ # React app
For getting development dependencies:
sudo docker compose -f docker-compose.dev.yml up -dor
sudo docker compose -f docker-compose.dev.yml up -d --buildFront-end:
cd frontend
npm install
npm run devBack-end:
cd backend/app
python -m venv env
source ./env/bin/activate
pip install -r requirements.txt
fastapi dev main.py --host 0.0.0.0