Install naviod¶
Three paths:
- Build from source — Linux, macOS, Windows (MSYS), BSD.
- Docker — self-contained container.
- Release binaries — when available, the fastest path.
Service manager
Navio docs is deliberately service-manager-agnostic. Examples below run naviod in the foreground (container-friendly) or via tmux/screen. Plug your own supervisor (runit, OpenRC, s6, supervisord, launchd, Docker restart policies, …) around these — the binary itself only needs to stay running, capture stdout, and restart on exit.
1. Build from source¶
Dependencies¶
Standard Bitcoin Core toolchain plus BLSCT deps (bundled in-tree via depends/).
Debian / Ubuntu:
sudo apt-get install -y \
build-essential cmake ninja-build pkgconf python3 git \
libevent-dev libboost-dev \
libsqlite3-dev libzmq3-dev
libsqlite3-dev is for the wallet; libzmq3-dev only if you want the ZMQ interface. (Navio is CLI-only and no longer needs OpenSSL, miniupnpc, or compiled Boost libraries — only the Boost headers.)
macOS (Homebrew):
Build¶
git clone https://github.com/nav-io/navio-core.git
cd navio-core
cmake -B build -G Ninja
cmake --build build
sudo cmake --install build # optional; installs to /usr/local/bin
Binaries land in build/bin/ if you skip cmake --install:
build/bin/naviodbuild/bin/navio-clibuild/bin/navio-stakerbuild/bin/navio-walletbuild/bin/navio-tx
Build options¶
Pass to the first cmake -B build -G Ninja invocation:
| Flag | Effect |
|---|---|
-DENABLE_WALLET=ON (default) |
Enable wallet |
-DENABLE_WALLET=OFF |
Node-only (smaller binary, no wallet/RPC wallet cmds) |
-DBUILD_TESTS=ON (default) |
Build unit tests |
-DBUILD_TESTS=OFF |
Skip unit tests |
-DBUILD_BENCH=OFF |
Skip benchmark binaries |
-DBUILD_FOR_FUZZING=ON |
Build fuzz harnesses |
-DCMAKE_BUILD_TYPE=Debug |
Debug symbols, assertion checks |
-DREDUCE_EXPORTS=ON |
Smaller binary via symbol hiding |
-DWITH_ZMQ=ON |
ZMQ pub/sub interface |
Full list: cmake -B build -LH.
Cross-compilation¶
Navio inherits Bitcoin Core's depends/ system. Reproducible Linux build on another Linux box:
make -C depends HOST=x86_64-pc-linux-gnu
cmake -B build -G Ninja \
--toolchain "$PWD/depends/x86_64-pc-linux-gnu/toolchain.cmake"
cmake --build build
Supported HOST triplets: x86_64-pc-linux-gnu, aarch64-linux-gnu, x86_64-w64-mingw32 (Windows), x86_64-apple-darwin (macOS, needs Apple SDK). Navio supports Guix reproducible builds — see contrib/guix/.
2. Quick-start on a fresh box (no init system assumed)¶
# install build deps (see above)
git clone https://github.com/nav-io/navio-core.git ~/navio-core
cd ~/navio-core
cmake -B build -G Ninja && cmake --build build
sudo cmake --install build
# config
mkdir -p ~/.navio
cat > ~/.navio/navio.conf <<EOF
server=1
listen=1
testnet=1
rpcuser=$(whoami)
rpcpassword=$(openssl rand -base64 32)
[test]
addnode=testnet.nav.io
addnode=testnet2.nav.io
EOF
# create wallet
navio-wallet -blsct -chain=test -wallet=wallet create
# run in the foreground
naviod -testnet -printtoconsole
For production, wrap the final naviod invocation in whatever supervisor you prefer. Equivalent pattern for the staker:
Run it in a separate process, supervised the same way.
tmux example¶
tmux new -d -s naviod 'naviod -testnet -printtoconsole'
tmux new -d -s staker 'navio-staker -testnet -wallet=wallet'
tmux attach -t naviod # follow logs
runit example (/etc/service/naviod/run)¶
#!/bin/sh
exec chpst -u navio naviod -testnet -printtoconsole -conf=/home/navio/.navio/navio.conf 2>&1
OpenRC example (/etc/init.d/naviod)¶
#!/sbin/openrc-run
name="naviod"
command="/usr/local/bin/naviod"
command_args="-testnet -printtoconsole -conf=/home/navio/.navio/navio.conf"
command_user="navio"
command_background="yes"
pidfile="/run/naviod.pid"
Logs go where your supervisor redirects them.
3. Docker¶
Example Dockerfile:
FROM debian:bookworm-slim AS builder
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential cmake ninja-build pkgconf python3 \
libevent-dev libboost-dev libzmq3-dev libsqlite3-dev \
git ca-certificates \
&& rm -rf /var/lib/apt/lists/*
RUN git clone --depth 1 https://github.com/nav-io/navio-core.git /src
WORKDIR /src
RUN cmake -B build -G Ninja && cmake --build build
RUN strip build/bin/naviod build/bin/navio-cli build/bin/navio-staker build/bin/navio-wallet
FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y --no-install-recommends \
libevent-2.1-7 libevent-pthreads-2.1-7 \
libzmq5 libsqlite3-0 \
tini ca-certificates \
&& rm -rf /var/lib/apt/lists/*
COPY --from=builder /src/build/bin/naviod /usr/local/bin/
COPY --from=builder /src/build/bin/navio-cli /usr/local/bin/
COPY --from=builder /src/build/bin/navio-staker /usr/local/bin/
COPY --from=builder /src/build/bin/navio-wallet /usr/local/bin/
RUN useradd -r -m -s /bin/bash navio
USER navio
WORKDIR /home/navio
VOLUME ["/home/navio/.navio"]
EXPOSE 33670 33677
ENTRYPOINT ["tini","--","naviod","-printtoconsole"]
docker-compose.yml:
services:
naviod:
build: .
image: navio/naviod:latest
container_name: naviod
restart: unless-stopped
volumes:
- ./data:/home/navio/.navio
ports:
- "33670:33670" # p2p
- "127.0.0.1:33677:33677" # rpc, loopback only
command:
- naviod
- -printtoconsole
- -testnet
- -server=1
- -rpcallowip=127.0.0.1
- -rpcbind=0.0.0.0:33677
- -rpcuser=${RPC_USER}
- -rpcpassword=${RPC_PASSWORD}
Docker's own restart policy handles supervision — no separate init needed.
4. Release binaries¶
nav-io/navio-core releases. Verify signatures / SHA256SUMS before use.
curl -LO https://github.com/nav-io/navio-core/releases/download/<tag>/navio-<tag>-x86_64-linux-gnu.tar.gz
curl -LO https://github.com/nav-io/navio-core/releases/download/<tag>/SHA256SUMS
curl -LO https://github.com/nav-io/navio-core/releases/download/<tag>/SHA256SUMS.asc
gpg --verify SHA256SUMS.asc SHA256SUMS
sha256sum --check --ignore-missing SHA256SUMS
tar xzf navio-<tag>-x86_64-linux-gnu.tar.gz
sudo install -m 755 navio-<tag>/bin/naviod /usr/local/bin/
sudo install -m 755 navio-<tag>/bin/navio-cli /usr/local/bin/
sudo install -m 755 navio-<tag>/bin/navio-staker /usr/local/bin/
Post-install checks¶
navio-cli -testnet getblockchaininfo
navio-cli -testnet getnewaddress
navio-cli -testnet getblsctbalance
Testnet faucet¶
Join Discord, post /faucet in #testnet.