Skip to content
minanodeBeta release

Build from source

Build the dashboard first, then the node.

1. Prepare

On Ubuntu, ask an administrator to install the build packages. The commands below are for Ubuntu on x86-64. On ARM64, use rustup's aarch64 installer and the Node.js arm64 archive.

sudo apt update
sudo apt install build-essential pkg-config libssl-dev clang cmake \
  protobuf-compiler git curl ca-certificates python3 xz-utils

The repository pins Rust 1.92 and Node.js 24.11.0. A native build needs no nightly toolchain.

# x86-64: install rustup without changing your shell configuration.
curl -fL -o rustup-init \
  https://static.rust-lang.org/rustup/dist/x86_64-unknown-linux-gnu/rustup-init
chmod u+x rustup-init
./rustup-init -y --no-modify-path \
  --profile minimal --default-toolchain none
export PATH="$HOME/.cargo/bin:$PATH"
rustup toolchain install 1.92 --profile minimal --no-self-update
rustup component add rustfmt --toolchain 1.92

# Install Node.js 24.11.0 with npm into ~/.local/node (x86-64 example).
mkdir -p ~/.local/node
curl -fLO https://nodejs.org/dist/v24.11.0/node-v24.11.0-linux-x64.tar.xz
tar -xJf node-v24.11.0-linux-x64.tar.xz \
  -C ~/.local/node --strip-components=1
export PATH="$HOME/.local/node/bin:$HOME/.cargo/bin:$PATH"

2. Build

Run these commands in one shell.

git clone https://github.com/minanode/mina-rust mina-rust
cd mina-rust
cd ui && npm ci && npm run build:dashboard && cd ..
CARGO_BUILD_JOBS=8 cargo build --release --locked \
  -p mina-cli --bin mina

Cargo writes the binary to target/release/mina. If the dashboard was not built first, the binary has no dashboard, and the release build warns.

The devnet prover circuits are in the source and embedded in the default build. There is no separate circuit download.

In one clean-source build on a 16-core x86_64 machine, peak sampled build RAM was 4.93 GiB, and the target directory plus toolchains took 4.57 GiB.

Node.js 24.11.0 prints engine warnings for some test dependencies that ask for a newer patch version. The warnings do not stop the dashboard build.

WebRTC backend

The default p2p-webrtc feature uses rustrtc for server-side WebRTC. To build with the previous webrtc-rs backend, enable p2p-webrtc-rs with the command below. The backend is selected at build time; there is no automatic fallback.

CARGO_BUILD_JOBS=8 cargo build --release --locked \
  -p mina-cli --bin mina --features p2p-webrtc-rs

mina --version and mina build-info name the selected backend.

3. Verify

target/release/mina --version
target/release/mina build-info

Both commands should report the build you expect. Then run a node and open its dashboard.

Release archives use tools/release/build.sh with cargo-zigbuild and a glibc 2.31 floor.