shermand100 / PiNodeXMR

Monero Node for Single Board Computers with Web Interface and additional tools pre-configured. Self Installing.
GNU General Public License v3.0
219 stars 41 forks source link

New Optimal Recommended Hardware Configuration (May be advanced for some) #39

Open ChiefGyk3D opened 3 years ago

ChiefGyk3D commented 3 years ago

I tested out the Rock Pro 64 4GB with great success and was able to get a full node to sync in 26 hours after compiling monero. I followed the documentation and only did a few custom tweaks myself mostly for extending the lifecycle by minimizing writing to the eMMC/SD.

Hardware: Rock Pro 64 4GB 10mm Heatsink with Fan (I honestly think the 30mm passive is better and will be switching to it myself) 16GB eMMC for OS 256GB or higher NVMe SSD rated for endurance (Inland Premium 256GB NVMe I used was rated for 360TBW) 1Gbps Ethernet 3D printed Custom Case (will be adding a 40mm Noctua fan to replace the one on the board when I get a passive heat sink)

My personal network for reference for network conditions 300Mbps Cable internet PfSense Firewall with VLAN for Cryptonodes and a dedicated blocklist for malicious crypto nodes (same as on pinodexmr already just network wide). NAT and Rules setup obviously to allow sync between VLAN

Monero was able to compile in about 3 hour as well as the base PiNodeXMR project, then a full Blockchain sync in a mere 26 hours. It is fully operational as I speak.

Notes:

  1. I disabled swap manually via ZRAM config and systemd, @shermand100 has apparently already addressed this issue. Ideally we want as little swapping and even writing to the eMMC/SD hosting the OS, and the blockchain should be written to the other disc
  2. Modified the mounting of the second drive. By default PiNodeXMR allows UDF and as of recently apparently exFAT. While they are great for compatibility, they are extremely slow. I manually formatted the NVMe to Ext4 and mounted it to /media/xmrblockchain. Ext4 allows for much better performance. IMHO we should allow for an Ext4 option and a possible sync over LAN as Raspiblitz apparently has the capability for I noticed while setting up my old Pi 4 with Samsung T5 that was my former PiNodeXMR to a BTC Node
  3. Removed the /home/pinodexmr/.bitmonero and recreated it as a symlink to /media/xmrblockchain. This allows for there to be a way to enforce the blockchain will only ever be written to the secondary disk. I had the issues prior in early versions the disc would drop out and it would restart writing to the OS disc. This way if it fails, it fails hard and won't write anything. We need to preserve the life and I/O of the eMMC/SD card which is why I did 1 and 3

image

image

image

ChiefGyk3D commented 3 years ago

I had a few ask me about the case. Download it here on Thingiverse happy printing https://www.thingiverse.com/thing:4832104

ghost commented 2 years ago

So great! I copied you and ran into a few issues.

  1. The armv7 Monero binaries that PiNodeXMR downloaded were 32-bit and we couldn’t figure out why they were not executable until someone pointed out the RockPro64 Armbian OS is 64-bit. So I manually installed the official armv8 binaries and everything works now.

  2. The Armbian software includes a “nand-sata-install” command when, run as root, moves the entire system over to ext4 connected USB drive. The sdcard is only needed for boot. This avoids the symlink issue you’re talking about.

  3. You didn’t mention which Armbian OS you installed but I decided to install Bullseye (since I saw that option in the PiNode installer) and it seems to work well IF I make sure to update the system after first install and before first reboot. Otherwise it hangs.

  4. My case isn’t as cool as yours :) but I used the metal case sold by Pine64 that also has a passive heat sink connecting the CPU to the metal of the case. It’s really small, black, and cool looking for $15 or whatever.

PLK2 commented 2 years ago

Thank you both for doing this. Helps me out a ton getting setup on my RockPro64.

dawiepoolman commented 2 years ago

This is very useful learnings, thanks for sharing