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

By [Nataliiiiii](https://paragraph.com/@iamcryptogirl) · 2025-03-31

---

**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/](https://www.aleo.org/)

Twitter ~ [https://twitter.com/AleoHQ](https://twitter.com/AleoHQ)

Community Twitter ~ [https://twitter.com/aleocommunity](https://twitter.com/aleocommunity)

GitHub ~ [https://github.com/AleoHQ](https://github.com/AleoHQ)

Community Forum — [https://community.aleo.org/](https://community.aleo.org/)

Community Calendar ~ [https://www.aleo.org/community/calendar](https://www.aleo.org/community/calendar)

YouTube — [https://www.youtube.com/channel/UCS\_HKT2heOC\_q88YQLiJt0g](https://www.youtube.com/channel/UCS_HKT2heOC_q88YQLiJt0g)

Developer Documentation ~ [https://developer.aleo.org/](https://developer.aleo.org/)

Leo Playground ~ [https://play.leo-lang.org/](https://play.leo-lang.org/)

Aleo Block Explorer ~ [https://www.aleo.network/](https://www.aleo.network/)

Community Blog ~ [https://medium.com/@AleoHQ](https://medium.com/@AleoHQ)

Announcements Blog ~ [https://www.aleo.org/blog](https://www.aleo.org/blog)

---

*Originally published on [Nataliiiiii](https://paragraph.com/@iamcryptogirl/step-by-step-guide-how-to-run-an-aleo-node)*
