Run BasicSwap over Tor
Route BasicSwap and its coins through Tor, on a new or existing install, with basicswap-prepare or basicswap-bash, and what changes for remote Monero nodes.
With Tor turned on, BasicSwap and the coin daemons it runs connect to the internet through a Tor proxy, so the peers and servers they talk to see a Tor exit or onion address instead of your IP address. You can turn it on when you install or at any time later, and turn it off again the same way.
What turning it on changes
basicswap-prepare --enabletor writes a Tor configuration to tor/torrc in your data folder, records the proxy in basicswap.json, and edits the config file of every enabled coin so its daemon uses the proxy. Prepare keeps the previous version of each file with .last added to its name. Later runs of prepare, such as adding a coin, download over Tor automatically once it's on.
If your Monero or Wownero wallet uses a remote node, turning Tor on or off also resets the wallet's trust in that node to "auto", which means it trusts the node only when its address is on your local network. Adding --trustremotenode to the same command keeps it trusted.
With basicswap-bash
The installer asks whether to use Tor, and if you want to change your answer later, stop BasicSwap and run one of these:
bsx-enabletor
bsx-disabletor
bsx-enabletor installs Tor if your system doesn't have it, and basicswap-bash starts Tor with BasicSwap's configuration each time you run it.
From source
-
Install Tor from your system's packages, for example
sudo apt install tororbrew install tor. -
Stop BasicSwap and turn Tor on with the commands below. The
BSX_LOCAL_TOR=trueat the start keeps Tor's ports on your own machine, whereas without it the configuration listens on every network interface, which suits Docker but not a computer on a shared network.export SWAP_DATADIR=$HOME/coinswaps . $SWAP_DATADIR/venv/bin/activate BSX_LOCAL_TOR=true basicswap-prepare --datadir=$SWAP_DATADIR --enabletor -
Start Tor with BasicSwap's configuration, then start BasicSwap as usual.
basicswap-rundoesn't start Tor for you, so do this each time.tor -f $SWAP_DATADIR/tor/torrc & basicswap-run --datadir=$SWAP_DATADIRBasicSwap's Tor uses ports 9050, 9051 and 5353 on
127.0.0.1. If the system's own Tor service already runs on 9050, stop it first withsudo systemctl stop tor.
To turn Tor off, stop BasicSwap, run the same prepare command with --disabletor in place of --enabletor, and stop the Tor process you started.
With Docker
Docker runs Tor in a second container, set up by docker-compose_with_tor.yml in the basicswap/docker folder. Use docker compose -f docker-compose_with_tor.yml in place of docker-compose for every command, including starting BasicSwap, from then on.
-
Create Tor's configuration file before the first run, using the coin data folder from your
.env, which is/var/data/coinswapsunless you changed it. Without this step, Docker would create a folder where the file should be.COINDATA_PATH=/var/data/coinswaps mkdir -p $COINDATA_PATH/tor echo 'SocksPort 0.0.0.0:9050' > $COINDATA_PATH/tor/torrc -
Turn Tor on, then stop the containers so Tor loads its new configuration:
docker compose -f docker-compose_with_tor.yml run --rm swapclient basicswap-prepare --datadir=/coindata --enabletor docker compose -f docker-compose_with_tor.yml stop -
Start BasicSwap through the Tor compose file:
docker compose -f docker-compose_with_tor.yml up
On a new install you can download the coin daemons over Tor too. After step 1, run the configure command with docker compose -f docker-compose_with_tor.yml in place of docker-compose and --usetorproxy added, then continue with step 2. Some download servers refuse Tor connections, though, so if a download fails, run the configure command again without --usetorproxy.
Turning Tor off works the same way, by running step 2 with --disabletor in place of --enabletor.