Haveno is an emerging peer-to-peer, decentralized exchange service for Monero and fiat currencies, built on TOR. It's grown immensely as a platform since the closure of LocalMonero and AgoraDesk, two of the most popular decentralized Monero exchange services. However, given it's fairly recent release and limited documentation on running within a secure Qubes-Whonix environment, I've decided to create a guide on how to install it.
Create & Configure Qubes
While you can securely run Haveno in the same Whonix environment you conduct all your Whonix activites, it's highly beneficial to create an isolated Whonix Qube where you perform your Monero transactions, separate from all other activity.
First we will create a separate Whonix-Workstation TemplateVM to merely install our Haveno packages, and supply them to a corresponding AppVM. It’s reasonable to assume that digitally signed software from Red Hat/Fedora repositories is non-malicious in nature. However, when installing packages from less trusted sources, using a seperate TemplateVM is highly favorable. You can choose to name your TemplateVM whatever you wish, for the sake of this guide, I will call mine monero-workstation.
In dom0:
qvm-clone whonix-workstation-17 monero-workstationNext, we will create a corresponding AppVM, based on our previously created TemplateVM. This Qube will inherit the installed Haveno packages, and be used to make Monero transactions on Haveno over Tor. You can choose to name your AppVM whatever you wish, for the sake of this guide, I will call mine anon-monero.
In dom0:
qvm-create -l red -t monero-workstation anon-monero
qvm-prefs anon-monero memory 2048
qvm-prefs anon-monero maxmem 4096
qvm-prefs anon-monero vcpus 4
qvm-volume extend anon-monero:private 50GiBPreventing Tor over Tor
Because Haveno routes it's traffic through Tor by default, running this application inside a Whonix environment (which does the same) will create a Tor over Tor connection. Despite this drastically reducing performance, a Tor over Tor connection may deanonymize you by routing back to your original entry note. Therefore, we must prevent a Tor over Tor connection by creating a dummy Tor binary.
In monero-workstation:
mkdir -p /home/user/.local/share/Haveno/xmr_mainnet/tor/
sudo touch /home/user/.local/share/Haveno/xmr_mainnet/tor/tor
sudo chmod +x /home/user/.local/share/Haveno/xmr_mainnet/tor/tor
sudo mkdir -p /usr/share/desktop-directoriesInstall & Configure Haveno
As Haveno has no official network that connects to Monero's main network, we will utilize the third-party, open-source Haveno-Reto network found at https://github.com/retoaccess1/haveno-reto, and download their respective packages.
In monero-workstation:
export https_proxy=http://127.0.0.1:8082
scurl-download https://github.com/retoaccess1/haveno-reto/releases/download/v1.0.7/haveno_1.0.7-1_amd64.zipNow, we must install the Haveno package and configure it’s corresponding desktop Application.
unzip haveno_1.0.7-1_amd64.zip
sudo dpkg -i haveno_1.0.7-1_amd64.debFinally, we have to update the ‘Applications’ in monero-workstation, to allow us to launch Haveno as a shortcut in the anon-monero Qube.
In dom0:
qvm-sync-appmenus monero-workstation
echo ‘haveno-Haveno.desktop’ | qvm-appmenus --set-whitelist - anon-monero
qvm-shutdown monero-workstationConfigure a Tor Bridge
If you have trouble connecting to Tor, you may want to consider configuring a Tor Bridge obtained from https://bridges.torproject.org/bridges within your Haveno settings.
- Obtain bridge from https://bridges.torproject.org/bridges
- Paste bridge lines under Open Tor Settings > Enter custom bridges
Conclusion
Congratulations on successfully installing Haveno! Always feel free to ask questions, as I will do my best to aid you. Remember, simply using Haveno will not keep you anonymous! Practice good OpSec, trust no one (this means do not trust any vendor, or even Haveno!), use several wallets and avoid re-using receiving addresses. Stay safe & stay informed.