Run a node

Run a Rust XRPL node on public Testnet.

Start with a non-validator node, sample its readiness across multiple ledger closes, and treat hardware and sync figures as planning baselines rather than guarantees. Quaxar is beta software; production validator operation is not recommended.

Scope: this guide is for public-Testnet operation. Review the repository's current running, configuration, and validator documentation before operating a long-lived node.

01 / Plan the host

Provision for the profile and history you intend to keep

A practical Testnet starting point is four CPU cores, 16 GiB of RAM, fast SSD storage, and reliable broadband. Larger node_size profiles, longer history, first synchronization, snapshots, and concurrent operator workloads need additional headroom. These are planning baselines, not minimum guarantees.

Host planning considerations
ResourcePlan around
CPUAt least four modern cores for a general Testnet node
Memory16 GiB starting headroom; more for larger profiles and operational margin
StorageFast SSD with capacity for NuDB, retained history, logs, and snapshots
NetworkStable low-loss connectivity and inbound TCP 51235 if accepting peers
TimeAccurate system time through NTP; optional SNTP support does not replace host time discipline

node_size is a cache and resource profile. It changes defaults for cache sizing and runtime concurrency. It is not simply the number of simultaneous ledger-acquisition sessions, and a larger value does not guarantee faster synchronization.

02 / Install

Use the installer or build the exact source

Linux and macOS installer

curl -sSf https://raw.githubusercontent.com/TusharPardhe/quaxar/main/install.sh -o install.sh
bash install.sh

For unattended defaults:

bash install.sh -y

Save and inspect remote scripts before execution when that matches your operational policy.

Windows installer

irm https://raw.githubusercontent.com/TusharPardhe/quaxar/main/install.ps1 -OutFile install.ps1
.\install.ps1

The Windows script installs and verifies the binary. Create quaxar.cfg separately from the repository example. Windows service operation is not currently qualified by the project.

Manual source installation

Install Rust 1.90 or newer and the native dependencies documented for your platform. Then:

git clone https://github.com/TusharPardhe/quaxar.git
cd quaxar
CC=clang CXX=clang++ cargo install --path xrpld/main --locked

The --locked flag preserves the reviewed dependency resolution.

03 / Docker

Compose is packaged, but legacy volumes need care

docker compose up -d

Compose mounts infra/docker/quaxar.cfg at /etc/quaxar/quaxar.cfg. Admin ports are published only on host loopback. The default physical data-volume identity deliberately preserves the common legacy volume name so an ordinary upgrade does not silently attach an empty database.

For a confirmed fresh installation only:

export QUAXAR_DATA_VOLUME=quaxar-data
docker compose up -d

Do not select a new volume name merely to rename existing storage. Confirm the physical volume with docker volume ls, preserve a rollback copy, and migrate data through a planned, verified process.

Do not mount an old xrpld.cfg unchanged. Start with the packaged Quaxar Docker configuration and merge reviewed credentials and settings. Legacy data paths such as /var/lib/xrpld, logfile paths, and relative validator-file references belong to the old container layout.

04 / Configure

Start with a small explicit Testnet configuration

[server]
port_rpc_admin_local
port_peer

[port_rpc_admin_local]
port = 5005
ip = 127.0.0.1
protocol = http,ws
admin = 127.0.0.1

[port_peer]
port = 51235
ip = 0.0.0.0
protocol = peer

[node_size]
medium

[node_db]
type = NuDB
path = /var/lib/quaxar/db/nudb
online_delete = 256

[ledger_history]
256

[validator_list_sites]
https://vl.ripple.com

[validator_list_keys]
ED2677ABFFD1B33AC6FBC3062B71F1E8397C1505E1C42C64D11AD1B28FF73F4734

Keep admin RPC on loopback or another explicitly trusted interface. If you configure full history, set online_delete = 0 and provision storage accordingly. Numeric history cannot exceed the online-deletion interval.

Validate configuration before startup:

quaxar config --conf /etc/quaxar/quaxar.cfg
quaxar doctor --conf /etc/quaxar/quaxar.cfg
05 / Start the service

Use explicit Quaxar paths and identity

Start directly for an initial check:

quaxar --conf ./quaxar.cfg

A Linux service should use Quaxar paths rather than the legacy xrpld identity:

[Unit]
Description=Quaxar XRP Ledger server
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=quaxar
Group=quaxar
ExecStart=/usr/local/bin/quaxar --conf /etc/quaxar/quaxar.cfg
Restart=on-failure
RestartSec=10
LimitNOFILE=65536
Environment=RUST_LOG=info

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now quaxar

Do not expose admin RPC to the public internet. Restrict SSH, preserve configuration and validator material as protected files, and keep rollback artifacts when upgrading.

06 / Verify readiness

One green response is not enough

health is a liveness and RPC-reachability check. It can succeed while the node is still synchronizing. Sample the following commands across several ledger closes:

quaxar health
quaxar sync-status
quaxar server-info
quaxar ledger-closed
quaxar ledger-current
quaxar fetch-info
quaxar get-counts
quaxar db-stats

Look for a current validated ledger, continuing sequence advancement, reasonable validated age, stable peers, no repeated recovery loop, and no restart or fatal-error pattern. A single full or proposing sample does not prove sustained readiness.

sync-status reports the current connected, syncing, tracking, or full state. It does not provide a reliable universal percentage or completion ETA.

07 / Operate

Inspect the node through the CLI and RPC

CommandPurpose
quaxar cliOpen the interactive operator shell
quaxar peersInspect connected peers and protocol details
quaxar fetch-infoInspect coordinator phase, anchors, sessions, and recovery counters
quaxar get-countsInspect cache, ledger, allocator, and NodeStore counters
quaxar db-statsInspect NuDB file sizes and database counters
quaxar log-level debugChange the runtime log filter
quaxar rpc METHOD '{}'Pass a JSON object to any registered RPC command
quaxar stopRequest graceful shutdown

For example:

quaxar rpc account_info '{"account":"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh","ledger_index":"validated"}'

Quaxar records selected metrics internally, but normal package and Compose bootstrap do not expose an HTTP /metrics endpoint.

08 / Snapshots

Export online, import offline

quaxar export-snapshot --output /path/to/quaxar.snapshot

Export traverses NodeStore while the node remains online and reports the job outcome. Import must run offline against the intended storage path:

quaxar load-snapshot --input /path/to/quaxar.snapshot --conf /etc/quaxar/quaxar.cfg

Import verifies integrity and loads through the bulk NuDB path. Preserve the existing database and configuration until the imported node has been checked across repeated ledger closes.

09 / Troubleshoot

Diagnose the state, not only the label

Stays connected
Check trusted validator-list status, peer quality, validated-ledger age, fetch-info, clock synchronization, disk latency, and recovery logs. A connected state is not caused only by validator-list failure.
No peers
Confirm outbound connectivity, advertised endpoint settings, the local listener, and firewall policy for TCP 51235. An inbound listener is useful but outbound peers can still establish connectivity.
Slow or unstable sync
Inspect SSD latency and queueing, peer churn, acquisition counters, available memory, and restarts. Do not raise node_size blindly; larger caches and concurrency can increase pressure.
History is missing
Check ledger_history and online_delete. RPC can only return data retained by the configured node.
Time-related validation rejection
Verify the host's NTP service and clock offset. Do not derive local wall time from validator signatures.
Windows service setup
The installer verifies the binary, but Windows service operation is not qualified. Run with an explicit configuration and supervise it using tooling you control.

Use quaxar doctor first, then consult the syncing guide, CLI reference, and issue tracker. Include version, configuration profile, state samples, logs, and exact reproduction steps in a report.