Running Firedancer (Solana Testnet) on Edgevana

Max Kaplan
Edgevana
Published in
3 min readNov 4, 2023

As you might have heard at Breakpoint, Firedancer 🔥 💃 is now live on testnet! Here at Edgevana, when we saw this, we were excited to play with it ourselves and get a validator up and running. We also wanted to help the community run Firedancer on their own given our commitment to being the #1 place to run a Solana validator! Thank you to both Jump Crypto and Solana Foundation for getting us to this tremendous milestone! Edgevana is now proud to say we are running our own Firedancer testnet node now!

Firedancer is very early-stage software. You should NOT run this on mainnet and should proceed at your own discretion. Only run Firedancer on testnet / devnet.

Below, we will describe how to set up a Firedancer node on testnet.

Prerequisites

  • ≥ Ubuntu 22.04 (you can check this by running lsb_release -a )
  • ≥ 5.7 Linux Kernel (you can check this by running uname -a )
  • Testnet keys set up. Reference the Solana documentation on how to do this
  • An active vote account. Reference the Solana documentation on how to do this
  • Reference the Firedancer documentation for hardware requirements

Setup

Install the latest security updates on your machine

sudo apt update
sudo apt upgrade

Install required dependencies

sudo apt install gcc clang git make net-tools
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Clone Firedancer

git clone --recurse-submodules https://github.com/firedancer-io/firedancer.git
cd firedancer

Install Firedancer

FD_AUTO_INSTALL_PACKAGES=1 ./deps.sh check install
make -j fdctl solana

(Optional) Symlink Firedancer to your path

sudo ln -s /home/$USER/firedancer/build/native/gcc/bin/fdctl /usr/local/bin/fdctl

Add a Firedancer user

sudo adduser firedancer

Add Firedancer to sudo

According to the Firedancer documentation, it’s currently recommended to run Firedancer with sudo due to low level optimizations made by the client like kernel bypass networking. Add firedancer ALL=(ALL) NOPASSWD:ALLto the end of the file after running the below command

sudo visudo

Configure Ledger

It’s recommended to run ledger on a seperate disk. On your node, you should run lsblk to get your device names as they might differ from the ones below

sudo mkfs -t ext4 /dev/nvme0n1
sudo mkdir -p /mnt/ledger
sudo chown -R firedancer:firedancer /mnt/ledger/
sudo mount /dev/nvme0n1 /mnt/ledger

Switch over to Firedancer user

sudo su - firedancer

Add /home/firedancer/config.toml

You should also copy your keys to your server you generated in the prequisites section to your node and have the paths match the config

user = "firedancer"

[gossip]
entrypoints = [
"entrypoint.testnet.solana.com:8001",
"entrypoint2.testnet.solana.com:8001",
"entrypoint3.testnet.solana.com:8001"
]

[consensus]
identity_path = "/home/firedancer/validator-keypair.json"
vote_account_path = "/home/firedancer/vote-keypair.json"
expected_genesis_hash = "4uhcVJyU9pJkvQyS88uRDiswHXSCkY3zQawwpjk2NsNY"
known_validators = [
"5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on",
"dDzy5SR3AXdYWVqbDEkVFdvSPCtS9ihF5kJkHCtXoFs",
"Ft5fbkqNa76vnsjYNwjDZUXoTWpP7VYm3mtsaQckQADN",
"eoKpUABi59aT4rR9HGS3LcMecfut9x7zJyodWWP43YQ",
"9QxCLckBiJc783jnMvXZubK4wH86Eqqvashtrwvcsgkv",
]

[gossip]
port = 8001

[layout]
affinity = "0-9"

net_tile_count = 2
verify_tile_count = 2

[ledger]
path = "/mnt/ledger"

Add a start script

mkdir bin/
touch bin/validator.sh
chmod +x validator.sh

Add contents to start script

Run vim bin/validator.sh and paste the contents below

#!/usr/bin/env bash
sudo fdctl configure init all --config /home/firedancer/config.toml
sudo fdctl run --config /home/firedancer/config.toml

Add systemd service

Run sudo vim /etc/systemd/system/firedancer.service and paste the contents below

[Unit]
Description=Firedancer Solana
After=network.target
StartLimitIntervalSec=0

[Service]
Type=simple
Restart=always
RestartSec=1
User=firedancer
LimitNOFILE=1000000
LogRateLimitIntervalSec=0
ExecStart=/home/firedancer/bin/validator.sh

[Install]
WantedBy=multi-user.target

Run Firedancer!

sudo systemctl enable --now firedancer

At this point, you should check your logs with journalctl -u firedancer.service -fand make sure Firedancer is running. You should also run solana gossip to make sure that your node is gossiping with the rest of the network!

Next Step: Consider running a validator in Solana’s TdS program to earn incentive rewards or deploy your own Firedancer validator to Solana testnet. When you deploy through Edgevana, you become a part of the vibrant Solana community and open the door to earning even more fantastic rewards. 🔥💃 🚀

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Published in Edgevana

Edgevana the leader in powering the world’s fastest-growing enterprises as they shape the future of the digital economy

No responses yet

What are your thoughts?