Backend Deployment

Update

Consider updating the versions in WalletWasabi.Helpers.Constants. If versions are updated, make sure Client Release is already available before updating the backend.

sudo apt-get update && cd ~/WalletWasabi && git pull && cd ~
sudo service nginx stop
sudo systemctl stop walletwasabi.service
sudo killall tor
bitcoin-cli stop
sudo apt-get upgrade -y && sudo apt-get autoremove -y
sudo reboot
set DOTNET_CLI_TELEMETRY_OPTOUT=1
bitcoind
bitcoin-cli getblockchaininfo
tor
sudo service nginx start
dotnet publish ~/WalletWasabi/WalletWasabi.Backend --configuration Release --self-contained false
sudo systemctl start walletwasabi.service
pgrep -ilfa tor && pgrep -ilfa bitcoin && pgrep -ilfa wasabi && pgrep -ilfa nginx
tail -10000 ~/.walletwasabi/backend/Logs.txt

1. Create Remote Server

Name

WalletWasabi.Backend.[TestNet/Main]

Image

Ubuntu 18.04 x64

Region

Mostly anywhere is fine, except the US or China.

Size

https://bitcoin.org/en/full-node#minimum-requirementsarrow-up-right

[4GB Standard/32GB Standard]

2. Setup Server

https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-18-04arrow-up-right

SSH in as Root

Putty (Note copypaste with Ctrl+Insert and Shift+Insert.) https://www.digitalocean.com/community/tutorials/how-to-use-ssh-keys-with-putty-on-digitalocean-droplets-windows-usersarrow-up-right

Create a New User and Grant Administrative Privileges

Setup Firewall

https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-ubuntu-14-04arrow-up-right

As the firewall is currently blocking all connections except for SSH, if you install and configure additional services, you will need to adjust the firewall settings to allow acceptable traffic in. You can learn some common UFW operations in this guide. https://www.digitalocean.com/community/tutorials/ufw-essentials-common-firewall-rules-and-commandsarrow-up-right

Enabling External Access for User

Update Ubuntu

3. Install .NET SDK

https://www.microsoft.com/net/learn/get-started/linux/ubuntu18-04arrow-up-right

Opt out of the telemetry: export DOTNET_CLI_TELEMETRY_OPTOUT=1.

4. Install Tor

Check if Tor is already running in the background:

Verify Tor is properly running:

Create torrc:

Enable firewall:

Backup the generated private key!

5. Install, Configure and Synchronize bitcoind

https://bitcoin.org/en/downloadarrow-up-right

https://bitcoincore.org/en/releases/0.17.0/arrow-up-right https://medium.com/@loopring/how-to-run-lighting-btc-node-and-start-mining-b55c4bab8adarrow-up-right https://github.com/MrChrisJ/fullnode/issues/18arrow-up-right

6. Publish, Configure and Run WalletWasabi.Backend

7. Monitor the Apps

WalletWasabi.Backend

https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-2.0&tabs=aspnetcore2xarrow-up-right

Tor

8. Setup nginx

https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-2.0&tabs=aspnetcore2x#install-nginxarrow-up-right Only setup nginx if you want to expose the autogenerated website to the clearnet.

Enable firewall:

Verify a browser displays the default landing page for Nginx. The landing page is reachable at http://<server_IP_address>/index.nginx-debian.html.

Fill out the server name with the server's IP and domain. And remove the unneeded domains (note I use wasabiwallet.co for testnet.)

Setup https, redirect to https when asks. This'll modify the above config file, but oh well.

certbot won't properly redirect www, so it must be setup by hand, one by one. Duplicate all entries like this by adding a www.:

Add add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always; and server_tokens off; to every HTTPS server block.

After accessing the website finalize preload in https://hstspreload.org/arrow-up-right

Check If Everything Works

TestNet: http://testwnp3fugjln6vh5vpj7mvq3lkqqwjj3c2aafyu7laxz42kgwh2rad.onion/swagger/arrow-up-right Main: http://wasabiukrxmkdgve5kynjztuovbg43uxcbcxn6y2okcrsg7gb6jdmbad.onion/swagger/arrow-up-right GET fees

http://www.wasabiwallet.io/arrow-up-right

Check Statuses

Last updated

Was this helpful?