Baremetal
Authors: [man4ela | catapulta.eth]
System Requirements
4 vCPU
Debian 12/Ubuntu 22.04
8GB min
16GB Recommended
2.5TB+ (SSD)
Pre-Requisites
sudo apt update -y && sudo apt upgrade -y && sudo apt autoremove -y
sudo apt install -y git make wget gcc pkg-config libusb-1.0-0-dev libudev-dev jq gcc g++ curl libssl-dev screen apache2-utils build-essential pkg-config unzipSetting up Firewall
Set explicit default UFW rules
sudo ufw default deny incoming
sudo ufw default allow outgoingAllow SSH
sudo ufw allow 22/tcpAllow remote RPC connections with Fuse node
sudo ufw allow from ${REMOTE.HOST.IP} to any port 8545 8546Not advised to allow all or unknown IP address to RPC port
Allow P2P Connections
sudo ufw allow 30303/tcp
sudo ufw allow 30303/udpEnable Firewall
sudo ufw enableTo check the status of UFW and see the current rules
sudo ufw status verboseBuilding a Node on Fuse with Nethermind client
Since 08.2022 Fuse is moving from OE client to Nethermind. To bootstrap Fuse archive node this guide covers the steps on how to build Nethermind from source and configure it to run for Fuse Network
Install .NET SDK
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt update
sudo apt install -y apt-transport-https
sudo apt update
sudo apt install -y dotnet-sdk-8.0Download the Latest Nethermind Release Binary
Check release binary page and take the following steps to download the latest Nethermind version:
Create a directory to store the binary and chain data (you might need sudo)
mkdir fuse-archiveUse wget to grab the latest release binary archive and output it to the directory created in the previous step:
wget https://github.com/NethermindEth/nethermind/releases/download/1.27.0/nethermind-1.27.0-220b5b85-linux-x64.zip \
-O /root/fuse-archive/ nethermind-1.27.0-220b5b85-linux-x64.zipUse unzip to extract downloaded archive
unzip nethermind-1.27.0-220b5b85-linux-x64.zipConfiguing Nethermind client
Increase the maximum number of open files
sudo bash -c 'echo "nethermind soft nofile 100000" > /etc/security/limits.d/nethermind.conf'
sudo bash -c 'echo "nethermind hard nofile 100000" >> /etc/security/limits.d/nethermind.conf'Download chainspec file for Fuse
mkdir -p /root/fuse-archive/chainspec
wget https://raw.githubusercontent.com/fuseio/nethermind-client/refs/heads/production/src/Nethermind/Chains/fuse.jsonThe contents of the fuse.json file should be like this:
Create the Configuration File (fuse_archive.cfg)
fuse_archive.cfg)Create Configuration Directory and File:
mkdir -p /root/fuse-archive/configs
nano /root/fuse-archive/configs/fuse_archive.cfgPaste the following configuration into the file:
{
"Init": {
"DiscoveryEnabled": true,
"WebSocketsEnabled": true,
"StoreReceipts" : true,
"ChainSpecPath": "/root/fuse-archive/chainspec/fuse.json",
"BaseDbPath": "nethermind_db/fuse_archive",
"LogFileName": "fuse_archive.logs.txt"
},
"Network": {
"DiscoveryPort": 30303,
"P2PPort": 30303,
"Bootnodes": [
"enode://57ab1850bbd6cbdf48835d19ccf046efd1228e96c5a5db3a3cdbea3036838a99bd9fb9ff1cb708f34443766cf056e15a5d86d46adf431c15dbfe92af9ec65cf0@135.148.233.9:30303",
"enode://9001cf3b321c4c6035b95cf326b7b3524f238aa7bdcdd62f45cf51c4f5e3d0bce0cd5a714c109ebbe4a8806f2017bfd68902ab24e15ab1a2612a120923e31ae9@135.148.232.105:30303"]
"LocalIp": "0.0.0.0",
"ExternalIp": "0.0.0.0"
},
"JsonRpc": {
"Enabled": true,
"Timeout": 20000,
"Host": "0.0.0.0",
"Port": 8545,
"WebSocketsPort": 8546,
"UseMinGasPriceInEstimates": true
},
"Metrics": {
"NodeName": "Fuse_archive"
},
"Bloom": {
"IndexLevelBucketSizes": [
16,
16,
16
]
},
"Pruning": {
"Mode": "None"
},
"Mining": {
"MinGasPrice": "10000000000"
},
"Merge": {
"Enabled": false
}
}Ctrl + X and Y to exit and confirm saving changes to a file
Create Data Directory to store chain data for Fuse blockchain
mkdir /root/fuse-archive/fuse_dataConfigure systemd Service
Ensure that you grant execute permission to the binary file:
sudo chmod +x /root/fuse-archive/Nethermind.RunnerCreate a systemd service file:
sudo nano /etc/systemd/system/nethermind.serviceAdd the following content:
[Unit]
Description=Nethermind Node
Documentation=https://docs.nethermind.io
After=network.target
[Service]
User=root
ExecStart=/root/fuse-archive/Nethermind.Runner \
--config /root/fuse-archive/configs/fuse_archive.cfg \
--datadir /root/fuse-archive/fuse_data \
--TraceStore.Enabled true \
--TraceStore.BlocksToKeep 0 \
--TraceStore.TraceTypes Trace,Rewards \
--Sync.FastSync=false
Restart=on-failure
LimitNOFILE=1000000
[Install]
WantedBy=multi-user.targetCtrl + X and Y to exit and confirm saving changes to a file
Reload systemd and Enable the Service
systemctl enable nethermind #enable nethermind service at system startup
sudo systemctl daemon-reload #refresh systemd configuration when changes made
sudo systemctl start nethermind #start nethermind
sudo systemctl stop nethermind #stop nethermindView Logs for Debugging
journalctl -f -u nethermind #follow logs of nethermind serviceThe logs should look like below and indicate that your node syncs and is expected to reach a chainhead in ~2-3 days
28 Jun 01:13:08 | Finalizing validators for transition signalled within contract at block 473632 after block 473633 (0xba9913...ff8838).
28 Jun 01:13:08 | Applying validator set change before block 473634 (0xae6e4c...881217).
28 Jun 01:13:08 | Downloaded 473,680 / 30,284,955 ( 1.56 %) | current 102 Blk/s | total 156 Blk/s
28 Jun 01:13:09 | Processed 473428... 473681 | 193.72 ms | slot 2,151 ms |⛽ Gas gwei: 0.00 .. 0.00 (0.00) .. 0.00
28 Jun 01:13:09 | - Blocks 254 0.14 MGas | 6 txs | calls 1,835 ( 0) | sload 4,835 | sstore 735 | create 0
28 Jun 01:13:09 | - Block throughput 0.74 MGas/s | 30.97 t/s | 1311.17 Blk/s | recover 0 | process 7
28 Jun 01:13:09 | Signal for transition within contract at block 473732 (0x89197a...464a90). New list of 2 : [0xc736793ff31e04807cbf20b39d50ac7a04a4bdad, 0xd9176e84898a0054680aec3f7c056b200c3d96c3].References
Last updated