Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update qubes whonix wallet isolation user guide #2329

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

realGWM
Copy link

@realGWM realGWM commented Jul 27, 2024

TLDR of changes:

  • add instructions for installing Monero in Whonix using pre-compiled binaries
  • use newer format of qubes policy
  • use qvm-connect-tcp instead of directly using socat
  • use user-level systemd service

Copy link

netlify bot commented Jul 27, 2024

Deploy Preview for barolo-time-757cf9 ready!

Built without sensitive environment variables

Name Link
🔨 Latest commit 0f07fea
🔍 Latest deploy log https://app.netlify.com/sites/barolo-time-757cf9/deploys/66c7091e72007400074ddbb7
😎 Deploy Preview https://deploy-preview-2329--barolo-time-757cf9.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

@plowsof
Copy link
Collaborator

plowsof commented Jul 27, 2024

Thanks for this submission, please remove all edits to the none english files.

@realGWM
Copy link
Author

realGWM commented Jul 27, 2024

Thanks for this submission, please remove all edits to the none english files.

Done.

I guess I misunderstood what "Updates on User Guides" section in the README tells me to do :)

@nahuhh
Copy link
Contributor

nahuhh commented Jul 27, 2024

And please squash, thanks


* Create `monero-wallet-ws` AppVM that will be used for Monero wallet using whonix-workstation as the template and set networking to none.

* Create `monerod-ws` AppVM that will be used for Monero daemon using whonix-workstation as the template and set networking to sys-whonix. Before moving on, make sure that this workstation has enough private storage. You can estimate how much space you need by checking the size of the [raw blockchain]({{ site.baseurl }}/downloads/#blockchain). Keep in mind that the blockchain will take up more space with time.
Copy link
Author

@realGWM realGWM Jul 27, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The message about checking the size of the raw blockchain is outdated (the file is 86G while actual blockchain is 200G).
It should either be replaced with a hardcoded number (e.g. "make sure that this AppVM has at least 250 gigabytes of private storage") which is not ideal because it will quickly get outdated, or with another source of truth for current blockchain size (but I'm not sure what to use as such here).

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If recommending a pruned node, the blockchain sizendoesnt change as quickly.

I personally recommend an abundance of free space to account for wear and future.
If someone asks me, i say 128-256gb for pruned node, 512-1tb for full node, and that its better to go big. (write cycles run out slower on a larger drive, and the blockchain grows at rates that cant be predicted)

Copy link
Author

@realGWM realGWM Jul 28, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm afraid that writing something like "it's recommended to have 512gb-1tb of private storage" might dissuade some/many people from running a full node because this number is too high.

And just to make sure that we are on the same page - in Qubes, "private storage" refers to how much space is allocated to a Qube (a VM), not to the total capacity of your SSD.
Screenshot_2024-07-28_11-59-46
Also due to the way AppVMs work (only /home is persistent), size of files other than the blockchain can be neglected (what I'm trying to say - we don't need to account for "everything else" when writing how much "private storage" a user needs, only blockchain size should be taken into account).
For example, on my system (we ignore everything that is not in /home, as it is not persisted anyway):

[workstation user ~]% du -s ~           
209266636	/home/user
[workstation user ~]% du -s ~/.bitmonero
209265992	/home/user/.bitmonero

So the total space taken by the Qube is almost the same as size of the blockchain :)

And also, this "private storage" number can be increased at any time. You can start with 250G, and change it to 300G as soon as you get a notification that your Qube has not enough space.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it might be good idea to mention in the guide that running a pruned node is also an option.

I've never tried that though, is simply adding --prune-blockchain to the daemon start params enough?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess if we don't have a good resource that shows the current size of blockchain (btw I still don't understand why https://moneroj.net/blockchainsize/ shows current blockchain size as ~147G, while my synced blockchain seems to be 200G in size), the best option is to write something like "at the time of writing this guide, the recommended minimum size for a full node is 300G and 100G for a pruned one", which will probably be relevant for a few years? WDYT?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It will prune all* blocks*, but wont shrink the lmbd file size

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@nahuhh sorry, thanks for correction.

@realGWM realGWM force-pushed the update-qubes-whonix-wallet-isolation-user-guide branch from 6c34c9d to 5c02388 Compare July 27, 2024 20:15
@plowsof
Copy link
Collaborator

plowsof commented Jul 27, 2024

Thanks for this submission, please remove all edits to the none english files.

Done.

I guess I misunderstood what "Updates on User Guides" section in the README tells me to do :)

No misunderstanding, sorry, its just misleading info @ https://github.com/monero-project/monero-site?tab=readme-ov-file#updates-on-user-guides , that text should be for the maintainer / person who is tasked with handling this. we use tools (po4a combined with weblate) to handle that + it helps with review.

@realGWM
Copy link
Author

realGWM commented Jul 27, 2024

And please squash, thanks

Done.

Although I will probably need to make a few more commits at least addressing the blockchain size problem I've described above, but I'll try not to forget squashing :)

@realGWM realGWM force-pushed the update-qubes-whonix-wallet-isolation-user-guide branch 2 times, most recently from 33ab566 to dcfa773 Compare July 29, 2024 20:33
@realGWM
Copy link
Author

realGWM commented Jul 29, 2024

I've added info about pruning, and in absence of better options I replaced advice for estimating amount of space required to download blockchain with hardcoded 300GB recommendation.

This is ready for review now


## 2. In the AppVM `monerod-ws`:
We will install both the Monero wallet and daemon in the same whonix-workstation template using pre-compiled binaries. You can simplify the installation process by using the `monero` package available in the Whonix repositories, but it is not up-to-date and also only ships CLI wallet.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it safe to use distribution packages? See also: feather-wallet/feather#193 (comment)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should not use the whonix packaged versions

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The text here doesn't endorse using a packaged version of Monero, merely mentions that it is also an option.

But let me know if you think it shouldn't be mentioned - I'll remove it.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It should not be used

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, I removed the paragraph that mentions installing monero from whonix's repos.

@realGWM realGWM force-pushed the update-qubes-whonix-wallet-isolation-user-guide branch from dcfa773 to 0f07fea Compare August 22, 2024 09:47
Copy link
Contributor

@HardenedSteel HardenedSteel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me but I didn't test.


- The second workstation will be for the `monerod` daemon, it will be referred to as `monerod-ws`. You will have `NetVM` set to the Whonix gateway `sys-whonix`. Before moving on, make sure this workstation has enough private storage. You can estimate how much space you need by checking the size of the [raw blockchain]({{ site.baseurl }}/downloads/#blockchain). Keep in mind that the blockchain will take up more space with time.
In this guide we will use the official Monero GUI Qt wallet installed in a whonix-workstation template, but any non-custodial wallet, where you can specify what node to use, should work. You can use a different template for your wallet if you want (and it might even be easier to install if the distribution used for the template contains an up-to-date version of your preferred wallet in the repositories).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this section may need to revised

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants