Bisq on TAILS - wiki needs updating

Hi all. I’ve successfully installed Bisq on TAILS, but I ran into a few minor issues along the way.

I want to update the wiki. There’s a link to log in, but no way to register. Am I able to get permission to update the wiki? Or can someone make the changes for me?

Essentially:

  • The command service onion-grater restart must be replaced with systemctl restart onion-grater.service

  • The command “mv ~/.local/share/Bisq/* /live/persistence/TailsData_unlocked/dotfiles/.local/share/Bisq” will fail. This can be fixed by running these two commands first:
    sudo mkdir -p /live/persistence/TailsData_unlocked/dotfiles/.local/share/Bisq
    sudo chown amnesia:amnesia /live/persistence/TailsData_unlocked/dotfiles/.local/share/Bisq

  • The use of “dotfiles” in TAILS can be confusing for newbies. It would be helpful to include a link to the TAILS documentation:
    Tails - Persistent Storage

  • The Bisq wiki says that user data only needs to be moved to the dotfiles after running it for the first time. However, if Bisq ever creates any NEW files, they will be lost on reboot unless they are also copied to the dotfiles.

(The persistent dotfiles directory in TAILS only creates links for files, not directories. Newly created files are not automatically made persistent just because they are part of Bisq’s directory structure.)

Example:

  1. User installs Bisq in Tails according to the wiki.
  2. User runs Bisq, waits for it to sync, exits, and copies user data to dotfiles.
  3. User reboots, runs Bisq and creates a wallet password.
  4. Bisq creates new wallet files in non-persistent home directory.
  5. User reboots, and finds that Bisq has lost all wallet data.

For that reason, I think it’s necessary to move user data to the dotfiles before rebooting EVERY time that Bisq has been used. This can be done by running the above mv command again. It will cause errors for files/links that already exist, which can be safely ignored:

mv /home/amnesia/.local/share/Bisq/* /live/persistence/TailsData_unlocked/dotfiles/.local/share/Bisq

Hope that helps someone.

1 Like

EDIT:

I forgot to post the link to the wiki page I’m talking about. Here it is:
https://bisq.wiki/Running_Bisq_on_Tails

Also, the mv command in the second-to-last line of my last post isn’t ideal. The following cp command is better as it only copies files that aren’t already symlinked in the user’s home directory (thus no errors):

cp -arnv /home/amnesia/.local/share/Bisq/. /live/persistence/TailsData_unlocked/dotfiles/.local/share/Bisq/

Attributes for cp command:
-a = archive. Do not follow links. Preserve timestamps, ownership, etc.
-r = recursive. Copy subdirectories and their contents too.
-n = no-clobber. Do not overwrite existing files (as they will already be using dotfile links).
-v = verbose. List any new files that were copied.

I had doubts about giving you access to the wiki or trying to prove the page myself. Since accessing the wiki could take too much time, I tried to do my best.
https://bisq.wiki/index.php?title=Running_Bisq_on_Tails&type=revision&diff=3047&oldid=2961

1 Like

Hi Mnm. I completely understand and thank you for for taking the time to update the wiki!

Can I suggest a few further changes?

==============

Fairly Important:

  • In the “Installation Script” section (right at the bottom of the page), the command service onion-grater restart also needs to be changed to systemctl restart onion-grater.service
  • The old “Existing User” section was correct. The options and locations used in the cp command I suggested don’t apply here. Could you swap that whole section out so it is exactly as it was before?

Very trivial:

  • In the contents, sections “6 Existing user” and “7 Installation Script” should probably be indented/renumbered as sub-sections 5.2 and 5.3.
  • In “Persistent Data Directory” > “New User” section, the sentence:
    “Create persistent file and change file ownership” could be changed to:
    “Create persistent directory and change directory ownership”
  • The two commands that immediately follow would look better separated with a line-break.

==============

One final suggestion (important to prevent data loss):

Whilst testing Bisq, I lost user data by forgetting to run the cp command to make Bisq’s user data persistent before reboot. It’s easy to do, and hardware/power failure would pose the same problem. A simple solution is to run cp in an endless loop whenever Bisq is running.

Let me think, and I’ll return with some text to copy/paste to keep your wiki edits quick and easy.

==============

I finally trusted Bisq enough to load the wallet with coins and make some trades, knowing my user data was safely being “persisted”. Bisq worked perfectly and I had no further issues.

Again, thanks for your efforts in updating the wiki. I will be recommending Bisq on TAILS to others, who will also really appreciate the wiki updates.

Back soon,

HeadsAndTails

Hi again. Sorry for the delay.

As I mentioned, Tails persistent “dotfiles” only links files, not folders. Bisq constantly creates new files in the default (amnesiac) data directory, which then have to be copied to the persistent dotfiles location. This defeats the purpose of using persistent “dotfiles”.

A better solution is to move Bisq’s data directory to a persistent (non-dotfile) location, then create a single directory symlink to it in Bisq’s default (amnesiac) data directory. Symlink creation can be automated in the installation script.


I made a copy of the wiki page source code, and edited it to include all my suggestions. I’ll post it separately below. I thought it’s the easiest way to explain everything?

I’m acting in good faith and just want to help “fix” the wiki. I’m happy to explain/discuss this further, or provide this information another way.

Let me know your thoughts.

Thanks,
HeadsAndTails

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

__TOC__

== Preparations ==

* Configure an [https://tails.boum.org/doc/first_steps/welcome_screen/administration_password/ administration password]
* Configure [https://tails.boum.org/doc/first_steps/persistence/index.en.html persistence]

{{Admonition_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 <code>Bisq-64bit-[version].deb</code> and <code>.asc</code> files.

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

=== Verify your download ===

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

== Install ==

Do a simple <code>sudo dpkg -i [yourbinaryhere]</code>.

=== Configure ===

* Make authcookie readable:
<code>sudo chmod o+r /var/run/tor/control.authcookie</code>

* Configure <code>onion-grater</code>.

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

<pre>
---
- 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
</pre>

Then restart the <code>onion-grater</code> service with <code>sudo systemctl restart onion-grater.service</code>.

* In <code>/usr/share/applications/Bisq.desktop</code>, replace:

<code>Exec=/opt/bisq/bin/Bisq</code>

with:

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

== 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:

<code>mkdir /home/amnesia/Persistent/bisq/
mv /path/to/[yourbinaryhere] /home/amnesia/Persistent/bisq/</code>

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

<code>mkdir /home/amnesia/Persistent/bisq/Bisq/
ln -s /home/amnesia/Persistent/bisq/Bisq /home/amnesia/.local/share/Bisq</code>

=== Existing user ===

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

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

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

<code>/home/amnesia/Persistent/bisq/Bisq/btc_mainnet</code>

== Run Bisq ==

Click <code>Applications</code> > <code>Internet</code> > <code>Bisq</code>.

Or via terminal:

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

== Installation Script ==

Because Tails doesn't persist the Bisq installation [https://bisq.wiki/Running_Bisq_on_Tails#Install_Bisq] or configuration [https://bisq.wiki/Running_Bisq_on_Tails#Configure], 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:
<code>touch ~/Persistent/bisq/install-bisq.sh</code>
* Make script executable:
<code>chmod +x ~/Persistent/bisq/install-bisq.sh</code>
* Edit and save file: 
<pre>
#!/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."
</pre>

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

[[Category:Guides]]

^^ The forum has applied some strange color formatting. But it has not altered the text I posted.

Thank you for your help, me and MnM briefly discussed this matter of updating the wiki; both of us do not have the resources to test it at this time, but I thought we could still add your edits to the wiki, presenting them as “alternative method” and giving credit to you. I will discuss this idea in our support chat.

1 Like

No problem, and thank you both too.

Listing my “alternative method” would be great. I can point my new users to that until you have time to fully verify/test it. :slight_smile:


If you’re going to keep the “original method”, could I suggest the fixes I mentioned in post 4:

  • In the “Installation Script” section (right at the bottom of the page), the command service onion-grater restart also needs to be changed to systemctl restart onion-grater.service
  • The old “Existing User” section (before MnM’s recent edit) was correct. Could you swap that whole section out so it is exactly as it was before?

Thanks again, and let me know if there’s anything else I can do/explain.

HeadsAndTails