I am writing the Cardano community on behalf of our small group of engineers, presently working on a passion project to establish a Cardano stake pool with:
x1 Raspberry Pi 4 8GB as a Cardano relay
x1 Raspberry Pi 4 8GB to be a block producing node
Shortly after we started the process of downloading the required libraries into Linux, we discovered that the ARM processors are incompatible with the code, which was designed for x86 processors. We started researching a solution and discovered the following projects that had successfully created ARM based Cardano Nodes on Raspberry Pi:
Berry Pool
Cardano on the Rocks
While both of these are great resources, we would prefer to compile the code from source (using IOHK libraries = Building a node from source – IOHK Support). However, during the setup, we could not successfully install an updated Cabal library because of the following error:
-bash: /usr/bin/id: cannot execute binary file
…and further research revealed this was due to the processor incompatibility:
We would like to proceed with compiling the node from code because we eventually want to start using larger Raspberry Pi configurations such as Turing Pi Clusters and I doubt we can customize the code from Berry Pool or Cardano on the Rocks to suit our needs for these more complicated setups.
Considering the above, could you provide any recommendations or refer us to an individual/group/resource who could help us reconcile the ARM processor in Raspberry Pi 4 with the x86 binaries in IOHK/Cardano libraries?
We appreciate your time and look forward to your reply.
Your wasting your time. Regardless that it “can” run the node and relay it can barely run them and the requirement will be just going up. Since mary 1 relay + 1 bp node needs a bit more than 8GB memory so unless they come out with an RPI 16GB just give up with it.
A plain Docker setup, which also runs on a Raspberry Pi
Everything in one script with Docker Compose
Advanced enterprise setup with Kubernetes
here you should find step-by-step instructions to get your nodes up and running.
You could follow the instructions on how to install the 64bit OS on a PI4 and then simply run
$ docker run --detach \
--name=relay \
-p 3001:3001 \
-e CARDANO_UPDATE_TOPOLOGY=true \
-v /mnt/disks/data00:/opt/cardano/data \
nessusio/cardano-node:dev run
This would get you a running relay node which you can then see for yourself whether it can keep up with the load. The relay may be the problem. The Block Producer runs just fine on a Pi 4
I have indeed also seen conditions where the Pi Relay could not keep up and was falling more and more behind. I believe this was because of lots of invalid Tx, which I saw in the log.
That’s a fair point, but as I stated before, it’s more of a passion project: we just want to do it. Plus I feel that Raspberry Pi will get better with time, and since it has a good price point for the hardware, I think it has a lot of future potential. Plus, it seems that Charles enjoys it too:
However, that’s some good info on the memory constraints, and although I still want to work with Raspberry Pi, I’ll be looking at other options with better memory for a more commercial stake pool. I would welcome any hardware recommendations you might have.
Interested in the answer to this. I was hoping to use Rasp Pi to create a staking pool(s) with my senior students. Figured it would be a great way to wrap up the year.
Seemed to compile fine after I resolved a missing dependency “apt-get install libnuma-dev”
Unfortunately even though the relay runs and syncs, it mysteriously stop syncing after a period of time, around 10-30 minutes. No idea what the issue is. CPU is stull humming away at 200%, but the echo just stops and no new tips are added to the DB. Restarting the node restarts the sync, until it stops again. Could be a hardware issue, but I have had a USB3 SSD on this Pi for a long time running block-chains so Im not sure why this happens.
@tomdx We came back to this work today and ran into several problems with setting up docker on the Raspberry Pi. Running into Debian version conflicts with Docker and bash errors. I have a feeling we there are issues with the previously installed libraries from when we started the x86 version of the Cardano node. I think we need to wipe the card and start the Docker installation from scratch.
Sorry for the delay in our replies. We can only work on this project once or twice a week as everyone here has day jobs and families, so we have a limited amount of time to meet and move this forward.
I have a question, I’m pretty “noob” with raspberry pi’s, but I do have a pi 4 8gb here.
Maybe it would be fun to start a stakepool to learn a thing or two, but is it working as intended or is a raspberry pi more a proof of concept that it works, but not really suited for a stakepool?
I started out with with running both the Relay + Block Producer on the same Pi - all on Docker of course. Then, with metadata and native Tokens, I saw a steep increase in Tx activity, which seemed to overwhelm the single Pi. I have since moved the Relay to an Intel machine but kept the Block Producer on the Pi. The BP seems mostly bored …
The ETH node is also running on a Pi4. I have both Pis hosted for very little money, which pays for electricity, network and backup storage. With the improvements in 1.26.0 it may again become possible to move the relay back on a Pi, but that’s is a little early to say for sure.
There’s tons of guides that have been posted so far, but if you want to add in SSD boot, I have the full guide here: GitHub - canad1an/cardano-stake-pool
Not sure what you mean by “barely run them”. There are many RPi stake pools doing just fine on Pi 4B 8GB setups minting many blocks each epoch, even with only one relay connected. We haven’t hit the wall yet and 1.26.1 did improve things.