From 48e1facb744df0fb2aa708ff0211363f755863a7 Mon Sep 17 00:00:00 2001 From: PromptPunksFauxCough Date: Sat, 22 Feb 2025 19:16:27 +0000 Subject: [PATCH 01/31] install_qubes --- scripts/install_qubes/README.md | 412 ++++++++++++++++++ scripts/install_qubes/scripts/0.0-dom0.sh | 6 + scripts/install_qubes/scripts/0.1-dom0.sh | 6 + scripts/install_qubes/scripts/0.2-dom0.sh | 7 + scripts/install_qubes/scripts/0.3-dom0.sh | 6 + .../scripts/1.0-haveno-templatevm.sh | 124 ++++++ .../scripts/2.0-haveno-netvm_taker.sh | 27 ++ .../scripts/2.1-haveno-netvm_maker.sh | 39 ++ .../scripts/3.0-haveno-appvm_taker.sh | 33 ++ .../scripts/3.1-haveno-appvm_maker.sh | 50 +++ 10 files changed, 710 insertions(+) create mode 100644 scripts/install_qubes/README.md create mode 100644 scripts/install_qubes/scripts/0.0-dom0.sh create mode 100644 scripts/install_qubes/scripts/0.1-dom0.sh create mode 100644 scripts/install_qubes/scripts/0.2-dom0.sh create mode 100644 scripts/install_qubes/scripts/0.3-dom0.sh create mode 100644 scripts/install_qubes/scripts/1.0-haveno-templatevm.sh create mode 100644 scripts/install_qubes/scripts/2.0-haveno-netvm_taker.sh create mode 100644 scripts/install_qubes/scripts/2.1-haveno-netvm_maker.sh create mode 100644 scripts/install_qubes/scripts/3.0-haveno-appvm_taker.sh create mode 100644 scripts/install_qubes/scripts/3.1-haveno-appvm_maker.sh diff --git a/scripts/install_qubes/README.md b/scripts/install_qubes/README.md new file mode 100644 index 0000000000..f56dcfdebc --- /dev/null +++ b/scripts/install_qubes/README.md @@ -0,0 +1,412 @@ +# Haveno on Qubes/Whonix + +## **Conventions:** + ++ \# – Requires given linux commands to be executed with root privileges either directly as a root user or by use of sudo command + ++ $ or % – Requires given linux commands to be executed as a regular non-privileged user + + +## **Maker vs. Taker Use-Cases:** ++ If user plans to run Haveno for short periods, dynamic onion configuration might fit within their threat model +> For the purpose of this workshop, let’s call this the "taker" use-case + ++ If user plans to run Haveno 24/7, using a static onion configuration might be more desirable +> For the purpose of this workshop, let’s call this the "maker" use-case. + +

ONLY Perform the Steps Required for One Use-Case

+ +

OR

+ +

Adjust the Steps to Provide Both

+ + IE: + Create haveno-template-dynamic as well as haveno-template-static + + & + + Create sys-haveno-dynamic as well as sys-haveno-static and adjust NetVM for the haveno AppVM as necessary. + +## **Installation (Scripted + GUI + CLI):** +### *Create & Start Haveno TemplateVM:* +#### Scripted +##### In `dom0`: + +```shell +$ mkdir -p /tmp/haveno && qvm-run -p dispXXXX 'cat /tmp/haveno/0.0-dom0.sh' > /tmp/haveno/0.0-dom0.sh +$ bash /tmp/haveno/0.0-dom0.sh +``` +#### GUI +##### Via `Qubes Manager`: + ++ Locate & highlight whonix-workstation-17 (TemplateVM) + ++ Right-Click "whonix-workstation-17" and select "Clone qube" from Drop-Down + ++ Enter "haveno-template" in "Name" + ++ Click OK Button + ++ Highlight "haveno-template" (TemplateVM) + ++ Click "Start/Resume" Button + +#### CLI +##### In `dom0`: + +```shell +$ qvm-clone whonix-workstation-17 haveno-template && qvm-start haveno-template +``` + + +### *Build Haveno TemplateVM:* +#### Scripted +##### In `dispXXXX` AppVM: + +```shell +% qvm-copy /tmp/haveno/1.0-haveno-templatevm_taker.sh +``` + ++ Select "haveno-template" for "Target" of Pop-Up + ++ Click OK + +##### In `haveno-template` TemplateVM: +```shell +% sudo zsh QubesIncoming/dispXXXX/1.0-haveno-templatevm_taker.sh "PACKAGE_ARCHIVE_URL" "PACKAGE_PGP_FINGERPRINT" +``` + +

Example:

+ +```shell +$ sudo zsh QubesIncoming/dispXXXX/1.0-haveno-templatevm_taker.sh "https://github.com/retoaccess1/haveno-reto/releases/download/v1.0.18/haveno-linux-deb.zip" "DAA24D878B8D36C90120A897CA02DAC12DAE2D0F" +``` + +#### CLI +##### In `haveno-template` TemplateVM: +###### Install Dependancies: +```shell +# apt install -y wget +``` +(While not a strict dependancy, `wget` is used inorder to provide continuity with the Haveno of Tails solution) + + +###### Download & Import Project PGP Key: +```shell +# export https_proxy=http://127.0.0.1:8082 +# export KEY_SEARCH="PACKAGE_PGP_FINGERPRINT" +``` + +

Example:

+ +```shell +# export KEY_SEARCH="FAA24D878B8D36C90120A897CA02DAC12DAE2D0F" +# curl -sL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x$KEY_SEARCH" | gpg –import +``` + +###### Download Release Files: +```shell +# export https_proxy=http://127.0.0.1:8082 +# curl -sSLo /tmp/hashes.txt https://github.com/haveno/example/releases/download/v1.0.18/1.0.18-hashes.txt +# curl -sSLo /tmp/hashes.txt.sig https://github.com/haveno/example/releases/download/v1.0.18/1.0.18-hashes.txt.sig +# curl -sSLo /tmp/haveno.zip https://github.com/haveno/example/releases/download/v1.0.18/haveno_amd64_deb-latest.zip +# curl -sSLo /tmp/haveno.zip.sig https://github.com/haveno/example/releases/download/v1.0.18/haveno_amd64_deb-latest.zip.sig +``` + +Note: +

Above are dummy URLS which MUST be replaced with actual working URLs

+ +###### Verify Release Files: +```shell +# if [[ $(gpg --digest-algo SHA256 --verify /tmp/hashes.txt.sig /tmp/hashes.txt 2>&1) =~ 'Good signature' ]]; then printf $'SHASUM file has a VALID signature!\n'; else printf $'SHASUMS failed signature check\n' && exit; fi +``` + +###### Verify Hash, Unpack & Install Package: +```shell +# if [[ $(cat /tmp/hashes.txt) =~ $(sha512sum /tmp/haveno*.zip | awk '{ print $1 }') ]] ; then printf $'SHA Hash IS valid!\n' && mkdir -p /usr/share/desktop-directories && cd /tmp && unzip /tmp/haveno*.zip && apt install -y /tmp/haveno*.deb && chown -R $(ls /home):$(ls /home) /opt/haveno; else printf $'WARNING: Bad Hash!\n' && exit; fi +``` + + +###### Verify Jar: +```shell +# if [[ $(cat /tmp/desktop*.SHA-256) =~ $(sha256sum /opt/haveno/lib/app/desktop*.jar | awk '{ print $1 }') ]] ; then printf $'SHA Hash IS valid!\n' && printf 'Happy trading!\n'; else printf $'WARNING: Bad Hash!\n' && exit; fi +``` + +### **Create & Start Haveno NetVM**: +#### Scripted +##### In `dom0`: +```shell +$ mkdir -p /tmp/haveno && qvm-run -p dispXXXX 'cat /tmp/haveno/0.0-dom1.sh' > /tmp/haveno/0.1-dom0.sh +$ bash /tmp/haveno/0.1-dom0.sh +``` + +#### GUI +##### Via `Qubes Manager`: + ++ Click "New qube" Button + ++ Enter "sys-haveno" for "Name and label" + ++ Click the Button Beside "Name and label" and Select "orange" + ++ Select "whonix-gateway-17" from "Template" Drop-Down + ++ Select "sys-firewall" from "Networking" Drop-Down + ++ Tick "Launch settings after creation" Radio-Box + ++ Click OK + ++ Click "Advanced" Tab + ++ Enter "51" for "Initial memory" + +

(Within reason, can adjust to personal preference)

+ ++ Enter "512" for "Max memory" + +

(Within reason, can adjust to personal preference)

+ ++ Tick "Provides network" Radio-Box + ++ Click "Apply" Button + ++ Click "OK" Button + ++ Click "Start/Resume" Button + +#### CLI +##### In `dom0`: +```shell +$ qvm-create --template whonix-gateway-17 --class AppVM --label=orange --property memory=512 --property maxmem=512 --property netvm=sys-firewall --property provides_network=true sys-haveno +``` + +### **Build Haveno NetVM:** +#### Scripted (Taker) +##### In `dispXXXX` AppVM: +```shell +$ qvm-copy 2.0-haveno-netvm_taker.sh +``` + ++ Select "sys-haveno" for "Target" Within Pop-Up + ++ Click "OK" Button + +##### In `sys-haveno` NetVM: +```shell +% sudo zsh QubesIncoming/dev/2.0-haveno-netvm_taker.sh +``` + +#### CLI (Taker) +##### In `sys-haveno` NetVM: +###### *Add Taker onion-grater Profile*: +```shell +# onion-grater-add 40_bisq +# poweroff +``` + +

Note:

+

This works because the profile is already available by default via the onion-grater package while, haveno and bisq share the same default port of 9999

+ +#### Scripted (Maker) +##### In `dispXXXX` AppVM: +```shell +$ qvm-copy 2.0-haveno-netvm_maker.sh +``` ++ Select "sys-haveno" for "Target" of Pop-Up + ++ Click OK + +##### In `sys-haveno` NetVM: +```shell +% sudo zsh QubesIncoming/dispXXXX/2.0-haveno-netvm_maker.sh "$HAVENO_APPVM_IP" +``` + +#### CLI (Maker) +##### In `sys-haveno` NetVM: +###### Prepare Maker Hidden Service: +```shell +# printf "\nConnectionPadding 1\nHiddenServiceDir /var/lib/tor/haveno-dex/\nHiddenServicePort 9999 $HAVENO_APPVM_IP:9999\n\n" >> /usr/local/etc/torrc.d/50_user.conf +``` + +###### View & Verify Change: +```shell +# tail /usr/local/etc/torrc.d/50_user.conf +``` + +

Confirm output contains exactly:

+ +> ConnectionPadding 1 +> HiddenServiceDir /var/lib/tor/haveno-dex/ +> HiddenServicePort 9999 $HAVENO_APPVM_IP:9999 + + +### **Create & Start Haveno AppVM**: +#### Scripted +##### In `dom0`: +```shell +$ mkdir -p /tmp/haveno && qvm-run -p dispXXXX 'cat /tmp/haveno/0.2-dom0.sh' > /tmp/haveno/0.2-dom0.sh +$ bash /tmp/haveno/0.2-dom0.sh +``` +#### GUI +##### Via `Qubes Manager`: + ++ Click "New qube" Button + ++ Enter "haveno" for "Name and label" + ++ Click the Button Beside "Name and label" and Select "orange" + ++ Select "haveno-template" from "Template" Drop-Down + ++ Select "sys-haveno" from "Networking" Drop-Down + ++ Tick "Launch settings after creation" Radio-Box + ++ Click OK + ++ Click "Advanced" Tab + ++ Enter "2048" for "Initial memory" + +

(Within reason, can adjust to personal preference)

+ ++ Enter "4096" for "Max memory" + +

(Within reason, can adjust to personal preference)

+ ++ Click "<<" Button + ++ Highlight "Haveno" Under "Available" + ++ Click ">" Button + ++ Click "Apply" Button + ++ Click "OK" Button + ++ Click "Start/Resume" Button + +#### CLI +##### In `dom0`: +```shell +$ qvm-create --template haveno-template --class AppVM --label=orange --property memory=2048 --property maxmem=4096 --property netvm=sys-haveno haveno +$ printf 'haveno-Haveno.desktop' | qvm-appmenus --set-whitelist – haveno +``` + +### **Build Haveno AppVM**: +#### Scripted (Taker) +##### In `dispXXXX` AppVM: +```shell +$ qvm-copy /tmp/haveno/3.0-haveno-appvm_taker.sh +``` + ++ Select "haveno" for "Target" of Pop-Up + ++ Click OK + +##### In `haveno` AppVM: +```shell +% sudo zsh QubesIncoming/dispXXXX/3.0-haveno-appvm_taker.sh +``` +#### CLI (Taker) +##### In `haveno` AppVM: +###### Prepare Firewall Settings +```shell +# printf "\n# Prepare Local FW Settings\nmkdir -p /usr/local/etc/whonix_firewall.d\n" >> /rw/config/rc.local +# printf "\n# Poke FW\nprintf \"EXTERNAL_OPEN_PORTS+=\\\\\" 9999 \\\\\"\\\n\" | tee /usr/local/etc/whonix_firewall.d/50_user.conf\n" >> /rw/config/rc.local +# printf "\n# Restart FW\nwhonix_firewall\n\n" >> /rw/config/rc.local +``` +###### View & Verify Change: +

Confirm output contains exactly:

+ +> # Poke FW +> printf "EXTERNAL_OPEN_PORTS+=" 9999 "\n" | tee /usr/local/etc/whonix_firewall.d/50_user.conf +> +> # Restart FW +> whonix_firewall + +```shell +# tail /rw/config/rc.local +# poweroff +``` +#### Scripted (Maker) +##### In `dispXXXX` AppVM: +```shell +$ qvm-copy /tmp/haveno/3.1-haveno-appvm_maker.sh "$HAVENO_NETVM_ONION_ADDRESS" +``` + ++ Select "haveno" for "Target" of Pop-Up + ++ Click OK + +##### In `haveno`: +```shell +% sudo zsh QubesIncoming/dispXXXX/3.0-haveno-appvm_maker.sh +``` +#### CLI (Maker) +##### In `haveno` AppVM: +###### Prepare Maker Hidden Service +```shell +# printf "\nConnectionPadding 1\nHiddenServiceDir /var/lib/tor/haveno-dex/\nHiddenServicePort 9999 haveno:9999\n\n" >> /usr/local/etc/torrc.d/50_user.conf +``` + +###### View & Verify Change +

Confirm output contains exactly:

+ +> ## Haveno-DEX +> ConnectionPadding 1 +> HiddenServiceDir /var/lib/tor/haveno-dex/ +> HiddenServicePort 9999 haveno:9999 + +```shell +# tail /usr/local/etc/torrc.d/50_user.conf +# poweroff +``` + +### **Remove Haveno AppVM, TemplateVM & NetVM:** +#### Scripted +##### In `dom0`: +```shell +$ mkdir -p /tmp/haveno && qvm-run -p dispXXXX 'cat /tmp/haveno/0.3-dom0.sh' > /tmp/haveno/0.3-dom0.sh +$ bash /tmp/haveno/0.3-dom0.sh +``` +#### GUI +##### Via `Qubes Manager`: + ++ Highlight "haveno" (AppVM) + ++ Click "Delete qube" + ++ Enter "haveno" + ++ Click "OK" Button + ++ Highlight "haveno-template" (TemplateVM) + ++ Click "Delete qube" + ++ Enter "haveno-template" + ++ Click "OK" Button + ++ Highlight "sys-haveno" (NetVM) + ++ Click "Delete qube" + ++ Enter "sys-haveno" + ++ Click "OK" Button + +#### CLI +##### In `dom0`: +```shell +$ qvm-shutdown --force haveno haveno-template sys-haveno && qvm-remove haveno haveno-template sys-haveno +``` + + +## *If this helped you, you know what to do*: +### **XMR**: + +***85mRPDHW9SuGTDUoMJvt9W4u16Yp1j1SFDrcbfKH2vP1b59nZ62aKVqjfLoyxXrMZYMkNBGzAsuvCCDHPo4AHGx4K8Zmet6*** + diff --git a/scripts/install_qubes/scripts/0.0-dom0.sh b/scripts/install_qubes/scripts/0.0-dom0.sh new file mode 100644 index 0000000000..f7c78025ab --- /dev/null +++ b/scripts/install_qubes/scripts/0.0-dom0.sh @@ -0,0 +1,6 @@ +#!/bin/bash +## ./haveno-on-qubes/scripts/0.0-dom0.sh + +## Create & Start Haveno TemplateVM: +qvm-clone whonix-workstation-17 haveno-template && qvm-start haveno-template + diff --git a/scripts/install_qubes/scripts/0.1-dom0.sh b/scripts/install_qubes/scripts/0.1-dom0.sh new file mode 100644 index 0000000000..26a3347f36 --- /dev/null +++ b/scripts/install_qubes/scripts/0.1-dom0.sh @@ -0,0 +1,6 @@ +#!/bin/bash +## ./haveno-on-qubes/scripts/0.1-dom0.sh + +## Create Haveno NetVM: +qvm-create --template whonix-gateway-17 --class AppVM --label=orange --property memory=512 --property maxmem=512 --property netvm=sys-firewall sys-haveno && qvm-start sys-haveno + diff --git a/scripts/install_qubes/scripts/0.2-dom0.sh b/scripts/install_qubes/scripts/0.2-dom0.sh new file mode 100644 index 0000000000..6aedece8b7 --- /dev/null +++ b/scripts/install_qubes/scripts/0.2-dom0.sh @@ -0,0 +1,7 @@ +#!/bin/bash +## ./haveno-on-qubes/scripts/0.2-dom0.sh + +## Create Haveno AppVM: +qvm-create --template haveno-template --class AppVM --label=orange --property memory=2048 --property maxmem=4096 --property netvm=sys-haveno haveno && qvm-start haveno-template +printf 'haveno-Haveno.desktop' | qvm-appmenus --set-whitelist - haveno + diff --git a/scripts/install_qubes/scripts/0.3-dom0.sh b/scripts/install_qubes/scripts/0.3-dom0.sh new file mode 100644 index 0000000000..bfef4b12fe --- /dev/null +++ b/scripts/install_qubes/scripts/0.3-dom0.sh @@ -0,0 +1,6 @@ +#!/bin/bash +## ./haveno-on-qubes/scripts/0.3-dom0.sh + +## Remove Haveno GuestVMs +qvm-shutdown --force haveno haveno-template sys-haveno && qvm-remove haveno haveno-template sys-haveno + diff --git a/scripts/install_qubes/scripts/1.0-haveno-templatevm.sh b/scripts/install_qubes/scripts/1.0-haveno-templatevm.sh new file mode 100644 index 0000000000..5241c2ff3e --- /dev/null +++ b/scripts/install_qubes/scripts/1.0-haveno-templatevm.sh @@ -0,0 +1,124 @@ +#!/bin/zsh +## ./haveno-on-qubes/scripts/1.1-haveno-templatevm_maker.sh + +if [[ $# -ne 2 ]] ; then + printf "\nNo arguments provided!\n\nThis script requires two arguments to by provided:\nBinary URL & PGP Fingerprint\n\nPlease review documentation and try again.\n\nExiting now ...\n" + exit 1 +fi + + +## Update & Upgrade +apt update && apt upgrade -y + + +## Install wget +apt install -y wget + + +## Function to print messages in blue: +echo_blue() { + echo -e "\033[1;34m$1\033[0m" +} + + +# Function to print error messages in red: +echo_red() { + echo -e "\033[0;31m$1\033[0m" +} + + +## Sweep for old release files +rm *.asc desktop-*-SNAPSHOT-all.jar.SHA-256 haveno* + + +## Define URL & PGP Fingerprint etc. vars: +user_url=$1 +base_url=$(printf ${user_url} | awk -F'/' -v OFS='/' '{$NF=""}1') +expected_fingerprint=$2 +binary_filename=$(awk -F'/' '{ print $NF }' <<< "$user_url") +package_filename="haveno.deb" +signature_filename="${binary_filename}.sig" +key_filename="$(printf "$expected_fingerprint" | tr -d ' ' | sed -E 's/.*(................)/\1/' )".asc +wget_flags="--tries=10 --timeout=10 --waitretry=5 --retry-connrefused --show-progress" + + +## Debug: +printf "\nUser URL=$user_url\n" +printf "\nBase URL=$base_url\n" +printf "\nFingerprint=$expected_fingerprint\n" +printf "\nBinary Name=$binary_filename\n" +printf "\nPackage Name=$package_filename\n" +printf "\nSig Filename=$signature_filename\n" +printf "\nKey Filename=$key_filename\n" + + +## Configure for tinyproxy: +export https_proxy=http://127.0.0.1:8082 + + +## Download Haveno binary: +echo_blue "Downloading Haveno from URL provided ..." +wget "${wget_flags}" -cq "${user_url}" || { echo_red "Failed to download Haveno binary."; exit 1; } + + +## Download Haveno signature file: +echo_blue "Downloading Haveno signature ..." +wget "${wget_flags}" -cq "${base_url}""${signature_filename}" || { echo_red "Failed to download Haveno signature."; exit 1; } + + +## Download the GPG key: +echo_blue "Downloading signing GPG key ..." +wget "${wget_flags}" -cqO "${key_filename}" "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x$(echo "$expected_fingerprint" | tr -d ' ')" || { echo_red "Failed to download GPG key."; exit 1; } + + +## Import the GPG key: +echo_blue "Importing the GPG key ..." +gpg --import "${key_filename}" || { echo_red "Failed to import GPG key."; exit 1; } + + +## Extract imported fingerprints: +imported_fingerprints=$(gpg --with-colons --fingerprint | grep -A 1 'pub' | grep 'fpr' | cut -d: -f10 | tr -d '\n') + + +## Remove spaces from the expected fingerprint for comparison: +formatted_expected_fingerprint=$(echo "${expected_fingerprint}" | tr -d ' ') + + +## Check if the expected fingerprint is in the list of imported fingerprints: +if [[ ! "${imported_fingerprints}" =~ "${formatted_expected_fingerprint}" ]]; then + echo_red "The imported GPG key fingerprint does not match the expected fingerprint." + exit 1 +fi + + +## Verify the downloaded binary with the signature: +echo_blue "Verifying the signature of the downloaded file ..." +OUTPUT=$(gpg --digest-algo SHA256 --verify "${signature_filename}" "${binary_filename}" 2>&1) + +if ! echo "$OUTPUT" | grep -q "Good signature from"; then + echo_red "Verification failed: $OUTPUT" + exit 1; + else 7z x "${binary_filename}" && mv haveno*.deb "${package_filename}" +fi + + +echo_blue "Haveno binaries have been successfully verified." + + +# Install Haveno: +echo_blue "Installing Haveno ..." +apt install -y ./"${package_filename}" || { echo_red "Failed to install Haveno."; exit 1; } + + +## Adjust permissions: +echo_blue "Adjust permissions ..." +chown -R $(ls /home):$(ls /home) /opt/haveno + + +## Finalize +echo_blue "Haveno TemplateVM installation and configuration complete." +printf "%s \n" "Press [ENTER] to complete ..." +read ans +exit +#poweroff + diff --git a/scripts/install_qubes/scripts/2.0-haveno-netvm_taker.sh b/scripts/install_qubes/scripts/2.0-haveno-netvm_taker.sh new file mode 100644 index 0000000000..734cbd836b --- /dev/null +++ b/scripts/install_qubes/scripts/2.0-haveno-netvm_taker.sh @@ -0,0 +1,27 @@ +#!/bin/zsh +## ./haveno-on-qubes/scripts/2.0-haveno-netvm_taker.sh + +## Function to print messages in blue: +echo_blue() { + echo -e "\033[1;34m$1\033[0m" +} + + +# Function to print error messages in red: +echo_red() { + echo -e "\033[0;31m$1\033[0m" +} + + +## onion-grater +# Add onion-grater Profile +echo_blue "\nAdding onion-grater Profile ..." +onion-grater-add 40_bisq +#echo_blue "\nRestarting onion-grater Service ..." +#systemctl restart onion-grater.service +echo_blue "Haveno NetVM configuration complete." +printf "%s \n" "Press [ENTER] to complete ..." +read ans +#exit +poweroff + diff --git a/scripts/install_qubes/scripts/2.1-haveno-netvm_maker.sh b/scripts/install_qubes/scripts/2.1-haveno-netvm_maker.sh new file mode 100644 index 0000000000..0ffcb64a80 --- /dev/null +++ b/scripts/install_qubes/scripts/2.1-haveno-netvm_maker.sh @@ -0,0 +1,39 @@ +#!/bin/zsh +## ./haveno-on-qubes/scripts/2.1-haveno-netvm_maker.sh + +if [[ $# -ne 1 ]] ; then + printf "\nNo arguments provided!\n\nThis script requires an argument to by provided:\nIP Address of Haveno AppVM\n\nPlease review documentation and try again.\n\nExiting now ...\n" + exit 1 +fi + + +HAVENO_APPVM_IP=$1 + +## Function to print messages in blue: +echo_blue() { + echo -e "\033[1;34m$1\033[0m" +} + + +# Function to print error messages in red: +echo_red() { + echo -e "\033[0;31m$1\033[0m" +} + + +# Prepare Maker Hidden Service +echo_blue "\nConfiguring Hidden Service (Onion) ..." +printf "\n## Haveno-DEX\nConnectionPadding 1\nHiddenServiceDir /var/lib/tor/haveno-dex/\nHiddenServicePort 9999 $HAVENO_APPVM_IP:9999\n\n" >> /usr/local/etc/torrc.d/50_user.conf + + +## View & Verify Change +echo_blue "\nReview the following output and be certain in matches documentation found in manual guide exactly!\n" +tail /usr/local/etc/torrc.d/50_user.conf +#echo_blue "\nRestarting tor Service ..." +#systemctl restart tor.service +echo_blue "Haveno NetVM configuration complete." +printf "%s \n" "Press [ENTER] to complete ..." +read ans +#exit +poweroff + diff --git a/scripts/install_qubes/scripts/3.0-haveno-appvm_taker.sh b/scripts/install_qubes/scripts/3.0-haveno-appvm_taker.sh new file mode 100644 index 0000000000..c08eb04889 --- /dev/null +++ b/scripts/install_qubes/scripts/3.0-haveno-appvm_taker.sh @@ -0,0 +1,33 @@ +#!/bin/zsh +## ./haveno-on-qubes/scripts/3.0-haveno-appvm_taker.sh + +## Function to print messages in blue: +echo_blue() { + echo -e "\033[1;34m$1\033[0m" +} + + +# Function to print error messages in red: +echo_red() { + echo -e "\033[0;31m$1\033[0m" +} + + +## Prepare Firewall Settings +echo_blue "\nConfiguring FW ..." +printf "\n# Prepare Local FW Settings\nmkdir -p /usr/local/etc/whonix_firewall.d\n" >> /rw/config/rc.local +printf "\n# Poke FW\nprintf \"EXTERNAL_OPEN_PORTS+=\\\\\" 9999 \\\\\"\\\n\" | tee /usr/local/etc/whonix_firewall.d/50_user.conf\n" >> /rw/config/rc.local +printf "\n# Restart FW\nwhonix_firewall\n\n" >> /rw/config/rc.local + + +### Adjust Desktop Launcher: +echo_blue "Adjustng desktop launcher ..." +mkdir -p /home/$(ls /home)/\.local/share/applications +sed 's|/opt/haveno/bin/Haveno|/opt/haveno/bin/Haveno --torControlPort=9051 --socks5ProxyXmrAddress=127.0.0.1:9050 --useTorForXmr=on|g' > /home/$(ls /home)/.local/share/applications/haveno-Haveno.desktop +chown -R $(ls /home):$(ls /home) /home/$(ls /home)/.local/share/applications/haveno-Haveno.desktop +echo_blue "Haveno AppVM configuration complete." +printf "%s \n" "Press [ENTER] to complete ..." +read ans +exit +#poweroff + diff --git a/scripts/install_qubes/scripts/3.1-haveno-appvm_maker.sh b/scripts/install_qubes/scripts/3.1-haveno-appvm_maker.sh new file mode 100644 index 0000000000..6822f713c4 --- /dev/null +++ b/scripts/install_qubes/scripts/3.1-haveno-appvm_maker.sh @@ -0,0 +1,50 @@ +#!/bin/zsh +## ./haveno-on-qubes/scripts/3.1-haveno-appvm_maker.sh + +if [[ $# -ne 1 ]] ; then + printf "\nNo arguments provided!\n\nThis script requires an argument to by provided:\nOnion Address of Haveno NetVM\n\nPlease review documentation and try again.\n\nExiting now ...\n" + exit 1 +fi + + +## Function to print messages in blue: +echo_blue() { + echo -e "\033[1;34m$1\033[0m" +} + + +# Function to print error messages in red: +echo_red() { + echo -e "\033[0;31m$1\033[0m" +} + + +ONION=$1 + + +## Prepare Firewall Settings +echo_blue "\nConfiguring FW ..." +printf "\n# Prepare Local FW Settings\nmkdir -p /usr/local/etc/whonix_firewall.d\n" >> /rw/config/rc.local +printf "\n# Poke FW\nprintf \"EXTERNAL_OPEN_PORTS+=\\\\\" 9999 \\\\\"\\\n\" | tee /usr/local/etc/whonix_firewall.d/50_user.conf\n" >> /rw/config/rc.local +printf "\n# Restart FW\nwhonix_firewall\n\n" >> /rw/config/rc.local + + +## View & Verify Change +echo_blue "\nReview the following output and be certain in matches documentation found in documentation exactly!\n" +tail /rw/config/rc.local +printf "%s \n" "Press [ENTER] to complete ..." +read ans +: + + +### Adjust Desktop Launcher: +echo_blue "Adjustng desktop launcher ..." +mkdir -p /home/$(ls /home)/\.local/share/applications +sed 's|/opt/haveno/bin/Haveno|/opt/haveno/bin/Haveno --socks5ProxyXmrAddress=127.0.0.1:9050 --useTorForXmr=on --nodePort=9999 --hiddenServiceAddress=$ONION|g' /opt/haveno/lib/haveno-Haveno.desktop > /home/$(ls /home)/.local/share/applications/haveno-Haveno.desktop +chown -R $(ls /home):$(ls /home) /home/$(ls /home)/.local/share/applications +echo_blue "Haveno AppVM configuration complete." +printf "%s \n" "Press [ENTER] to complete ..." +read ans +exit +#poweroff + From 0c79ef2f05ea260eae2327a0ccbc8739ee4e132f Mon Sep 17 00:00:00 2001 From: PromptPunksFauxCough Date: Sun, 23 Feb 2025 07:30:54 +0000 Subject: [PATCH 02/31] add source build option --- .../scripts/1.0-haveno-templatevm.sh | 291 +++++++++++------- 1 file changed, 181 insertions(+), 110 deletions(-) diff --git a/scripts/install_qubes/scripts/1.0-haveno-templatevm.sh b/scripts/install_qubes/scripts/1.0-haveno-templatevm.sh index 5241c2ff3e..fcdb0a92c7 100644 --- a/scripts/install_qubes/scripts/1.0-haveno-templatevm.sh +++ b/scripts/install_qubes/scripts/1.0-haveno-templatevm.sh @@ -1,124 +1,195 @@ -#!/bin/zsh +#!/bin/bash ## ./haveno-on-qubes/scripts/1.1-haveno-templatevm_maker.sh -if [[ $# -ne 2 ]] ; then - printf "\nNo arguments provided!\n\nThis script requires two arguments to by provided:\nBinary URL & PGP Fingerprint\n\nPlease review documentation and try again.\n\nExiting now ...\n" - exit 1 -fi - -## Update & Upgrade -apt update && apt upgrade -y - - -## Install wget -apt install -y wget - - -## Function to print messages in blue: -echo_blue() { - echo -e "\033[1;34m$1\033[0m" +function remote { + if [[ -z $PRECOMPILED_URL || -z $FINGERPRINT ]]; then + printf "\nNo arguments provided!\n\nThis script requires two arguments to be provided:\nBinary URL & PGP Fingerprint\n\nPlease review documentation and try again.\n\nExiting now ...\n" + exit 1 + fi + ## Update & Upgrade + apt update && apt upgrade -y + + + ## Install wget + apt install -y wget + + + ## Function to print messages in blue: + echo_blue() { + echo -e "\033[1;34m$1\033[0m" + } + + + # Function to print error messages in red: + echo_red() { + echo -e "\033[0;31m$1\033[0m" + } + + + ## Sweep for old release files + rm *.asc desktop-*-SNAPSHOT-all.jar.SHA-256 haveno* + + + ## Define URL & PGP Fingerprint etc. vars: + user_url=$1 + base_url=$(printf ${user_url} | awk -F'/' -v OFS='/' '{$NF=""}1') + expected_fingerprint=$2 + binary_filename=$(awk -F'/' '{ print $NF }' <<< "$user_url") + package_filename="haveno.deb" + signature_filename="${binary_filename}.sig" + key_filename="$(printf "$expected_fingerprint" | tr -d ' ' | sed -E 's/.*(................)/\1/' )".asc + wget_flags="--tries=10 --timeout=10 --waitretry=5 --retry-connrefused --show-progress" + + + ## Debug: + printf "\nUser URL=$user_url\n" + printf "\nBase URL=$base_url\n" + printf "\nFingerprint=$expected_fingerprint\n" + printf "\nBinary Name=$binary_filename\n" + printf "\nPackage Name=$package_filename\n" + printf "\nSig Filename=$signature_filename\n" + printf "\nKey Filename=$key_filename\n" + + + ## Configure for tinyproxy: + export https_proxy=http://127.0.0.1:8082 + + + ## Download Haveno binary: + echo_blue "Downloading Haveno from URL provided ..." + wget "${wget_flags}" -cq "${user_url}" || { echo_red "Failed to download Haveno binary."; exit 1; } + + + ## Download Haveno signature file: + echo_blue "Downloading Haveno signature ..." + wget "${wget_flags}" -cq "${base_url}""${signature_filename}" || { echo_red "Failed to download Haveno signature."; exit 1; } + + + ## Download the GPG key: + echo_blue "Downloading signing GPG key ..." + wget "${wget_flags}" -cqO "${key_filename}" "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x$(echo "$expected_fingerprint" | tr -d ' ')" || { echo_red "Failed to download GPG key."; exit 1; } + + + ## Import the GPG key: + echo_blue "Importing the GPG key ..." + gpg --import "${key_filename}" || { echo_red "Failed to import GPG key."; exit 1; } + + + ## Extract imported fingerprints: + imported_fingerprints=$(gpg --with-colons --fingerprint | grep -A 1 'pub' | grep 'fpr' | cut -d: -f10 | tr -d '\n') + + + ## Remove spaces from the expected fingerprint for comparison: + formatted_expected_fingerprint=$(echo "${expected_fingerprint}" | tr -d ' ') + + + ## Check if the expected fingerprint is in the list of imported fingerprints: + if [[ ! "${imported_fingerprints}" =~ "${formatted_expected_fingerprint}" ]]; then + echo_red "The imported GPG key fingerprint does not match the expected fingerprint." + exit 1 + fi + + + ## Verify the downloaded binary with the signature: + echo_blue "Verifying the signature of the downloaded file ..." + OUTPUT=$(gpg --digest-algo SHA256 --verify "${signature_filename}" "${binary_filename}" 2>&1) + + if ! echo "$OUTPUT" | grep -q "Good signature from"; then + echo_red "Verification failed: $OUTPUT" + exit 1; + else 7z x "${binary_filename}" && mv haveno*.deb "${package_filename}" + fi + + + echo_blue "Haveno binaries have been successfully verified." + + + # Install Haveno: + echo_blue "Installing Haveno ..." + apt install -y ./"${package_filename}" || { echo_red "Failed to install Haveno."; exit 1; } + + + ## Adjust permissions: + echo_blue "Adjust permissions ..." + chown -R $(ls /home):$(ls /home) /opt/haveno + + + ## Finalize + echo_blue "Haveno TemplateVM installation and configuration complete." + printf "%s \n" "Press [ENTER] to complete ..." + read ans + exit + #poweroff } -# Function to print error messages in red: -echo_red() { - echo -e "\033[0;31m$1\033[0m" +function build { + if [[ -z $JAVA_URL || -z $JAVA_SHA1 || -z $SOURCE_URL ]]; then + printf "\nNo arguments provided!\n\nThis script requires three argument to be provided:\n\nURL for Java 21 JDK Debian Package\n\nSHA1 Hash for Java 21 JDK Debian Package\n\nURL for Remote Git Source Repository\n\nPlease review documentation and try again.\n\nExiting now ...\n" + exit 1 + fi + # Dependancies + sudo apt install -y make git expect fakeroot + + # Java + curl -fsSLo jdk21.deb ${JAVA_URL} + if [[ $(shasum ./jdk21.deb | awk '{ print $1 }') == ${JAVA_SHA1} ]] ; then printf $'SHA Hash IS valid!\n'; else printf $'WARNING: Bad Hash!\n' && exit; fi + sudo apt install -y ./jdk21.deb + + # Build + git clone --depth=1 $SOURCE_URL + cd haveno + git checkout master + sed -i 's|XMR_STAGENET|XMR_MAINNET|g' desktop/package/package.gradle + ./gradlew clean build --refresh-keys --refresh-dependencies + + # Package + # Expect + cat <> /tmp/haveno_package_deb.exp +set send_slow {1 .1} +proc send {ignore arg} { + sleep 1.1 + exp_send -s -- \$arg +} +set timeout -1 +spawn ./gradlew packageInstallers --console=plain +match_max 100000 +expect -exact "" +send -- "y\r" +expect -exact "" +send -- "y\r" +expect -exact "" +send -- "y\r" +expect -exact "app-image" +send -- "" +expect eof +DONE + + # Package + expect -f /tmp/haveno_package_deb.exp && find ./ -name '*.deb' -exec qvm-copy {} \; + } +if [[ $# -eq 2 ]] ; then + PRECOMPILED_URL=$1 + FINGERPRINT=$2 +fi -## Sweep for old release files -rm *.asc desktop-*-SNAPSHOT-all.jar.SHA-256 haveno* - - -## Define URL & PGP Fingerprint etc. vars: -user_url=$1 -base_url=$(printf ${user_url} | awk -F'/' -v OFS='/' '{$NF=""}1') -expected_fingerprint=$2 -binary_filename=$(awk -F'/' '{ print $NF }' <<< "$user_url") -package_filename="haveno.deb" -signature_filename="${binary_filename}.sig" -key_filename="$(printf "$expected_fingerprint" | tr -d ' ' | sed -E 's/.*(................)/\1/' )".asc -wget_flags="--tries=10 --timeout=10 --waitretry=5 --retry-connrefused --show-progress" - - -## Debug: -printf "\nUser URL=$user_url\n" -printf "\nBase URL=$base_url\n" -printf "\nFingerprint=$expected_fingerprint\n" -printf "\nBinary Name=$binary_filename\n" -printf "\nPackage Name=$package_filename\n" -printf "\nSig Filename=$signature_filename\n" -printf "\nKey Filename=$key_filename\n" - - -## Configure for tinyproxy: -export https_proxy=http://127.0.0.1:8082 - - -## Download Haveno binary: -echo_blue "Downloading Haveno from URL provided ..." -wget "${wget_flags}" -cq "${user_url}" || { echo_red "Failed to download Haveno binary."; exit 1; } - - -## Download Haveno signature file: -echo_blue "Downloading Haveno signature ..." -wget "${wget_flags}" -cq "${base_url}""${signature_filename}" || { echo_red "Failed to download Haveno signature."; exit 1; } - - -## Download the GPG key: -echo_blue "Downloading signing GPG key ..." -wget "${wget_flags}" -cqO "${key_filename}" "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x$(echo "$expected_fingerprint" | tr -d ' ')" || { echo_red "Failed to download GPG key."; exit 1; } - - -## Import the GPG key: -echo_blue "Importing the GPG key ..." -gpg --import "${key_filename}" || { echo_red "Failed to import GPG key."; exit 1; } - - -## Extract imported fingerprints: -imported_fingerprints=$(gpg --with-colons --fingerprint | grep -A 1 'pub' | grep 'fpr' | cut -d: -f10 | tr -d '\n') - - -## Remove spaces from the expected fingerprint for comparison: -formatted_expected_fingerprint=$(echo "${expected_fingerprint}" | tr -d ' ') - - -## Check if the expected fingerprint is in the list of imported fingerprints: -if [[ ! "${imported_fingerprints}" =~ "${formatted_expected_fingerprint}" ]]; then - echo_red "The imported GPG key fingerprint does not match the expected fingerprint." - exit 1 +if [[ $# -eq 3 ]] ; then + JAVA_URL=$1 + JAVA_SHA1=$2 + SOURCE_URL=$3 fi -## Verify the downloaded binary with the signature: -echo_blue "Verifying the signature of the downloaded file ..." -OUTPUT=$(gpg --digest-algo SHA256 --verify "${signature_filename}" "${binary_filename}" 2>&1) +read -p $'Do you want to:\nInstall precompiled binary from remote git repository? (r)\n\n\t\tOR\n\nBuild source from remote git repository? (b)\n\n' rb -if ! echo "$OUTPUT" | grep -q "Good signature from"; then - echo_red "Verification failed: $OUTPUT" - exit 1; - else 7z x "${binary_filename}" && mv haveno*.deb "${package_filename}" -fi - - -echo_blue "Haveno binaries have been successfully verified." - - -# Install Haveno: -echo_blue "Installing Haveno ..." -apt install -y ./"${package_filename}" || { echo_red "Failed to install Haveno."; exit 1; } - - -## Adjust permissions: -echo_blue "Adjust permissions ..." -chown -R $(ls /home):$(ls /home) /opt/haveno - - -## Finalize -echo_blue "Haveno TemplateVM installation and configuration complete." -printf "%s \n" "Press [ENTER] to complete ..." -read ans -exit -#poweroff +case $rb in + [rR] ) remote;; + [bB] ) build;; + * ) printf "\nInvalid Input.\n\nPlease Try again.\n"; + # exit 1;; +esac +printf "\nCheers m8!\n" From a51b3e60864ae645217c8ae7150aae5f37ecc1b7 Mon Sep 17 00:00:00 2001 From: PromptPunksFauxCough Date: Sun, 23 Feb 2025 07:39:50 +0000 Subject: [PATCH 03/31] Update README.md --- scripts/install_qubes/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/install_qubes/README.md b/scripts/install_qubes/README.md index f56dcfdebc..c91fd61771 100644 --- a/scripts/install_qubes/README.md +++ b/scripts/install_qubes/README.md @@ -64,7 +64,7 @@ $ qvm-clone whonix-workstation-17 haveno-template && qvm-start haveno-template ##### In `dispXXXX` AppVM: ```shell -% qvm-copy /tmp/haveno/1.0-haveno-templatevm_taker.sh +% qvm-copy /tmp/haveno/1.0-haveno-templatevm.sh ``` + Select "haveno-template" for "Target" of Pop-Up @@ -73,13 +73,13 @@ $ qvm-clone whonix-workstation-17 haveno-template && qvm-start haveno-template ##### In `haveno-template` TemplateVM: ```shell -% sudo zsh QubesIncoming/dispXXXX/1.0-haveno-templatevm_taker.sh "PACKAGE_ARCHIVE_URL" "PACKAGE_PGP_FINGERPRINT" +% sudo bash QubesIncoming/dispXXXX/1.0-haveno-templatevm.sh "PACKAGE_ARCHIVE_URL" "PACKAGE_PGP_FINGERPRINT" ```

Example:

```shell -$ sudo zsh QubesIncoming/dispXXXX/1.0-haveno-templatevm_taker.sh "https://github.com/retoaccess1/haveno-reto/releases/download/v1.0.18/haveno-linux-deb.zip" "DAA24D878B8D36C90120A897CA02DAC12DAE2D0F" +$ sudo bash QubesIncoming/dispXXXX/1.0-haveno-templatevm.sh "https://github.com/example/natto/releases/download/v1.0.18/haveno-linux-deb.zip" "FAA24D878B8D36C90120A897CA02DAC12DAE2D0F" ``` #### CLI From 1b5112ce5a4da4827ef100391dae8a8ce1c146ac Mon Sep 17 00:00:00 2001 From: PromptPunksFauxCough Date: Sun, 23 Feb 2025 08:43:44 +0000 Subject: [PATCH 04/31] Update README.md --- scripts/install_qubes/README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/scripts/install_qubes/README.md b/scripts/install_qubes/README.md index c91fd61771..76aa9621bc 100644 --- a/scripts/install_qubes/README.md +++ b/scripts/install_qubes/README.md @@ -234,7 +234,7 @@ $ qvm-copy 2.0-haveno-netvm_maker.sh # tail /usr/local/etc/torrc.d/50_user.conf ``` -

Confirm output contains exactly:

+

Confirm output contains:

> ConnectionPadding 1 > HiddenServiceDir /var/lib/tor/haveno-dex/ @@ -318,7 +318,7 @@ $ qvm-copy /tmp/haveno/3.0-haveno-appvm_taker.sh # printf "\n# Restart FW\nwhonix_firewall\n\n" >> /rw/config/rc.local ``` ###### View & Verify Change: -

Confirm output contains exactly:

+

Confirm output contains:

> # Poke FW > printf "EXTERNAL_OPEN_PORTS+=" 9999 "\n" | tee /usr/local/etc/whonix_firewall.d/50_user.conf @@ -340,7 +340,7 @@ $ qvm-copy /tmp/haveno/3.1-haveno-appvm_maker.sh "$HAVENO_NETVM_ONION_ADDRESS" + Click OK -##### In `haveno`: +##### In `haveno` AppVM: ```shell % sudo zsh QubesIncoming/dispXXXX/3.0-haveno-appvm_maker.sh ``` @@ -348,16 +348,16 @@ $ qvm-copy /tmp/haveno/3.1-haveno-appvm_maker.sh "$HAVENO_NETVM_ONION_ADDRESS" ##### In `haveno` AppVM: ###### Prepare Maker Hidden Service ```shell -# printf "\nConnectionPadding 1\nHiddenServiceDir /var/lib/tor/haveno-dex/\nHiddenServicePort 9999 haveno:9999\n\n" >> /usr/local/etc/torrc.d/50_user.conf +# printf "\nConnectionPadding 1\nHiddenServiceDir /var/lib/tor/haveno-dex/\nHiddenServicePort 9999 $HAVENO_APPVM_IP:9999\n\n" >> /usr/local/etc/torrc.d/50_user.conf ``` ###### View & Verify Change -

Confirm output contains exactly:

+

Confirm output contains:

> ## Haveno-DEX > ConnectionPadding 1 > HiddenServiceDir /var/lib/tor/haveno-dex/ -> HiddenServicePort 9999 haveno:9999 +> HiddenServicePort 9999 $HAVENO_APPVM_IP:9999 ```shell # tail /usr/local/etc/torrc.d/50_user.conf From 08879ebfac786b7f8535eaec6745e3333a3c5380 Mon Sep 17 00:00:00 2001 From: PromptPunksFauxCough Date: Sun, 23 Feb 2025 10:00:56 +0000 Subject: [PATCH 05/31] Update README.md --- scripts/install_qubes/README.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/scripts/install_qubes/README.md b/scripts/install_qubes/README.md index 76aa9621bc..b8e24aad34 100644 --- a/scripts/install_qubes/README.md +++ b/scripts/install_qubes/README.md @@ -159,7 +159,7 @@ $ bash /tmp/haveno/0.1-dom0.sh + Click "Advanced" Tab -+ Enter "51" for "Initial memory" ++ Enter "512" for "Initial memory"

(Within reason, can adjust to personal preference)

@@ -211,7 +211,7 @@ $ qvm-copy 2.0-haveno-netvm_taker.sh #### Scripted (Maker) ##### In `dispXXXX` AppVM: ```shell -$ qvm-copy 2.0-haveno-netvm_maker.sh +$ qvm-copy 2.1-haveno-netvm_maker.sh ``` + Select "sys-haveno" for "Target" of Pop-Up @@ -275,6 +275,8 @@ $ bash /tmp/haveno/0.2-dom0.sh

(Within reason, can adjust to personal preference)

++ Click "Applications" Tab + + Click "<<" Button + Highlight "Haveno" Under "Available" @@ -333,7 +335,7 @@ $ qvm-copy /tmp/haveno/3.0-haveno-appvm_taker.sh #### Scripted (Maker) ##### In `dispXXXX` AppVM: ```shell -$ qvm-copy /tmp/haveno/3.1-haveno-appvm_maker.sh "$HAVENO_NETVM_ONION_ADDRESS" +$ qvm-copy /tmp/haveno/3.1-haveno-appvm_maker.sh ``` + Select "haveno" for "Target" of Pop-Up @@ -342,7 +344,7 @@ $ qvm-copy /tmp/haveno/3.1-haveno-appvm_maker.sh "$HAVENO_NETVM_ONION_ADDRESS" ##### In `haveno` AppVM: ```shell -% sudo zsh QubesIncoming/dispXXXX/3.0-haveno-appvm_maker.sh +% sudo zsh QubesIncoming/dispXXXX/3.0-haveno-appvm_maker.sh "$HAVENO_NETVM_ONION_ADDRESS" ``` #### CLI (Maker) ##### In `haveno` AppVM: From d6faa6be307e0c98b0b21bfa94723ac5092d45a7 Mon Sep 17 00:00:00 2001 From: PromptPunksFauxCough Date: Sun, 23 Feb 2025 10:45:38 +0000 Subject: [PATCH 06/31] typo --- scripts/install_qubes/scripts/3.1-haveno-appvm_maker.sh | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/scripts/install_qubes/scripts/3.1-haveno-appvm_maker.sh b/scripts/install_qubes/scripts/3.1-haveno-appvm_maker.sh index 6822f713c4..35f9d3b3bc 100644 --- a/scripts/install_qubes/scripts/3.1-haveno-appvm_maker.sh +++ b/scripts/install_qubes/scripts/3.1-haveno-appvm_maker.sh @@ -2,7 +2,7 @@ ## ./haveno-on-qubes/scripts/3.1-haveno-appvm_maker.sh if [[ $# -ne 1 ]] ; then - printf "\nNo arguments provided!\n\nThis script requires an argument to by provided:\nOnion Address of Haveno NetVM\n\nPlease review documentation and try again.\n\nExiting now ...\n" + printf "\nNo arguments provided!\n\nThis script requires an argument to be provided:\nOnion Address of Haveno NetVM\n\nPlease review documentation and try again.\n\nExiting now ...\n" exit 1 fi @@ -45,6 +45,5 @@ chown -R $(ls /home):$(ls /home) /home/$(ls /home)/.local/share/applications echo_blue "Haveno AppVM configuration complete." printf "%s \n" "Press [ENTER] to complete ..." read ans -exit -#poweroff - +#exit +poweroff From d1d54655ed21ea049723b6c8bec80e0f96aaca20 Mon Sep 17 00:00:00 2001 From: PromptPunksFauxCough Date: Sun, 23 Feb 2025 10:48:37 +0000 Subject: [PATCH 07/31] typo --- scripts/install_qubes/scripts/3.0-haveno-appvm_taker.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/install_qubes/scripts/3.0-haveno-appvm_taker.sh b/scripts/install_qubes/scripts/3.0-haveno-appvm_taker.sh index c08eb04889..2ef14ec390 100644 --- a/scripts/install_qubes/scripts/3.0-haveno-appvm_taker.sh +++ b/scripts/install_qubes/scripts/3.0-haveno-appvm_taker.sh @@ -28,6 +28,6 @@ chown -R $(ls /home):$(ls /home) /home/$(ls /home)/.local/share/applications/hav echo_blue "Haveno AppVM configuration complete." printf "%s \n" "Press [ENTER] to complete ..." read ans -exit -#poweroff +#exit +poweroff From d87c80815befd70ce9ff8741f177f508a02c4d01 Mon Sep 17 00:00:00 2001 From: PromptPunksFauxCough Date: Sun, 23 Feb 2025 10:50:01 +0000 Subject: [PATCH 08/31] typo --- scripts/install_qubes/scripts/2.1-haveno-netvm_maker.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/install_qubes/scripts/2.1-haveno-netvm_maker.sh b/scripts/install_qubes/scripts/2.1-haveno-netvm_maker.sh index 0ffcb64a80..a271357f10 100644 --- a/scripts/install_qubes/scripts/2.1-haveno-netvm_maker.sh +++ b/scripts/install_qubes/scripts/2.1-haveno-netvm_maker.sh @@ -2,7 +2,7 @@ ## ./haveno-on-qubes/scripts/2.1-haveno-netvm_maker.sh if [[ $# -ne 1 ]] ; then - printf "\nNo arguments provided!\n\nThis script requires an argument to by provided:\nIP Address of Haveno AppVM\n\nPlease review documentation and try again.\n\nExiting now ...\n" + printf "\nNo arguments provided!\n\nThis script requires an argument to be provided:\nIP Address of Haveno AppVM\n\nPlease review documentation and try again.\n\nExiting now ...\n" exit 1 fi From 1c9a5b7cb010d0c690d31ec39dda260dcf597ec3 Mon Sep 17 00:00:00 2001 From: PromptPunksFauxCough Date: Sun, 23 Feb 2025 10:51:27 +0000 Subject: [PATCH 09/31] Update 1.0-haveno-templatevm.sh --- scripts/install_qubes/scripts/1.0-haveno-templatevm.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/install_qubes/scripts/1.0-haveno-templatevm.sh b/scripts/install_qubes/scripts/1.0-haveno-templatevm.sh index fcdb0a92c7..5a85eff584 100644 --- a/scripts/install_qubes/scripts/1.0-haveno-templatevm.sh +++ b/scripts/install_qubes/scripts/1.0-haveno-templatevm.sh @@ -119,8 +119,8 @@ function remote { echo_blue "Haveno TemplateVM installation and configuration complete." printf "%s \n" "Press [ENTER] to complete ..." read ans - exit - #poweroff + #exit + poweroff } From e00926c79c3db50a5d8f4d30af3c736feea5858a Mon Sep 17 00:00:00 2001 From: PromptPunksFauxCough Date: Sun, 23 Feb 2025 10:53:44 +0000 Subject: [PATCH 10/31] forgot to set preference --- scripts/install_qubes/scripts/0.1-dom0.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/install_qubes/scripts/0.1-dom0.sh b/scripts/install_qubes/scripts/0.1-dom0.sh index 26a3347f36..4f8c4b630d 100644 --- a/scripts/install_qubes/scripts/0.1-dom0.sh +++ b/scripts/install_qubes/scripts/0.1-dom0.sh @@ -2,5 +2,5 @@ ## ./haveno-on-qubes/scripts/0.1-dom0.sh ## Create Haveno NetVM: -qvm-create --template whonix-gateway-17 --class AppVM --label=orange --property memory=512 --property maxmem=512 --property netvm=sys-firewall sys-haveno && qvm-start sys-haveno +qvm-create --template whonix-gateway-17 --class AppVM --label=orange --property memory=512 --property maxmem=512 --property netvm=sys-firewall sys-haveno && qvm-prefs --set sys-haveno provides_network True && qvm-start sys-haveno From c1b454bccc6d1d59779ad73184f1bcf58b4786b4 Mon Sep 17 00:00:00 2001 From: PromptPunksFauxCough Date: Sun, 23 Feb 2025 10:55:40 +0000 Subject: [PATCH 11/31] timing --- scripts/install_qubes/scripts/0.3-dom0.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/install_qubes/scripts/0.3-dom0.sh b/scripts/install_qubes/scripts/0.3-dom0.sh index bfef4b12fe..a305947fef 100644 --- a/scripts/install_qubes/scripts/0.3-dom0.sh +++ b/scripts/install_qubes/scripts/0.3-dom0.sh @@ -2,5 +2,5 @@ ## ./haveno-on-qubes/scripts/0.3-dom0.sh ## Remove Haveno GuestVMs -qvm-shutdown --force haveno haveno-template sys-haveno && qvm-remove haveno haveno-template sys-haveno +qvm-shutdown --force haveno haveno-template sys-haveno ; qvm-remove haveno haveno-template sys-haveno From cb9fd8e2302c66a3c06a8e9b5c6ad467aca4c1bd Mon Sep 17 00:00:00 2001 From: PromptPunksFauxCough Date: Sun, 23 Feb 2025 11:25:24 +0000 Subject: [PATCH 12/31] add example --- scripts/install_qubes/README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/scripts/install_qubes/README.md b/scripts/install_qubes/README.md index b8e24aad34..b6f9d93008 100644 --- a/scripts/install_qubes/README.md +++ b/scripts/install_qubes/README.md @@ -222,6 +222,15 @@ $ qvm-copy 2.1-haveno-netvm_maker.sh % sudo zsh QubesIncoming/dispXXXX/2.0-haveno-netvm_maker.sh "$HAVENO_APPVM_IP" ``` +

Note:

+

The IPv4 address of the Haveno AppVM can be found via the Qubes Manager GUI

+ +

Example:

+ +```shell +$ sudo zsh QubesIncoming/dispXXXX/2.0-haveno-netvm_maker.sh "10.111.0.42" +``` + #### CLI (Maker) ##### In `sys-haveno` NetVM: ###### Prepare Maker Hidden Service: From 3dd80acb2096f9ef841be6827368190c39a6c3e9 Mon Sep 17 00:00:00 2001 From: PromptPunksFauxCough Date: Sun, 23 Feb 2025 11:47:50 +0000 Subject: [PATCH 13/31] reorg --- scripts/install_qubes/README.md | 206 ++++++++++++++++---------------- 1 file changed, 103 insertions(+), 103 deletions(-) diff --git a/scripts/install_qubes/README.md b/scripts/install_qubes/README.md index b6f9d93008..9c599d61a1 100644 --- a/scripts/install_qubes/README.md +++ b/scripts/install_qubes/README.md @@ -58,6 +58,109 @@ $ bash /tmp/haveno/0.0-dom0.sh $ qvm-clone whonix-workstation-17 haveno-template && qvm-start haveno-template ``` +### **Create & Start Haveno NetVM**: +#### Scripted +##### In `dom0`: +```shell +$ mkdir -p /tmp/haveno && qvm-run -p dispXXXX 'cat /tmp/haveno/0.0-dom1.sh' > /tmp/haveno/0.1-dom0.sh +$ bash /tmp/haveno/0.1-dom0.sh +``` + +#### GUI +##### Via `Qubes Manager`: + ++ Click "New qube" Button + ++ Enter "sys-haveno" for "Name and label" + ++ Click the Button Beside "Name and label" and Select "orange" + ++ Select "whonix-gateway-17" from "Template" Drop-Down + ++ Select "sys-firewall" from "Networking" Drop-Down + ++ Tick "Launch settings after creation" Radio-Box + ++ Click OK + ++ Click "Advanced" Tab + ++ Enter "512" for "Initial memory" + +

(Within reason, can adjust to personal preference)

+ ++ Enter "512" for "Max memory" + +

(Within reason, can adjust to personal preference)

+ ++ Tick "Provides network" Radio-Box + ++ Click "Apply" Button + ++ Click "OK" Button + ++ Click "Start/Resume" Button + +#### CLI +##### In `dom0`: +```shell +$ qvm-create --template whonix-gateway-17 --class AppVM --label=orange --property memory=512 --property maxmem=512 --property netvm=sys-firewall --property provides_network=true sys-haveno +``` + +### **Create & Start Haveno AppVM**: +#### Scripted +##### In `dom0`: +```shell +$ mkdir -p /tmp/haveno && qvm-run -p dispXXXX 'cat /tmp/haveno/0.2-dom0.sh' > /tmp/haveno/0.2-dom0.sh +$ bash /tmp/haveno/0.2-dom0.sh +``` +#### GUI +##### Via `Qubes Manager`: + ++ Click "New qube" Button + ++ Enter "haveno" for "Name and label" + ++ Click the Button Beside "Name and label" and Select "orange" + ++ Select "haveno-template" from "Template" Drop-Down + ++ Select "sys-haveno" from "Networking" Drop-Down + ++ Tick "Launch settings after creation" Radio-Box + ++ Click OK + ++ Click "Advanced" Tab + ++ Enter "2048" for "Initial memory" + +

(Within reason, can adjust to personal preference)

+ ++ Enter "4096" for "Max memory" + +

(Within reason, can adjust to personal preference)

+ ++ Click "Applications" Tab + ++ Click "<<" Button + ++ Highlight "Haveno" Under "Available" + ++ Click ">" Button + ++ Click "Apply" Button + ++ Click "OK" Button + ++ Click "Start/Resume" Button + +#### CLI +##### In `dom0`: +```shell +$ qvm-create --template haveno-template --class AppVM --label=orange --property memory=2048 --property maxmem=4096 --property netvm=sys-haveno haveno +$ printf 'haveno-Haveno.desktop' | qvm-appmenus --set-whitelist – haveno +``` ### *Build Haveno TemplateVM:* #### Scripted @@ -132,55 +235,6 @@ Note: # if [[ $(cat /tmp/desktop*.SHA-256) =~ $(sha256sum /opt/haveno/lib/app/desktop*.jar | awk '{ print $1 }') ]] ; then printf $'SHA Hash IS valid!\n' && printf 'Happy trading!\n'; else printf $'WARNING: Bad Hash!\n' && exit; fi ``` -### **Create & Start Haveno NetVM**: -#### Scripted -##### In `dom0`: -```shell -$ mkdir -p /tmp/haveno && qvm-run -p dispXXXX 'cat /tmp/haveno/0.0-dom1.sh' > /tmp/haveno/0.1-dom0.sh -$ bash /tmp/haveno/0.1-dom0.sh -``` - -#### GUI -##### Via `Qubes Manager`: - -+ Click "New qube" Button - -+ Enter "sys-haveno" for "Name and label" - -+ Click the Button Beside "Name and label" and Select "orange" - -+ Select "whonix-gateway-17" from "Template" Drop-Down - -+ Select "sys-firewall" from "Networking" Drop-Down - -+ Tick "Launch settings after creation" Radio-Box - -+ Click OK - -+ Click "Advanced" Tab - -+ Enter "512" for "Initial memory" - -

(Within reason, can adjust to personal preference)

- -+ Enter "512" for "Max memory" - -

(Within reason, can adjust to personal preference)

- -+ Tick "Provides network" Radio-Box - -+ Click "Apply" Button - -+ Click "OK" Button - -+ Click "Start/Resume" Button - -#### CLI -##### In `dom0`: -```shell -$ qvm-create --template whonix-gateway-17 --class AppVM --label=orange --property memory=512 --property maxmem=512 --property netvm=sys-firewall --property provides_network=true sys-haveno -``` - ### **Build Haveno NetVM:** #### Scripted (Taker) ##### In `dispXXXX` AppVM: @@ -250,60 +304,7 @@ $ sudo zsh QubesIncoming/dispXXXX/2.0-haveno-netvm_maker.sh "10.111.0.42" > HiddenServicePort 9999 $HAVENO_APPVM_IP:9999 -### **Create & Start Haveno AppVM**: -#### Scripted -##### In `dom0`: -```shell -$ mkdir -p /tmp/haveno && qvm-run -p dispXXXX 'cat /tmp/haveno/0.2-dom0.sh' > /tmp/haveno/0.2-dom0.sh -$ bash /tmp/haveno/0.2-dom0.sh -``` -#### GUI -##### Via `Qubes Manager`: -+ Click "New qube" Button - -+ Enter "haveno" for "Name and label" - -+ Click the Button Beside "Name and label" and Select "orange" - -+ Select "haveno-template" from "Template" Drop-Down - -+ Select "sys-haveno" from "Networking" Drop-Down - -+ Tick "Launch settings after creation" Radio-Box - -+ Click OK - -+ Click "Advanced" Tab - -+ Enter "2048" for "Initial memory" - -

(Within reason, can adjust to personal preference)

- -+ Enter "4096" for "Max memory" - -

(Within reason, can adjust to personal preference)

- -+ Click "Applications" Tab - -+ Click "<<" Button - -+ Highlight "Haveno" Under "Available" - -+ Click ">" Button - -+ Click "Apply" Button - -+ Click "OK" Button - -+ Click "Start/Resume" Button - -#### CLI -##### In `dom0`: -```shell -$ qvm-create --template haveno-template --class AppVM --label=orange --property memory=2048 --property maxmem=4096 --property netvm=sys-haveno haveno -$ printf 'haveno-Haveno.desktop' | qvm-appmenus --set-whitelist – haveno -``` ### **Build Haveno AppVM**: #### Scripted (Taker) @@ -420,4 +421,3 @@ $ qvm-shutdown --force haveno haveno-template sys-haveno && qvm-remove haveno ha ### **XMR**: ***85mRPDHW9SuGTDUoMJvt9W4u16Yp1j1SFDrcbfKH2vP1b59nZ62aKVqjfLoyxXrMZYMkNBGzAsuvCCDHPo4AHGx4K8Zmet6*** - From 8402ecbd59b50b123869b09c4646fb004b2bb86f Mon Sep 17 00:00:00 2001 From: PromptPunksFauxCough Date: Sun, 23 Feb 2025 12:05:52 +0000 Subject: [PATCH 14/31] oops --- scripts/install_qubes/scripts/0.2-dom0.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/install_qubes/scripts/0.2-dom0.sh b/scripts/install_qubes/scripts/0.2-dom0.sh index 6aedece8b7..a15961cd44 100644 --- a/scripts/install_qubes/scripts/0.2-dom0.sh +++ b/scripts/install_qubes/scripts/0.2-dom0.sh @@ -2,6 +2,6 @@ ## ./haveno-on-qubes/scripts/0.2-dom0.sh ## Create Haveno AppVM: -qvm-create --template haveno-template --class AppVM --label=orange --property memory=2048 --property maxmem=4096 --property netvm=sys-haveno haveno && qvm-start haveno-template +qvm-create --template haveno-template --class AppVM --label=orange --property memory=2048 --property maxmem=4096 --property netvm=sys-haveno haveno && qvm-start haveno printf 'haveno-Haveno.desktop' | qvm-appmenus --set-whitelist - haveno From 9f1e1061b7766cbc08b815bd03cca9f5e828468d Mon Sep 17 00:00:00 2001 From: PromptPunksFauxCough Date: Sun, 23 Feb 2025 12:15:28 +0000 Subject: [PATCH 15/31] damn docs --- scripts/install_qubes/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/install_qubes/README.md b/scripts/install_qubes/README.md index 9c599d61a1..306d4e0133 100644 --- a/scripts/install_qubes/README.md +++ b/scripts/install_qubes/README.md @@ -273,7 +273,7 @@ $ qvm-copy 2.1-haveno-netvm_maker.sh ##### In `sys-haveno` NetVM: ```shell -% sudo zsh QubesIncoming/dispXXXX/2.0-haveno-netvm_maker.sh "$HAVENO_APPVM_IP" +% sudo zsh QubesIncoming/dispXXXX/2.1-haveno-netvm_maker.sh "$HAVENO_APPVM_IP" ```

Note:

@@ -282,7 +282,7 @@ $ qvm-copy 2.1-haveno-netvm_maker.sh

Example:

```shell -$ sudo zsh QubesIncoming/dispXXXX/2.0-haveno-netvm_maker.sh "10.111.0.42" +$ sudo zsh QubesIncoming/dispXXXX/2.1-haveno-netvm_maker.sh "10.111.0.42" ``` #### CLI (Maker) From ce0e4b20905daee82e35a02cfd2df1bb93a31bee Mon Sep 17 00:00:00 2001 From: PromptPunksFauxCough Date: Sun, 23 Feb 2025 12:44:44 +0000 Subject: [PATCH 16/31] haste = bad --- scripts/install_qubes/scripts/3.1-haveno-appvm_maker.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/install_qubes/scripts/3.1-haveno-appvm_maker.sh b/scripts/install_qubes/scripts/3.1-haveno-appvm_maker.sh index 35f9d3b3bc..c05b3ab224 100644 --- a/scripts/install_qubes/scripts/3.1-haveno-appvm_maker.sh +++ b/scripts/install_qubes/scripts/3.1-haveno-appvm_maker.sh @@ -40,10 +40,10 @@ read ans ### Adjust Desktop Launcher: echo_blue "Adjustng desktop launcher ..." mkdir -p /home/$(ls /home)/\.local/share/applications -sed 's|/opt/haveno/bin/Haveno|/opt/haveno/bin/Haveno --socks5ProxyXmrAddress=127.0.0.1:9050 --useTorForXmr=on --nodePort=9999 --hiddenServiceAddress=$ONION|g' /opt/haveno/lib/haveno-Haveno.desktop > /home/$(ls /home)/.local/share/applications/haveno-Haveno.desktop +sed "s|/opt/haveno/bin/Haveno|/opt/haveno/bin/Haveno --socks5ProxyXmrAddress=127.0.0.1:9050 --useTorForXmr=on --nodePort=9999 --hiddenServiceAddress=$ONION|g" /opt/haveno/lib/haveno-Haveno.desktop > /home/$(ls /home)/.local/share/applications/haveno-Haveno.desktop chown -R $(ls /home):$(ls /home) /home/$(ls /home)/.local/share/applications echo_blue "Haveno AppVM configuration complete." printf "%s \n" "Press [ENTER] to complete ..." read ans -#exit -poweroff +exit +#poweroff From 532051853207084719c2be58fee9ba65c88a54ea Mon Sep 17 00:00:00 2001 From: PromptPunksFauxCough Date: Sun, 23 Feb 2025 13:52:49 +0000 Subject: [PATCH 17/31] user supplied vars --- scripts/install_qubes/README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/scripts/install_qubes/README.md b/scripts/install_qubes/README.md index 306d4e0133..21f6222393 100644 --- a/scripts/install_qubes/README.md +++ b/scripts/install_qubes/README.md @@ -197,7 +197,7 @@ $ sudo bash QubesIncoming/dispXXXX/1.0-haveno-templatevm.sh "https://github.com/ ###### Download & Import Project PGP Key: ```shell # export https_proxy=http://127.0.0.1:8082 -# export KEY_SEARCH="PACKAGE_PGP_FINGERPRINT" +# export KEY_SEARCH="" ```

Example:

@@ -273,7 +273,7 @@ $ qvm-copy 2.1-haveno-netvm_maker.sh ##### In `sys-haveno` NetVM: ```shell -% sudo zsh QubesIncoming/dispXXXX/2.1-haveno-netvm_maker.sh "$HAVENO_APPVM_IP" +% sudo zsh QubesIncoming/dispXXXX/2.1-haveno-netvm_maker.sh "" ```

Note:

@@ -301,7 +301,7 @@ $ sudo zsh QubesIncoming/dispXXXX/2.1-haveno-netvm_maker.sh "10.111.0.42" > ConnectionPadding 1 > HiddenServiceDir /var/lib/tor/haveno-dex/ -> HiddenServicePort 9999 $HAVENO_APPVM_IP:9999 +> HiddenServicePort 9999 :9999 @@ -354,7 +354,7 @@ $ qvm-copy /tmp/haveno/3.1-haveno-appvm_maker.sh ##### In `haveno` AppVM: ```shell -% sudo zsh QubesIncoming/dispXXXX/3.0-haveno-appvm_maker.sh "$HAVENO_NETVM_ONION_ADDRESS" +% sudo zsh QubesIncoming/dispXXXX/3.0-haveno-appvm_maker.sh "" ``` #### CLI (Maker) ##### In `haveno` AppVM: @@ -369,7 +369,7 @@ $ qvm-copy /tmp/haveno/3.1-haveno-appvm_maker.sh > ## Haveno-DEX > ConnectionPadding 1 > HiddenServiceDir /var/lib/tor/haveno-dex/ -> HiddenServicePort 9999 $HAVENO_APPVM_IP:9999 +> HiddenServicePort 9999 :9999 ```shell # tail /usr/local/etc/torrc.d/50_user.conf From 480382ffc9cf1642f6bece20e0a7ddd13819771c Mon Sep 17 00:00:00 2001 From: PromptPunksFauxCough Date: Sun, 23 Feb 2025 13:54:33 +0000 Subject: [PATCH 18/31] user vars (again) --- scripts/install_qubes/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/install_qubes/README.md b/scripts/install_qubes/README.md index 21f6222393..0d4cfd16ee 100644 --- a/scripts/install_qubes/README.md +++ b/scripts/install_qubes/README.md @@ -289,7 +289,7 @@ $ sudo zsh QubesIncoming/dispXXXX/2.1-haveno-netvm_maker.sh "10.111.0.42" ##### In `sys-haveno` NetVM: ###### Prepare Maker Hidden Service: ```shell -# printf "\nConnectionPadding 1\nHiddenServiceDir /var/lib/tor/haveno-dex/\nHiddenServicePort 9999 $HAVENO_APPVM_IP:9999\n\n" >> /usr/local/etc/torrc.d/50_user.conf +# printf "\nConnectionPadding 1\nHiddenServiceDir /var/lib/tor/haveno-dex/\nHiddenServicePort 9999 :9999\n\n" >> /usr/local/etc/torrc.d/50_user.conf ``` ###### View & Verify Change: From e97e0bac5af2de61b5376c8c03fd9abe536f508f Mon Sep 17 00:00:00 2001 From: PromptPunksFauxCough Date: Sun, 23 Feb 2025 14:01:29 +0000 Subject: [PATCH 19/31] uncapital --- scripts/install_qubes/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/install_qubes/README.md b/scripts/install_qubes/README.md index 0d4cfd16ee..9892c359e0 100644 --- a/scripts/install_qubes/README.md +++ b/scripts/install_qubes/README.md @@ -277,7 +277,7 @@ $ qvm-copy 2.1-haveno-netvm_maker.sh ```

Note:

-

The IPv4 address of the Haveno AppVM can be found via the Qubes Manager GUI

+

The IPv4 address of the haveno AppVM can be found via the Qubes Manager GUI

Example:

From 274409b3adf6a4db81fb9b4e57f991bf438c0a53 Mon Sep 17 00:00:00 2001 From: PromptPunksFauxCough Date: Sun, 23 Feb 2025 14:44:44 +0000 Subject: [PATCH 20/31] too. much. refactor. --- scripts/install_qubes/scripts/1.0-haveno-templatevm.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/install_qubes/scripts/1.0-haveno-templatevm.sh b/scripts/install_qubes/scripts/1.0-haveno-templatevm.sh index 5a85eff584..be6d0d907f 100644 --- a/scripts/install_qubes/scripts/1.0-haveno-templatevm.sh +++ b/scripts/install_qubes/scripts/1.0-haveno-templatevm.sh @@ -32,9 +32,9 @@ function remote { ## Define URL & PGP Fingerprint etc. vars: - user_url=$1 + user_url=$PRECOMPILED_URL base_url=$(printf ${user_url} | awk -F'/' -v OFS='/' '{$NF=""}1') - expected_fingerprint=$2 + expected_fingerprint=$FINGERPRINT binary_filename=$(awk -F'/' '{ print $NF }' <<< "$user_url") package_filename="haveno.deb" signature_filename="${binary_filename}.sig" From 65b61cf7983c1e56867241458ac602da2e870746 Mon Sep 17 00:00:00 2001 From: PromptPunksFauxCough Date: Sun, 23 Feb 2025 15:48:32 +0000 Subject: [PATCH 21/31] timing reorg --- scripts/install_qubes/scripts/0.2-dom0.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/install_qubes/scripts/0.2-dom0.sh b/scripts/install_qubes/scripts/0.2-dom0.sh index a15961cd44..6f52637632 100644 --- a/scripts/install_qubes/scripts/0.2-dom0.sh +++ b/scripts/install_qubes/scripts/0.2-dom0.sh @@ -2,6 +2,6 @@ ## ./haveno-on-qubes/scripts/0.2-dom0.sh ## Create Haveno AppVM: -qvm-create --template haveno-template --class AppVM --label=orange --property memory=2048 --property maxmem=4096 --property netvm=sys-haveno haveno && qvm-start haveno +qvm-create --template haveno-template --class AppVM --label=orange --property memory=2048 --property maxmem=4096 --property netvm=sys-haveno haveno printf 'haveno-Haveno.desktop' | qvm-appmenus --set-whitelist - haveno From 25bf36080883e8e4f3aeaa8ae52b9ce3b72a3d08 Mon Sep 17 00:00:00 2001 From: PromptPunksFauxCough Date: Sun, 23 Feb 2025 21:15:40 +0000 Subject: [PATCH 22/31] haste mistakes --- scripts/install_qubes/scripts/3.0-haveno-appvm_taker.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/scripts/install_qubes/scripts/3.0-haveno-appvm_taker.sh b/scripts/install_qubes/scripts/3.0-haveno-appvm_taker.sh index 2ef14ec390..412a9dcbec 100644 --- a/scripts/install_qubes/scripts/3.0-haveno-appvm_taker.sh +++ b/scripts/install_qubes/scripts/3.0-haveno-appvm_taker.sh @@ -23,11 +23,10 @@ printf "\n# Restart FW\nwhonix_firewall\n\n" >> /rw/config/rc.local ### Adjust Desktop Launcher: echo_blue "Adjustng desktop launcher ..." mkdir -p /home/$(ls /home)/\.local/share/applications -sed 's|/opt/haveno/bin/Haveno|/opt/haveno/bin/Haveno --torControlPort=9051 --socks5ProxyXmrAddress=127.0.0.1:9050 --useTorForXmr=on|g' > /home/$(ls /home)/.local/share/applications/haveno-Haveno.desktop +sed 's|/opt/haveno/bin/Haveno|/opt/haveno/bin/Haveno --torControlPort=9051 --socks5ProxyXmrAddress=127.0.0.1:9050 --useTorForXmr=on|g' /opt/haveno/lib/haveno-Haveno.desktop > /home/$(ls /home)/.local/share/applications/haveno-Haveno.desktop chown -R $(ls /home):$(ls /home) /home/$(ls /home)/.local/share/applications/haveno-Haveno.desktop echo_blue "Haveno AppVM configuration complete." printf "%s \n" "Press [ENTER] to complete ..." read ans #exit poweroff - From 656ed092831a327cec5eca45c854da14e5d3ac52 Mon Sep 17 00:00:00 2001 From: PromptPunksFauxCough Date: Sun, 23 Feb 2025 21:34:11 +0000 Subject: [PATCH 23/31] update onion grater --- scripts/install_qubes/README.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/scripts/install_qubes/README.md b/scripts/install_qubes/README.md index 9892c359e0..1ec13b2928 100644 --- a/scripts/install_qubes/README.md +++ b/scripts/install_qubes/README.md @@ -255,13 +255,10 @@ $ qvm-copy 2.0-haveno-netvm_taker.sh ##### In `sys-haveno` NetVM: ###### *Add Taker onion-grater Profile*: ```shell -# onion-grater-add 40_bisq +# onion-grater-add 40_haveno # poweroff ``` -

Note:

-

This works because the profile is already available by default via the onion-grater package while, haveno and bisq share the same default port of 9999

- #### Scripted (Maker) ##### In `dispXXXX` AppVM: ```shell From a8157f9f2164b98574af4fd792aa9ab08321518f Mon Sep 17 00:00:00 2001 From: PromptPunksFauxCough Date: Sun, 23 Feb 2025 21:34:51 +0000 Subject: [PATCH 24/31] update onion grater --- scripts/install_qubes/scripts/2.0-haveno-netvm_taker.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/install_qubes/scripts/2.0-haveno-netvm_taker.sh b/scripts/install_qubes/scripts/2.0-haveno-netvm_taker.sh index 734cbd836b..95a2989cf4 100644 --- a/scripts/install_qubes/scripts/2.0-haveno-netvm_taker.sh +++ b/scripts/install_qubes/scripts/2.0-haveno-netvm_taker.sh @@ -16,7 +16,7 @@ echo_red() { ## onion-grater # Add onion-grater Profile echo_blue "\nAdding onion-grater Profile ..." -onion-grater-add 40_bisq +onion-grater-add 40_haveno #echo_blue "\nRestarting onion-grater Service ..." #systemctl restart onion-grater.service echo_blue "Haveno NetVM configuration complete." From cd51e74f303e267c5d77e7979c2f2d200f7beb0c Mon Sep 17 00:00:00 2001 From: PromptPunksFauxCough Date: Sun, 23 Feb 2025 22:29:02 +0000 Subject: [PATCH 25/31] Update README.md (again) --- scripts/install_qubes/README.md | 86 +++++++++++++++++++++++++++------ 1 file changed, 70 insertions(+), 16 deletions(-) diff --git a/scripts/install_qubes/README.md b/scripts/install_qubes/README.md index 1ec13b2928..f1c4217e99 100644 --- a/scripts/install_qubes/README.md +++ b/scripts/install_qubes/README.md @@ -62,7 +62,7 @@ $ qvm-clone whonix-workstation-17 haveno-template && qvm-start haveno-template #### Scripted ##### In `dom0`: ```shell -$ mkdir -p /tmp/haveno && qvm-run -p dispXXXX 'cat /tmp/haveno/0.0-dom1.sh' > /tmp/haveno/0.1-dom0.sh +$ mkdir -p /tmp/haveno && qvm-run -p dispXXXX 'cat /tmp/haveno/0.1-dom0.sh' > /tmp/haveno/0.1-dom0.sh $ bash /tmp/haveno/0.1-dom0.sh ``` @@ -104,7 +104,7 @@ $ bash /tmp/haveno/0.1-dom0.sh #### CLI ##### In `dom0`: ```shell -$ qvm-create --template whonix-gateway-17 --class AppVM --label=orange --property memory=512 --property maxmem=512 --property netvm=sys-firewall --property provides_network=true sys-haveno +$ qvm-create --template whonix-gateway-17 --class AppVM --label=orange --property memory=512 --property maxmem=512 --property netvm=sys-firewall sys-haveno && qvm-prefs --set sys-haveno provides_network True && qvm-start sys-haveno ``` ### **Create & Start Haveno AppVM**: @@ -159,7 +159,7 @@ $ bash /tmp/haveno/0.2-dom0.sh ##### In `dom0`: ```shell $ qvm-create --template haveno-template --class AppVM --label=orange --property memory=2048 --property maxmem=4096 --property netvm=sys-haveno haveno -$ printf 'haveno-Haveno.desktop' | qvm-appmenus --set-whitelist – haveno +$ printf 'haveno-Haveno.desktop' | qvm-appmenus --set-whitelist - haveno ``` ### *Build Haveno TemplateVM:* @@ -176,7 +176,7 @@ $ printf 'haveno-Haveno.desktop' | qvm-appmenus --set-whitelist – haveno ##### In `haveno-template` TemplateVM: ```shell -% sudo bash QubesIncoming/dispXXXX/1.0-haveno-templatevm.sh "PACKAGE_ARCHIVE_URL" "PACKAGE_PGP_FINGERPRINT" +% sudo bash QubesIncoming/dispXXXX/1.0-haveno-templatevm.sh "" "" ```

Example:

@@ -286,7 +286,7 @@ $ sudo zsh QubesIncoming/dispXXXX/2.1-haveno-netvm_maker.sh "10.111.0.42" ##### In `sys-haveno` NetVM: ###### Prepare Maker Hidden Service: ```shell -# printf "\nConnectionPadding 1\nHiddenServiceDir /var/lib/tor/haveno-dex/\nHiddenServicePort 9999 :9999\n\n" >> /usr/local/etc/torrc.d/50_user.conf +# printf "\n## Haveno-DEX\nConnectionPadding 1\nHiddenServiceDir /var/lib/tor/haveno-dex/\nHiddenServicePort 9999 :9999\n\n" >> /usr/local/etc/torrc.d/50_user.conf ``` ###### View & Verify Change: @@ -301,8 +301,6 @@ $ sudo zsh QubesIncoming/dispXXXX/2.1-haveno-netvm_maker.sh "10.111.0.42" > HiddenServicePort 9999 :9999 - - ### **Build Haveno AppVM**: #### Scripted (Taker) ##### In `dispXXXX` AppVM: @@ -339,6 +337,32 @@ $ qvm-copy /tmp/haveno/3.0-haveno-appvm_taker.sh # tail /rw/config/rc.local # poweroff ``` + +###### Adjust Desktop Launcher: +```shell +# mkdir -p /home/$(ls /home)/\.local/share/applications +# sed 's|/opt/haveno/bin/Haveno|/opt/haveno/bin/Haveno --torControlPort=9051 --socks5ProxyXmrAddress=127.0.0.1:9050 --useTorForXmr=on|g' /opt/haveno/lib/haveno-Haveno.desktop > /home/$(ls /home)/.local/share/applications/haveno-Haveno.desktop +# chown -R $(ls /home):$(ls /home) /home/$(ls /home)/.local/share/applications/haveno-Haveno.desktop +``` + +###### View & Verify Change: +

Confirm output contains:

+ +> [Desktop Entry] +> Name=Haveno +> Comment=Haveno +> Exec=/opt/haveno/bin/Haveno --torControlPort=9051 --socks5ProxyXmrAddress=127.0.0.1:9050 --useTorForXmr=on +> Icon=/opt/haveno/lib/Haveno.png +> Terminal=false +> Type=Application +> Categories=Network +> MimeType= + +```shell +# tail /home/$(ls /home)/.local/share/applications/haveno-Haveno.desktop +# poweroff +``` + #### Scripted (Maker) ##### In `dispXXXX` AppVM: ```shell @@ -353,26 +377,56 @@ $ qvm-copy /tmp/haveno/3.1-haveno-appvm_maker.sh ```shell % sudo zsh QubesIncoming/dispXXXX/3.0-haveno-appvm_maker.sh "" ``` + #### CLI (Maker) ##### In `haveno` AppVM: -###### Prepare Maker Hidden Service +###### Prepare Firewall Settings ```shell -# printf "\nConnectionPadding 1\nHiddenServiceDir /var/lib/tor/haveno-dex/\nHiddenServicePort 9999 $HAVENO_APPVM_IP:9999\n\n" >> /usr/local/etc/torrc.d/50_user.conf +# printf "\n# Prepare Local FW Settings\nmkdir -p /usr/local/etc/whonix_firewall.d\n" >> /rw/config/rc.local +# printf "\n# Poke FW\nprintf \"EXTERNAL_OPEN_PORTS+=\\\\\" 9999 \\\\\"\\\n\" | tee /usr/local/etc/whonix_firewall.d/50_user.conf\n" >> /rw/config/rc.local +# printf "\n# Restart FW\nwhonix_firewall\n\n" >> /rw/config/rc.local ``` -###### View & Verify Change +###### View & Verify Change:

Confirm output contains:

-> ## Haveno-DEX -> ConnectionPadding 1 -> HiddenServiceDir /var/lib/tor/haveno-dex/ -> HiddenServicePort 9999 :9999 +> # Poke FW +> printf "EXTERNAL_OPEN_PORTS+=" 9999 "\n" | tee /usr/local/etc/whonix_firewall.d/50_user.conf +> +> # Restart FW +> whonix_firewall ```shell -# tail /usr/local/etc/torrc.d/50_user.conf +# tail /rw/config/rc.local # poweroff ``` +###### Create Desktop Launcher: +```shell +# mkdir -p /home/$(ls /home)/\.local/share/applications +# sed "s|/opt/haveno/bin/Haveno|/opt/haveno/bin/Haveno --socks5ProxyXmrAddress=127.0.0.1:9050 --useTorForXmr=on --nodePort=9999 --hiddenServiceAddress=|g" /opt/haveno/lib/haveno-Haveno.desktop > /home/$(ls /home)/.local/share/applications/haveno-Haveno.desktop +# chown -R $(ls /home):$(ls /home) /home/$(ls /home)/.local/share/applications +``` + +###### View & Verify Change: +

Confirm output contains:

+ +> [Desktop Entry] +> Name=Haveno +> Comment=Haveno +> Exec=/opt/haveno/bin/Haveno --socks5ProxyXmrAddress=127.0.0.1:9050 --useTorForXmr=on --nodePort=9999 --hiddenServiceAddress= +> Icon=/opt/haveno/lib/Haveno.png +> Terminal=false +> Type=Application +> Categories=Network +> MimeType= + +```shell +# tail /home/$(ls /home)/.local/share/applications/haveno-Haveno.desktop +# poweroff +``` + + ### **Remove Haveno AppVM, TemplateVM & NetVM:** #### Scripted ##### In `dom0`: @@ -410,7 +464,7 @@ $ bash /tmp/haveno/0.3-dom0.sh #### CLI ##### In `dom0`: ```shell -$ qvm-shutdown --force haveno haveno-template sys-haveno && qvm-remove haveno haveno-template sys-haveno +$ qvm-shutdown --force --quiet haveno haveno-template sys-haveno && qvm-remove --force --quiet haveno haveno-template sys-haveno ``` From 39c34bc355124dbbe208d27ea8e4d149e1018f80 Mon Sep 17 00:00:00 2001 From: PromptPunksFauxCough Date: Sun, 23 Feb 2025 22:30:09 +0000 Subject: [PATCH 26/31] Update 0.3-dom0.sh --- scripts/install_qubes/scripts/0.3-dom0.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/install_qubes/scripts/0.3-dom0.sh b/scripts/install_qubes/scripts/0.3-dom0.sh index a305947fef..4bdae35533 100644 --- a/scripts/install_qubes/scripts/0.3-dom0.sh +++ b/scripts/install_qubes/scripts/0.3-dom0.sh @@ -2,5 +2,5 @@ ## ./haveno-on-qubes/scripts/0.3-dom0.sh ## Remove Haveno GuestVMs -qvm-shutdown --force haveno haveno-template sys-haveno ; qvm-remove haveno haveno-template sys-haveno +qvm-shutdown --force --quiet haveno haveno-template sys-haveno && qvm-remove --force --quiet haveno haveno-template sys-haveno From 72edfbf69fc9297ba2065b310e67675c2f3ef997 Mon Sep 17 00:00:00 2001 From: PromptPunksFauxCough Date: Sun, 23 Feb 2025 23:20:13 +0000 Subject: [PATCH 27/31] drop redundant --nodePort=9999 --- scripts/install_qubes/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/install_qubes/README.md b/scripts/install_qubes/README.md index f1c4217e99..b6d19a1386 100644 --- a/scripts/install_qubes/README.md +++ b/scripts/install_qubes/README.md @@ -404,7 +404,7 @@ $ qvm-copy /tmp/haveno/3.1-haveno-appvm_maker.sh ###### Create Desktop Launcher: ```shell # mkdir -p /home/$(ls /home)/\.local/share/applications -# sed "s|/opt/haveno/bin/Haveno|/opt/haveno/bin/Haveno --socks5ProxyXmrAddress=127.0.0.1:9050 --useTorForXmr=on --nodePort=9999 --hiddenServiceAddress=|g" /opt/haveno/lib/haveno-Haveno.desktop > /home/$(ls /home)/.local/share/applications/haveno-Haveno.desktop +# sed "s|/opt/haveno/bin/Haveno|/opt/haveno/bin/Haveno --socks5ProxyXmrAddress=127.0.0.1:9050 --useTorForXmr=on --hiddenServiceAddress=|g" /opt/haveno/lib/haveno-Haveno.desktop > /home/$(ls /home)/.local/share/applications/haveno-Haveno.desktop # chown -R $(ls /home):$(ls /home) /home/$(ls /home)/.local/share/applications ``` @@ -414,7 +414,7 @@ $ qvm-copy /tmp/haveno/3.1-haveno-appvm_maker.sh > [Desktop Entry] > Name=Haveno > Comment=Haveno -> Exec=/opt/haveno/bin/Haveno --socks5ProxyXmrAddress=127.0.0.1:9050 --useTorForXmr=on --nodePort=9999 --hiddenServiceAddress= +> Exec=/opt/haveno/bin/Haveno --socks5ProxyXmrAddress=127.0.0.1:9050 --useTorForXmr=on --hiddenServiceAddress= > Icon=/opt/haveno/lib/Haveno.png > Terminal=false > Type=Application From 945db0aed48e72997b0436d0abf370d7dc3c84bd Mon Sep 17 00:00:00 2001 From: PromptPunksFauxCough Date: Sun, 23 Feb 2025 23:21:04 +0000 Subject: [PATCH 28/31] dropping --nodePort=9999 --- scripts/install_qubes/scripts/3.1-haveno-appvm_maker.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/install_qubes/scripts/3.1-haveno-appvm_maker.sh b/scripts/install_qubes/scripts/3.1-haveno-appvm_maker.sh index c05b3ab224..6404004c9b 100644 --- a/scripts/install_qubes/scripts/3.1-haveno-appvm_maker.sh +++ b/scripts/install_qubes/scripts/3.1-haveno-appvm_maker.sh @@ -40,7 +40,7 @@ read ans ### Adjust Desktop Launcher: echo_blue "Adjustng desktop launcher ..." mkdir -p /home/$(ls /home)/\.local/share/applications -sed "s|/opt/haveno/bin/Haveno|/opt/haveno/bin/Haveno --socks5ProxyXmrAddress=127.0.0.1:9050 --useTorForXmr=on --nodePort=9999 --hiddenServiceAddress=$ONION|g" /opt/haveno/lib/haveno-Haveno.desktop > /home/$(ls /home)/.local/share/applications/haveno-Haveno.desktop +sed "s|/opt/haveno/bin/Haveno|/opt/haveno/bin/Haveno --socks5ProxyXmrAddress=127.0.0.1:9050 --useTorForXmr=on --hiddenServiceAddress=$ONION|g" /opt/haveno/lib/haveno-Haveno.desktop > /home/$(ls /home)/.local/share/applications/haveno-Haveno.desktop chown -R $(ls /home):$(ls /home) /home/$(ls /home)/.local/share/applications echo_blue "Haveno AppVM configuration complete." printf "%s \n" "Press [ENTER] to complete ..." From f2248166849ee4765b7e31581a7503bc5dc4ad2e Mon Sep 17 00:00:00 2001 From: PromptPunksFauxCough Date: Mon, 24 Feb 2025 03:12:08 +0000 Subject: [PATCH 29/31] meh --- scripts/install_qubes/README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/scripts/install_qubes/README.md b/scripts/install_qubes/README.md index b6d19a1386..3f16bd9a29 100644 --- a/scripts/install_qubes/README.md +++ b/scripts/install_qubes/README.md @@ -335,7 +335,6 @@ $ qvm-copy /tmp/haveno/3.0-haveno-appvm_taker.sh ```shell # tail /rw/config/rc.local -# poweroff ``` ###### Adjust Desktop Launcher: @@ -398,7 +397,6 @@ $ qvm-copy /tmp/haveno/3.1-haveno-appvm_maker.sh ```shell # tail /rw/config/rc.local -# poweroff ``` ###### Create Desktop Launcher: From 0f920f18ed546126b8205a13e5f6865acb3ddccc Mon Sep 17 00:00:00 2001 From: PromptPunksFauxCough Date: Mon, 24 Feb 2025 04:42:00 +0000 Subject: [PATCH 30/31] sdwdate --- scripts/install_qubes/scripts/3.1-haveno-appvm_maker.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/scripts/install_qubes/scripts/3.1-haveno-appvm_maker.sh b/scripts/install_qubes/scripts/3.1-haveno-appvm_maker.sh index 6404004c9b..b2c6a66807 100644 --- a/scripts/install_qubes/scripts/3.1-haveno-appvm_maker.sh +++ b/scripts/install_qubes/scripts/3.1-haveno-appvm_maker.sh @@ -22,6 +22,11 @@ echo_red() { ONION=$1 +## Adjust sdwdate Configuration +mkdir -p /usr/local/etc/sdwdate-gui.d +printf "gateway=sys-haveno\n" > /usr/local/etc/sdwdate-gui.d/50_user.conf + + ## Prepare Firewall Settings echo_blue "\nConfiguring FW ..." printf "\n# Prepare Local FW Settings\nmkdir -p /usr/local/etc/whonix_firewall.d\n" >> /rw/config/rc.local From 08c507864a19537d285489d346064c564c608b86 Mon Sep 17 00:00:00 2001 From: PromptPunksFauxCough Date: Mon, 24 Feb 2025 04:49:41 +0000 Subject: [PATCH 31/31] sdwdate --- scripts/install_qubes/scripts/3.0-haveno-appvm_taker.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/scripts/install_qubes/scripts/3.0-haveno-appvm_taker.sh b/scripts/install_qubes/scripts/3.0-haveno-appvm_taker.sh index 412a9dcbec..07f3dac641 100644 --- a/scripts/install_qubes/scripts/3.0-haveno-appvm_taker.sh +++ b/scripts/install_qubes/scripts/3.0-haveno-appvm_taker.sh @@ -12,6 +12,10 @@ echo_red() { echo -e "\033[0;31m$1\033[0m" } +## Adjust sdwdate Configuration +mkdir -p /usr/local/etc/sdwdate-gui.d +printf "gateway=sys-haveno\n" > /usr/local/etc/sdwdate-gui.d/50_user.conf + ## Prepare Firewall Settings echo_blue "\nConfiguring FW ..."