Running Bisq on Tails

From Bisq Wiki
Jump to navigation Jump to search

To run Bisq on the Tails OS, a few manual steps are required.

Preparations

Warn
Tails does not persist user data by default. Even with persistence enabled, all data in Bisq's default data directory will be erased as soon as you reboot. This means you will lose your Bisq keys, wallet data, and everything else.

To avoid data loss, make sure that persistence is enabled, and that Bisq user data is stored in a persistent directory before shutting down Tails.

Download

After restarting Tails, go to https://github.com/bisq-network/bisq/releases using your Tor Browser and download the Bisq-64bit-[version].deb and .asc files.

You may have to use wget, because curl may not use Tor and could be blocked from using the internet.

Verify your download

  • wget https://bisq.network/pubkey/[keyid].asc should result in a file [keyid].asc in your working directory. See "Verification" section of release notes for the exact key ID you should use (it's 29CDFD3B as of this writing) to verify your download.
  • Import the key to gpg by gpg --import [keyid].asc
  • Check the signature with gpg --digest-algo SHA256 --verify [yourbinaryhere]{.asc*,} which should give you something like this:
[snip]
gpg: Good signature from "Christoph Atteneder...
[snip]

Install

Do a simple sudo dpkg -i [yourbinaryhere].

Configure

  • Make authcookie readable:

sudo chmod o+r /var/run/tor/control.authcookie

  • Configure onion-grater.

Create a file /etc/onion-grater.d/bisq.yml with contents:

---
- apparmor-profiles:
    - '/opt/bisq/bin/Bisq'
  users:
    - 'amnesia'
  commands:
    AUTHCHALLENGE:
      - 'SAFECOOKIE .*'
    SETEVENTS:
      - 'CIRC WARN ERR'
      - 'CIRC ORCONN INFO NOTICE WARN ERR HS_DESC HS_DESC_CONTENT'
    GETINFO:
      - 'net/listeners/socks'
    ADD_ONION:
      - pattern:     'NEW:(\S+) Port=9999,(\S+)'
        replacement: 'NEW:{} Port=9999,{client-address}:{}'
      - pattern:     '(\S+):(\S+) Port=9999,(\S+)'
        replacement: '{}:{} Port=9999,{client-address}:{}'
    DEL_ONION:
      - '.+'
    HSFETCH:
      - '.+'
  events:
    CIRC:
      suppress: true
    ORCONN:
      suppress: true
    INFO:
      suppress: true
    NOTICE:
      suppress: true
    WARN:
      suppress: true
    ERR:
      suppress: true
    HS_DESC:
      response:
        - pattern:     '650 HS_DESC CREATED (\S+) (\S+) (\S+) \S+ (.+)'
          replacement: '650 HS_DESC CREATED {} {} {} redacted {}'
        - pattern:     '650 HS_DESC UPLOAD (\S+) (\S+) .*'
          replacement: '650 HS_DESC UPLOAD {} {} redacted redacted'
        - pattern:     '650 HS_DESC UPLOADED (\S+) (\S+) .+'
          replacement: '650 HS_DESC UPLOADED {} {} redacted'
        - pattern:     '650 HS_DESC REQUESTED (\S+) NO_AUTH'
          replacement: '650 HS_DESC REQUESTED {} NO_AUTH'
        - pattern:     '650 HS_DESC REQUESTED (\S+) NO_AUTH \S+ \S+'
          replacement: '650 HS_DESC REQUESTED {} NO_AUTH redacted redacted'
        - pattern:     '650 HS_DESC RECEIVED (\S+) NO_AUTH \S+ \S+'
          replacement: '650 HS_DESC RECEIVED {} NO_AUTH redacted redacted'
        - pattern:     '.*'
          replacement: ''
    HS_DESC_CONTENT:
      suppress: true

Then restart the onion-grater service with sudo systemctl restart onion-grater.service.

  • In /usr/share/applications/Bisq.desktop, replace:

Exec=/opt/bisq/bin/Bisq

with:

Exec=/opt/bisq/bin/Bisq --torControlPort 9051 --torControlCookieFile=/var/run/tor/control.authcookie --torControlUseSafeCookieAuth

Persistent Data Directory

Tails will delete all new files when shutting down, unless they are in a persistent storage location.

First, move the Bisq binary you downloaded to a persistent directory:

mkdir /home/amnesia/Persistent/bisq/

mv /path/to/[yourbinaryhere] /home/amnesia/Persistent/bisq/

Then, link Bisq's default data directory to a persistent data directory:

mkdir /home/amnesia/Persistent/bisq/Bisq/

ln -s /home/amnesia/Persistent/bisq/Bisq /home/amnesia/.local/share/Bisq

Existing user

To import user data from another Bisq installation or backup, copy it to the persistent data directory:

cp -r /[yourdirectoryhere]/Bisq/* /home/amnesia/Persistent/bisq/Bisq/

N.B. In this example, the correct path to your btc_mainnet directory should be:

/home/amnesia/Persistent/bisq/Bisq/btc_mainnet

Run Bisq

Click Applications > Internet > Bisq.

Or via terminal:

/opt/bisq/bin/Bisq --torControlPort 9051 --torControlCookieFile=/var/run/tor/control.authcookie --torControlUseSafeCookieAuth

Installation Script

Because Tails doesn't persist the Bisq installation [1] or configuration [2], they must be repeated after every restart. To make life easier, you can automate this in a bash script. Make sure the script is saved somewhere in the Tails persistent directory.

  • Create script file:

touch ~/Persistent/bisq/install-bisq.sh

  • Make script executable:

chmod +x ~/Persistent/bisq/install-bisq.sh

  • Edit and save file:
#!/bin/bash

dpkg -i /home/amnesia/Persistent/bisq/[yourbinaryhere]
echo "Change access rights of /var/run/tor/control.authcookie ..."
chmod o+r /var/run/tor/control.authcookie
echo "Create /etc/onion-grater.d/bisq.yml ..."
echo "---
- apparmor-profiles:
    - '/opt/bisq/bin/Bisq'
  users:
    - 'amnesia'
  commands:
    AUTHCHALLENGE:
      - 'SAFECOOKIE .*'
    SETEVENTS:
      - 'CIRC WARN ERR'
      - 'CIRC ORCONN INFO NOTICE WARN ERR HS_DESC HS_DESC_CONTENT'
    GETINFO:
      - 'net/listeners/socks'
    ADD_ONION:
      - pattern:     'NEW:(\S+) Port=9999,(\S+)'
        replacement: 'NEW:{} Port=9999,{client-address}:{}'
      - pattern:     '(\S+):(\S+) Port=9999,(\S+)'
        replacement: '{}:{} Port=9999,{client-address}:{}'
    DEL_ONION:
      - '.+'
    HSFETCH:
      - '.+'
  events:
    CIRC:
      suppress: true
    ORCONN:
      suppress: true
    INFO:
      suppress: true
    NOTICE:
      suppress: true
    WARN:
      suppress: true
    ERR:
      suppress: true
    HS_DESC:
      response:
        - pattern:     '650 HS_DESC CREATED (\S+) (\S+) (\S+) \S+ (.+)'
          replacement: '650 HS_DESC CREATED {} {} {} redacted {}'
        - pattern:     '650 HS_DESC UPLOAD (\S+) (\S+) .*'
          replacement: '650 HS_DESC UPLOAD {} {} redacted redacted'
        - pattern:     '650 HS_DESC UPLOADED (\S+) (\S+) .+'
          replacement: '650 HS_DESC UPLOADED {} {} redacted'
        - pattern:     '650 HS_DESC REQUESTED (\S+) NO_AUTH'
          replacement: '650 HS_DESC REQUESTED {} NO_AUTH'
        - pattern:     '650 HS_DESC REQUESTED (\S+) NO_AUTH \S+ \S+'
          replacement: '650 HS_DESC REQUESTED {} NO_AUTH redacted redacted'
        - pattern:     '650 HS_DESC RECEIVED (\S+) NO_AUTH \S+ \S+'
          replacement: '650 HS_DESC RECEIVED {} NO_AUTH redacted redacted'
        - pattern:     '.*'
          replacement: ''
    HS_DESC_CONTENT:
      suppress: true" > /etc/onion-grater.d/bisq.yml
echo "Restart onion-grater service ..."
systemctl restart onion-grater.service
echo "Edit Bisq executable file ..."
sed -i 's+Exec=/opt/bisq/bin/Bisq+Exec=/opt/bisq/bin/Bisq --torControlPort 9051 --torControlCookieFile=/var/run/tor/control.authcookie --torControlUseSafeCookieAuth+' /usr/share/applications/bisq-Bisq.desktop
ln -s /home/amnesia/Persistent/bisq/Bisq /home/amnesia/.local/share/Bisq
echo "Bisq installed successfully."

Now you can run this script to install and configure Bisq after a Tails restart: sudo /home/amnesia/Persistent/bisq/install-bisq.sh