# Raspberry Pi Firo Masternode Setup Guide

**URL:** <https://forum.firo.org/t/raspberry-pi-firo-masternode-setup-guide/3134>\
**Category:** Guide\
**Created:** [March 2, 2024, 12:32am UTC](https://forum.firo.org/t/raspberry-pi-firo-masternode-setup-guide/3134 "2024-03-02T00:32:10Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Raccoon](https://forum.firo.org/user_avatar/forum.firo.org/raccoon/32/1524_2.png) [@Raccoon](https://forum.firo.org/u/Raccoon)\
**Post date:** [March 2, 2024, 12:32am UTC](https://forum.firo.org/t/raspberry-pi-firo-masternode-setup-guide/3134/1 "2024-03-02T00:32:10Z")

</div>

Hello everyone,

Recently there have been requests of how to set a Firo Masternode on some single board computers. This guide will go over how to install an OS on your raspberry pi → secure your raspberry pi for use as a masternode → and install Firo Core.

**NOTE: This Guide will not go into use of tools such as nmap or Putty, there are many guides already available for these online**

**NOTE: FIRO CORE CAN NOT RUN ON A 32BIT SYSTEM**

To get your 1000 $FIRO ready for masternode setup please consault the Firo Masternode Guide [Firo masternode setup guide | Firo - Privacy-preserving cryptocurrency](https://firo.org/guide/masternode-setup.html#getting-started) **STEPS 1 - 3**

The only extra steps you will **NEED** to do are:  
Deleting ssh override (if it exists).  
Creating a Static IP.

**-----===== Raspberry Pi Image Setup =====------**  
To start you will need to download Raspberry Pi Imager ([https://www.raspberrypi.com/software/](https://www.raspberrypi.com/software/)) for your host computer.  
 ![device_select](https://forum.firo.org/uploads/default/original/2X/5/50623f39bbbb57b57d056a6093fa39d27544c034.png)  
Select your device from the list provided (I will be using a Raspberry Pi Zero 2W for this guide with a micro SD U1 A1, this is not recommended for long term use.)  
 ![choose_os](https://forum.firo.org/uploads/default/original/2X/1/15b6e7c63e125def11db60ac4c5101cf3e1c5734.png)  
For this guide I am using the Ubuntu 20 Server image but you can use any 64 bit server image.  
 ![choose_storage](https://forum.firo.org/uploads/default/original/2X/8/896c8f974767014d35dbbd126f178a995b6c1175.png)  
Select the storage device you wish to use for your raspberry pi.  
 ![edit_settings](https://forum.firo.org/uploads/default/original/2X/a/a0361ed5c73a913c60c937580161a3338e898e35.png)  
Select Edit Settings

 ![general_setup](https://forum.firo.org/uploads/default/original/2X/3/3f6c158c025f7a2db8ba4cfa5e3da21a4a3db342.png)  
In Edit settings General tab Check `Set Hostname` and enter the name for your server. Example: `masternode_0`  
Check `Set Username and Password` – Use a good password, this account will have sudo privileges.  
If you will be using Wifi check `Configure Wireless LAN` otherwise leave it unchecked.  
You need to select the correct wireless LAN country otherwise your wifi will not work. I live in the US, if you’re not sure your country code is it is usually the 2 letter abbreviation of your country.

Also check `Set locale settings` and set the timezone and keyboard layout.

 ![enable_sshd](https://forum.firo.org/uploads/default/original/2X/1/12529c3240ad9d9d6bbadc4550e078e1d1d3e7c6.png)  
In the services tab check `Enable SSH`, for now we will use password authentication. You can generate your ssh\_key here. It will look something like:

```auto
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDHQuw94qHX2/SvFwWmmGM/5CLAhiZo+rjDPu5agxu/m+Hqg1Fgvvu9boFg27ydl8Z8K0lrN9VVbFRuWWI6utpAzcugroqycbgelckE6i5uVa/XDn9KhvT7kYauD03jwZamRKg6ewb5Z6yqbUyA3y0BCCwcxCboJCKi8VWshStYVDdtYMt3bKpiCaukVh7Ufcho5OWQjeydwktYftAS4prCv0m9c6BsR28V+XVlBEkYf/UuUVtthjyQNw16k9OAZQ4EBwsClRHWwA5Fcz+FDJVOhDu93Jdwk49vLa0KmqFdfvcfvjmiEw0opmMKzBDqE6hXFxx+ZUX30ULlVIXBnFqPX1zDQHWStOtOuNWhnCcbGAKS8EoV8MDepG0sMgvu5YA1hs26cfcsZzFrcjHyLQNANyUYAmlDU+dlJcTptBrBil6VdpPFP61KO4qhNOCWgw6xGnYTYKVTtEjwBRUYwjj5Y7n7Tieuzslj+w4ab+HzKVnajuFGIlCa2UL0zrZP/es= user@host

```

**NOTE:**  
a file will be created in your `.ssh` file named `id_rsa` and `id_rsa.pub` **if this file already exists this same key will be used for every installation** change the name of this file to something relating to your masternode such as `firomn_0_rsa` and `firomn_0_rsa.pub` my using the `mv` command.  
Example `mv {imager created key} {new key name} && mv {imager created key}.pub {new key name}.pub`  
Example: `mv id_rsa firomn_0_rsa && mv id_rsa.pub firomn_0_rsa.pub`

Select Save.

Select Yes.

It will as if you want to overwrite the storage device, double check you have selected the correct device and if so select yes. If not go back and select the correct device.  
Your OS will prompt for a password because overwriting disks requires admin privileges, enter your password.

Your image will now download and install, its recommended to let the imager verify the process was a success.

**-----===== Ubuntu Setup =====-----**  
Install your MicroSD, or plug in your SSD/HDD to a USB port and power source if needed. Plugin to a power source or PoE hat and turn on your Raspberry Pi (if your power supply doesn’t have a switch your Raspberry Pi will power on automatically).  
Give it a few minutes after power on to set up.

To find the IP address of your raspberry pi either log into your router and find it on your DHCP server it will be should be labeled with the hostname you provided to the imager if you did not provide a hostname it should show up as ubuntu. Or you can use a tool such as Nmap to scan your local network, it will have port 22 and only port 22 open. The Raspberry Pi image will have unattended updates set up by default, this will take some time depending on your model.

After you have acquired the IP address use `ssh` or `PuTTY` to create a secure shell. You will be asked if you want to continue connecting, type yes. If you didn’t add a key during the raspberry pi set up it will prompt for a password. Enter the password you provided to the imager.

From here you can use the Firo Masternode Setup Guide [Firo masternode setup guide | Firo - Privacy-preserving cryptocurrency](https://firo.org/guide/masternode-setup.html#installing-a-firewall), or continue with my guide.

The following steps will be preformed on your raspberry pi:

**Update your Raspberry Pi**

Check to see if unattended-updates are still running with the command `ls -l /var/lib/apt/periodic/` if you get an output like:

```auto
total 0
-rw-r--r-- 1 root root 0 Feb 28 19:46 update-stamp
-rw-r--r-- 1 root root 0 Feb 28 19:52 update-success-stamp

```

your unattended-upgrades are still running, wait until they finish to continue.

Switch to your root user with `sudo su -` if your sudo password isn’t good someone could use it to gain root access.

Change your root password with `passwd` to something secure, root user can change anything they want on your server.

`apt update && apt upgrade -y`

**NOTE: ALL of this guide from this point is preformed as `root` user**

**SSH CONFIG**

Use these commands to append to your `/etc/ssh/sshd_config`:

`echo "PermitRootLogin no >> /etc/ssh/sshd_config`  
`echo "MaxAuthTries 1" >> /etc/ssh/sshd_config`  
`echo "MaxSessions 3" >> /etc/ssh/sshd_config`  
`echo "PasswordAuthentication no" >> /etc/ssh/sshd_config`

**This Step Can Be Skipped**  
To avoid every scrapper in the world from detecting that you have port 22-ssh open you can change your default ssh port, i prefer to chose a port over 10000, if you choose to do this please remember this doesn’t make your ssh service more secure necessarily, it just helps keep arbitrage it a bit.

`echo "Port 31337" >> /etc/ssh/sshd_config`

\*this makes your default ssh port 31337 for your firewall and reconnecting over ssh.

Sometimes single-board computers have a ssh password override  
`rm /etc/ssh/sshd_config.d/50-cloud-init.conf`  
to ensure it doesn’t exist, and if it does delete it.

`systemctl restart sshd.service`

From here you should no longer be able to log into your server via ssh without using the key you had generated during start up. If you get disconnected and can not connect again with ssh plug your storage device back into you PC and open the `writable` folder. Then select `etc` folder, `ssh` folder and open the `sshd_config` file. Delete the added lines

 ![Fix_config_mistake](https://forum.firo.org/uploads/default/original/2X/2/2f33f682146c72f8f23bc2f35f4747961c33b69c.png)

**This Step Can Be Skipped**  
**Add Firo User**

Personally I like to create a `firo` user to own my firo daemon. The reason is so the user running the firo service will have no admin privileges adding a bit of security. To do this run:  
`useradd firo`  
`passwd firo`

**Set up a Static IP Address**  
This will prevent your Raspberry Pi from changing its IP address when its DHCP reservation has expired.

The following examples will set your IP address to 192.168.0.210, using your router at address 192.168.0.1. It will also set up your DNS to use CloudFlare Servers at 1.1.1.1 and 1.0.0.1.

You can change the IP address to whatever you want it to be, but make sure you are using the correct network and subnet. For example your router could be at address 192.168.1.1, in which case you would want to use an address in the 192.168.1.X range.

Your subnet is represented by the /24. This is common for most single routers by default. If you have a Mesh Type router your network subnet might be different.

Use the command `ip a` to help you figure out what your network is using.

 ![ip-a](https://forum.firo.org/uploads/default/original/2X/d/d86fc0aa3c01abd876bb96ff551975966b495c16.png)

If you look you will see that my Raspberry Pi Zero 2W is using IP address 192.168.68.52 and its subnet is /22 due to my mesh router. Read your router documentation to find out more if needed.

Also not that my wifi interface is named **wlan0** , your Ethernet interface might be named something like `eth0` be sure to change this to the correct interface in the following steps if needed, so your Raspberry Pi knows what to talk to.

This is for an example of a static IP address using Ethernet:

```auto
network:
    version: 2
    renderer: networkd
    ethernets:
        eth0:
            dhcp4: no
            dhcp6: no
            addresses:
                - 192.168.0.210/24
            nameservers:
                addresses: [1.1.1.1,1.0.0.1]
            routes:
                - to: default
                  via: 192.168.0.1

```

This is for a staticIP using Wifi

```auto
network:
  version: 2
  renderer: networkd
  wifis:
    wlan0:
      dhcp4: no
      dhcp6: no
      addresses: [192.168.0.210/24]
      nameservers:
        addresses: [1.1.1.1,1.0.0.1]
      access-points:
        "NAME-OF-YOUR-WIFI":
          password: "YOUR-WIFI-PASSWORD"
      routes:
        - to: default
          via: 192.168.0.1

```

Using `nano /etc/netplan/50-cloud-init.yaml`  
Copy and paste your required configuration  
`netplan try`  
You will receive an error if you made a mistake.  
If everything was a success using `ip a` again should show your new IP address.  
`cp /etc/netplan/50-cloud-init.yaml /etc/netplan/00-netcfg.yaml`  
`rm /etc/netplan/50-cloud-inti.yaml`  
`netplan try`

If there are no errors move the the next step.

**Configure Server Firewall**  
**NOTE: If you plan on using your home internet and need to find your public IP address you can use `curl ifconfig.me` otherwise You should have the public IP address you will be using for the node available.**

`ufw default deny incoming`  
`ufw default allow outgoing`  
`ufw allow 22/tcp`  
`ufw allow 8168/tcp`  
`iptables -t nat -A OUTPUT -d {PUBLICIP} -s {LOCALSUBNET} -j DNAT --to-destination {LOCALIP}`  
`iptables-save`

**Make a Swapfile**

You need 4GB of memory to run firod efficently, if you dont have 4GB of RAM you can create a swap file (virtual memory) to compensate.  
`fallocate -l 4G /swapfile` **4G will give you a 4GB swap** if you want more or less virtual ram adjust this change the number before the **G** to the desired amount.  
`chmod 600 /swapfile`  
`mkswap /swapfile`  
`swapon /swapfile`  
`printf "/swapfile\tnone\tswap\tsw\t0\t0" >> /etc/fstab`

**Firo-Core Setup**

You can copy the `aarch64` link from [Release Firo v0.14.13.2 · firoorg/firo · GitHub](https://github.com/firoorg/firo/releases/latest) and download it with `wget` pasting the link after. Once downloaded use the command `tar xzvf firo*.tar.gz` to extract the tarball

The user should be the user that will be running the firo service, it should **NOT** be root. **From this point on I will be using `firo` as the username, change this as needed! Continue to work as root**

`chown firo:firo firo*/bin/*`  
`mv firo*/bin/* /usr/local/bin`  
`rm firo*`

If you created the `firo` user in the previous step you can run this to preform all of the Firo-Core Setup steps in one line using this:  
`curl -s https://api.github.com/repos/firoorg/firo/releases/latest |grep download_url |grep aarch|cut -d : -f 2,3|tr -d \"|wget -i - && tar -xf firo*.tar.gz && mv firo*/bin/* /usr/local/bin && chown firo:firo /usr/local/bin/firo* && rm firo*`

If you don’t plan on using a user named firo change `firo:firo` in the `chown firo:firo /usr/local/bin/firo*` to `{YOURUSERNAME}:{YOURUSERNAME}`

**Write firo.conf file**

Create a `.firo` folder with `mkdir /home/firo/.firo`  
Create your config file with `touch /home/firo/.firo/firo.conf`  
add the following lines, editing as needed.  
**NOTE: Make sure you have done steps 1 - 3 from [Firo masternode setup guide | Firo - Privacy-preserving cryptocurrency](https://firo.org/guide/masternode-setup.html)**

```auto
#----
rpcuser=ANYUSERNAME
rpcpassword=ANYPASSWORD
rpcallowip=127.0.0.1
#----
listen=1
server=1
daemon=1
logtimestamps=1
txindex=1
#----
znode=1
externalip=YOUR MASTERNODE IP:8168
znodeblsprivkey=YOUR SECRET OUTPUT FROM STEP 3 HERE

```

Then to make sure your firo user has access to all of the files created:  
`chown -R firo:firo /home/firo`

**Automatically Start Firod on Reset**  
copy and paste this into /etc/systemd/system/firod.service

`nano /etc/systemd/system/firod.service`

```auto
[Unit]
Description=Firo daemon
After=network.target

[Service]
Type=forking
Restart=always
RestartSec=30

User=username
Group=username
PIDFile=/home/firo/.firo/firod.pid

ExecStart=/usr/local/bin/firod
ExecStop=/usr/local/bin/firo-cli stop

[Install]
WantedBy=multi-user.target

```

**Rotate Logs**  
`nano /etc/logrotate.d/firo`  
Copy and paste

```auto
/home/firo/.firo/debug.log {
daily
missingok
rotate 28
compress
copytruncate
}

```

We have done a lot! Make sure everything works properly after a reboot `reboot`  
SSH into your RPi Server again using `ssh -i /path/to/masternode_rsa_key firo@{IPADDRESS}`

This is everything you need to do to configure the Masternode  
Please ensure your router is set up correctly and your masternode is synced to the tip before registering your masternode with **STEP 7** of [Firo masternode setup guide | Firo - Privacy-preserving cryptocurrency](https://firo.org/guide/masternode-setup.html#step-7-registering-your-masternode)  
**Automated script coming soon**  
**You can find me in the [Firo Discord](https://discord.gg/TGZPRbRT3Y) #support and #masternode channels if you need assistance**

---

<div class="post-metadata">

**Author:** ![AJaydono](https://forum.firo.org/user_avatar/forum.firo.org/ajaydono/32/155_2.png) [@AJaydono](https://forum.firo.org/u/AJaydono)\
**Post date:** [March 2, 2024, 8:03am UTC](https://forum.firo.org/t/raspberry-pi-firo-masternode-setup-guide/3134/2 "2024-03-02T08:03:21Z")

</div>

Great work coming up with the guide for Raspberry Pi @Raccoon !

---

<div class="post-metadata">

**Author:** ![Szczepan](https://forum.firo.org/user_avatar/forum.firo.org/szczepan/32/1880_2.png) [@Szczepan](https://forum.firo.org/u/Szczepan)\
**Post date:** [June 14, 2024, 3:07pm UTC](https://forum.firo.org/t/raspberry-pi-firo-masternode-setup-guide/3134/4 "2024-06-14T15:07:24Z")

</div>

Is it possible to set more nodes on the same Raspberry Pi and the same IP, but on different ports?

---

<div class="post-metadata">

**Author:** ![Szczepan](https://forum.firo.org/user_avatar/forum.firo.org/szczepan/32/1880_2.png) [@Szczepan](https://forum.firo.org/u/Szczepan)\
**Post date:** [June 14, 2024, 3:10pm UTC](https://forum.firo.org/t/raspberry-pi-firo-masternode-setup-guide/3134/5 "2024-06-14T15:10:48Z")

</div>

Does the node need to be synchronized with the network and download current blocks? There is not much space on the card for Rasperry Pi and you do not write about redirecting the block recording to some other place.

---

<div class="post-metadata">

**Author:** ![anwar](https://forum.firo.org/user_avatar/forum.firo.org/anwar/32/77_2.png) [@anwar](https://forum.firo.org/u/anwar)\
**Post date:** [June 21, 2024, 9:46am UTC](https://forum.firo.org/t/raspberry-pi-firo-masternode-setup-guide/3134/6 "2024-06-21T09:46:26Z")

</div>

> [@Szczepan](#):
>
> Is it possible to set more nodes on the same Raspberry Pi and the same IP, but on different ports?

Not possible. Firo masternodes use port 8168.

> [@Szczepan](#):
>
> Does the node need to be synchronized with the network and download current blocks? There is not much space on the card for Rasperry Pi and you do not write about redirecting the block recording to some other place.

At this stage it is assumed that everyone that is using a Raspberry Pi to host a node will be using an external SSD/HDD/nVME instead of a micro SD card because of microSD card’s read/write cycle.

---

<div class="post-metadata">

**Author:** ![Flow666](https://forum.firo.org/letter_avatar_proxy/v4/letter/f/2acd7d/32.png) [@Flow666](https://forum.firo.org/u/Flow666)\
**Post date:** [October 4, 2025, 2:26pm UTC](https://forum.firo.org/t/raspberry-pi-firo-masternode-setup-guide/3134/7 "2025-10-04T14:26:31Z")

</div>

Nice guide @Raccoon!

I have a question (or a couple) though. The guide doesn’t go into too much detail how it secures that the masternode will have a dedicated / static IP address on the WAN (internet) or I am not clever enough to figure it out. A static IPv4 address (on the WAN / internet) is a requirement according to the official masternode setup guide from from [firo.org](http://firo.org). Therefore my first question is, if this guide assumes that your home internet access has a static internet facing IP address. If so I think this should be stated in the guide. If not so and this guide is aimed also at person with ISPs that only provide dynamic internet facing IPv4 addresses (like mine for example - I will get assigned a new IP every 24 hours), could you please explain what the magic is that achieves this?

---

<div class="post-metadata">

**Author:** ![mus\_tard](https://forum.firo.org/user_avatar/forum.firo.org/mus_tard/32/2167_2.png) [@mus\_tard](https://forum.firo.org/u/mus_tard)\
**Post date:** [October 24, 2025, 10:08am UTC](https://forum.firo.org/t/raspberry-pi-firo-masternode-setup-guide/3134/8 "2025-10-24T10:08:52Z")

</div>

I don’t think there is any magic here, this part is just omitted, he probably just assumes you have a static IPv4.

One way to achieve this is to get a cheap VPS with low storage/ram (so its cheap) and unlimited bandwidth, then you setup a wireguard vpn from your firo node to the vps and make the firo traffic come out the VPS…

Edit: the cheapest VPS i found was around 4$ a month, there might be even cheaper deals…

---

<div class="post-metadata">

**Author:** ![Flow666](https://forum.firo.org/letter_avatar_proxy/v4/letter/f/2acd7d/32.png) [@Flow666](https://forum.firo.org/u/Flow666)\
**Post date:** [October 24, 2025, 9:14pm UTC](https://forum.firo.org/t/raspberry-pi-firo-masternode-setup-guide/3134/9 "2025-10-24T21:14:56Z")

</div>

Okay, I thought as much. There were just are some commands that I didn’t know like netplan so I thought maybe those achieve some magic. I did some more research and some options to get you a static IP for selfhosting at home IP are GRE Tunnels, VPNs (as proposed by you) and Cloudflare Tunnels (free?). The problem with the former two is that GRE Tunnel offers or getting a dedicated IPv4 in general seems to be just as expensive as some complete VPS hosting offers.

Sadly my own internet connection isn’t that stable at the moment with my aging DSL router so I opted for direct hosting of the firod daemon on a VPS instead. Netcup has a 20,16 Euro for 12 months (=1,68€ per month) offer which I am using at the moment and it seems that a lot of hosting providers also have sales all the time which might be worth looking into. This is offtopic though in this thread.

---

<div class="post-metadata">

**Author:** ![mus\_tard](https://forum.firo.org/user_avatar/forum.firo.org/mus_tard/32/2167_2.png) [@mus\_tard](https://forum.firo.org/u/mus_tard)\
**Post date:** [October 24, 2025, 9:29pm UTC](https://forum.firo.org/t/raspberry-pi-firo-masternode-setup-guide/3134/10 "2025-10-24T21:29:20Z")

</div>

If you have bad dsl then that is the best and cheapest option.

Not sure about cloudflare, is usually used for https stuff. I know tailscale has a free plan and you can forward ports.

But if you have other uses for a VPS its also not a bad idea. It makes sense if you want to learn more and tinker 🙂
