A self-hosted Tor SOCKS proxy with a browser-in-browser Firefox instance, all routed through the Tor network.
docker compose up -dAccess Firefox at https://NAS_IP:3001 (accept the self-signed cert warning).
The proxy must be configured inside the remote Firefox browser, not via env vars:
- In the remote Firefox, go to
about:preferences - Search for "proxy"
- Select Manual proxy configuration
- Set SOCKS Host:
tor| Port:9050 - Select SOCKS v5
- ✅ Check "Proxy DNS when using SOCKS v5"
- Leave HTTP/SSL/FTP proxy fields empty
- Click OK
Navigate to https://check.torproject.org — you should see "Congratulations. This browser is configured to use Tor."
Both containers share the tornet Docker network, so Firefox can reach the Tor proxy by container name (tor).
Firefox (KasmVNC) → tor:9050 (SOCKS5) → Tor Network → Internet
| Port | Service | Purpose |
|---|---|---|
| 3001 | Firefox | HTTPS Web UI (KasmVNC) |
| 9050 | Tor | SOCKS5 proxy (for other apps on the LAN) |
| 9051 | Tor | Control port (optional, for monitoring) |
# Check Tor is bootstrapped
docker compose logs tor | grep -i "bootstrapped 100%"
# Test SOCKS proxy from host
curl --socks5-hostname localhost:9050 https://check.torproject.org/api/ip"Proxy server is refusing connections"
- Check Tor is fully bootstrapped:
docker compose logs tor | grep bootstrap - Verify Tor is listening:
docker exec tor-proxy netstat -tlnp | grep 9050 - Make sure Firefox proxy is set to SOCKS v5 (not v4) with DNS proxying enabled
Firefox Web UI requires HTTPS
- Use
https://NAS_IP:3001(not port 3000)
tor-data— Persistent Tor data directorytor-firefox-config— Firefox profile and settings