Cover photo

Step-by-Step Guide: How to Run an Aleo Node

Aleo is a privacy-focused blockchain that leverages zero-knowledge proofs (ZKPs) to enable private smart contracts. Running a node allows you to participate in testnets, mining (Prover), and transaction validation. Below is an up-to-date guide for setting up an Aleo node on Ubuntu 20.04/22.04.

1. Server Requirements

To run an Aleo node efficiently, you’ll need a dedicated server (VPS/Bare Metal) with:

  • Minimum:

    • CPU: 16 cores

    • RAM: 16 GB

    • SSD: 128 GB

    • OS: Ubuntu 20.04/22.04

  • Recommended:

    • CPU: 32 cores

    • RAM: 32 GB

    • Network: 10+ Mbps bandwidth

Note: Some cloud providers (e.g., WebTropia) may block Aleo nodes—prefer dedicated servers (Hetzner, AWS, Oracle Cloud).

2. Install Dependencies

2.1. Update System

sudo apt update && sudo apt upgrade -y
sudo apt install wget jq git build-essential pkg-config libssl-dev -y

2.2. Install Rust (v1.65+)

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env
rustc --version  # Verify installation

If an older Rust version is installed, remove it first:

rustup self uninstall

3. Install the Aleo Node

3.1. Clone the snarkOS Repository

git clone https://github.com/AleoHQ/snarkOS.git --depth 1
cd snarkOS

3.2. Build & Install

For Ubuntu, use the helper script:

./build_ubuntu.sh
cargo install --path .

Note: Compilation may take 20–60 minutes depending on server specs.

4. Run the Node

4.1. Generate a Wallet

Create a new Aleo account and save the private key securely:

snarkos account new > $HOME/aleo_account.txt
cat $HOME/aleo_account.txt

Important: Save these details safely:

  • Private Key – Required to run the node.

  • View Key – Used to check transactions.

  • Address – Used to receive rewards.

4.2. Start the Client

./run-client.sh

4.3. Start the Prover (Mining Mode)

./run-prover.sh

When prompted, enter your private key from aleo_account.txt.

5. Useful Commands

  • Check Logs:

    journalctl -u aleo-prover -f -o cat  # Prover logs
    journalctl -u aleo-client -f -o cat  # Client logs
    
  • Manage Services:

    sudo systemctl restart aleo-prover  # Restart Prover
    sudo systemctl stop aleo-client    # Stop Client
    
  • Uninstall Node:

    sudo systemctl stop aleo-prover
    rm -rf ~/snarkOS /usr/bin/snarkos
    

6. Additional Configurations

6.1. Auto-Start via systemd

Create a systemd service for the Prover:

sudo tee /etc/systemd/system/aleo-prover.service > /dev/null <<EOF
[Unit]
Description=Aleo Prover
After=network-online.target

[Service]
User=$USER
ExecStart=$(which snarkos) start --nodisplay --prover $(grep "Private Key" $HOME/aleo_account.txt | awk '{print $3}')
Restart=on-failure
RestartSec=10
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF

Enable & start the service:

sudo systemctl daemon-reload
sudo systemctl enable aleo-prover
sudo systemctl start aleo-prover

6.2. Open Firewall Ports

Allow incoming connections:

sudo ufw allow 4133/tcp  # P2P port
sudo ufw allow 3033/tcp  # RPC port

7. Verify Node Sync

Check if the node is synced:

curl -s http://localhost:3033/testnet3/latest/height

If it returns a block number, your node is running correctly.

Tips:

  • Monitor logs with journalctl.

  • Use a separate wallet for testnets.

  • Update the node regularly (git pull in snarkOS).

For support, join the official Aleo Discord. 🚀

Links:

Website ~ https://www.aleo.org/

Twitter ~ https://twitter.com/AleoHQ

Community Twitter ~ https://twitter.com/aleocommunity

GitHub ~ https://github.com/AleoHQ

Community Forum — https://community.aleo.org/

Community Calendar ~ https://www.aleo.org/community/calendar

YouTube — https://www.youtube.com/channel/UCS_HKT2heOC_q88YQLiJt0g

Developer Documentation ~ https://developer.aleo.org/

Leo Playground ~ https://play.leo-lang.org/

Aleo Block Explorer ~ https://www.aleo.network/

Community Blog ~ https://medium.com/@AleoHQ

Announcements Blog ~ https://www.aleo.org/blog