Skip to main content

Running a Bitmark Node

This guide covers setting up and operating a Bitmark full node.

Why Run a Node?

  • Verify transactions yourself - Don't trust, verify
  • Support the network - More nodes = more decentralization
  • Enable mining - Required for solo mining
  • Run services - APIs, explorers, wallets need nodes
  • Privacy - No third-party sees your transactions

Requirements

Hardware

ComponentMinimumRecommended
CPU2 cores4+ cores
RAM2 GB4+ GB
Storage10 GB20+ GB SSD
Network1 Mbps10+ Mbps

Software

  • Linux (Ubuntu 18.04+), Windows 10+, or macOS 10.14+
  • libsodium library (required for v0.9.7+)

Installation

Ubuntu/Debian

# Install dependencies
sudo apt-get update
sudo apt-get install -y libsodium-dev libboost-all-dev

# Download latest release
wget https://github.com/project-bitmark/bitmark/releases/latest/download/bitmark-linux64.tar.gz
tar -xzf bitmark-linux64.tar.gz

# Install binaries
sudo install -m 0755 bitmarkd /usr/local/bin/
sudo install -m 0755 bitmark-cli /usr/local/bin/

From Source

git clone https://github.com/project-bitmark/bitmark.git
cd bitmark
./autogen.sh
./configure
make -j$(nproc)
sudo make install

Configuration

Create Data Directory

mkdir -p ~/.bitmark

Configuration File

Create ~/.bitmark/bitmark.conf:

# Essential settings
rpcuser=bitmarkrpc
rpcpassword=CHANGE_THIS_TO_RANDOM_STRING

# Network
listen=1
server=1
maxconnections=125

# Optional: Run in background
daemon=1

# Optional: Full transaction index (for APIs)
txindex=1

# Optional: Reindex on start (first time only)
# reindex=1

Generate Random Password

openssl rand -hex 32

Running the Node

Start

# Foreground (see logs)
bitmarkd

# Background (daemon mode)
bitmarkd -daemon

Check Status

# Is it running?
bitmark-cli getblockchaininfo

# How many peers?
bitmark-cli getconnectioncount

# Sync progress
bitmark-cli getblockchaininfo | grep verificationprogress

Stop

bitmark-cli stop

Systemd Service (Linux)

Create /etc/systemd/system/bitmarkd.service:

[Unit]
Description=Bitmark Daemon
After=network.target

[Service]
Type=forking
User=bitmark
Group=bitmark
ExecStart=/usr/local/bin/bitmarkd -daemon -pid=/run/bitmarkd/bitmarkd.pid
ExecStop=/usr/local/bin/bitmark-cli stop
PIDFile=/run/bitmarkd/bitmarkd.pid
Restart=on-failure
TimeoutStopSec=60

[Install]
WantedBy=multi-user.target

Enable and start:

sudo systemctl enable bitmarkd
sudo systemctl start bitmarkd
sudo systemctl status bitmarkd

Initial Sync

What to Expect

  • Full sync: Several hours to a day (depending on connection)
  • Disk usage: ~5-10 GB
  • CPU usage: High during verification

Monitor Progress

# Watch sync progress
watch -n 10 'bitmark-cli getblockchaininfo | grep -E "blocks|headers|progress"'

Speed Up Sync

# Use more connections
maxconnections=256

# Add known good peers
addnode=seed.bitmark.co

Testnet

Configuration

# In bitmark.conf
testnet=1

Or run with flag:

bitmarkd -testnet

Data Location

  • Mainnet: ~/.bitmark/
  • Testnet: ~/.bitmark/testnet3/

Maintenance

Backup Wallet

bitmark-cli backupwallet /path/to/backup.dat

Check Logs

tail -f ~/.bitmark/debug.log

Update Software

bitmark-cli stop
# Download and install new version
bitmarkd

Rescan Blockchain

bitmarkd -rescan

Reindex (Rebuild Index)

bitmarkd -reindex

Troubleshooting

"Cannot obtain a lock"

Another instance is running:

pkill bitmarkd
rm ~/.bitmark/.lock

"Connection refused"

Node not running or RPC misconfigured:

# Check if running
pgrep bitmarkd

# Verify config
cat ~/.bitmark/bitmark.conf

"Sync stuck"

# Add more peers
bitmark-cli addnode "seed.bitmark.co" "onetry"

# Check peer count
bitmark-cli getconnectioncount

"Out of memory"

Add to config:

dbcache=100
maxmempool=50

Advanced Configuration

Open Ports (Firewall)

# Allow P2P
sudo ufw allow 9265/tcp

# Allow RPC (local only recommended)
sudo ufw allow from 127.0.0.1 to any port 9266

Tor Support

# In bitmark.conf
proxy=127.0.0.1:9050
listen=1
bind=127.0.0.1
onlynet=onion

Pruning (Save Space)

# Keep only last 1000 blocks
prune=1000
warning

Pruning disables some RPC commands and prevents serving historical blocks to other nodes.

Monitoring

Basic Stats

#!/bin/bash
echo "=== Bitmark Node Status ==="
echo "Blocks: $(bitmark-cli getblockcount)"
echo "Connections: $(bitmark-cli getconnectioncount)"
echo "Difficulty: $(bitmark-cli getdifficulty)"

Memory Usage

ps aux | grep bitmarkd

Disk Usage

du -sh ~/.bitmark/

See Also