Maintenance

Bitcoin node maintenance checklist

A synced node needs a short weekly look and a careful upgrade now and then. Here is the whole routine.

A node that has finished syncing mostly runs itself. Maintenance is confirming that, keeping disk free, and applying verified upgrades. Commands are from the commands library; install details are in setup.

What healthy looks like

healthy node
$ bitcoin-cli getblockchaininfo | grep -E 'blocks|headers|verificationprogress|initialblockdownload'
  "blocks": 969640,
  "headers": 969640,
  "verificationprogress": 0.99999,
  "initialblockdownload": false,
$ bitcoin-cli getconnectioncount
10
$ df -h /var/lib/bitcoind | tail -1
/dev/nvme0n1p2  916G  812G   58G  93% /data

blocks equals headers, initialblockdownload is false, you have peers, and the service is up. The last line above is a warning: 93% full on a growing chain means act this month (disk recovery). Still syncing? Use sync stuck instead. You can compare against a healthy and an unhealthy node in the lab.

Weekly (five minutes)

Monthly

Upgrading Bitcoin Core

  1. Read the release notes for config changes.
  2. Download from bitcoincore.org and verify the signatures (steps in setup).
  3. Stop cleanly and swap the binaries in the path your unit uses.
  4. Start, confirm getblockchaininfo answers, and watch the log for a few minutes.
upgrade
$ bitcoind --version | head -1
$ sudo systemctl stop bitcoind
# install the verified binaries (see /setup/)
$ sudo systemctl start bitcoind
$ bitcoin-cli getblockchaininfo | grep -E 'blocks|headers'
$ journalctl -u bitcoind -n 50 --no-pager
Do not upgrade during a crisis

If the disk is full or sync is failing, fix that first. Upgrading on a full filesystem makes recovery harder.

Right after a restart bitcoin-cli may answer error code: -28 while Core loads its block index. Wait a minute and retry.

Leave it alone

A healthy node does not need daily restarts or tuning. Avoid exposing RPC "for a dashboard", deleting anything under blocks/ or chainstate/, and third-party "optimizer" scripts. Adding an Electrum server is a RAM and disk decision; see Electrum server vs full node.

Home and VPS differences

At home, watch for a full root partition, a router change that drops 8333, and an unplanned power loss (a UPS helps; a hard power cut mid-write is the usual cause of a corrupted block index). On a VPS, watch provider maintenance emails, bandwidth and volume size. Reach a home node remotely over a VPN or SSH, never an open RPC port. Hardware that stays on 24/7 is on the hardware page; hosted options on VPS.

Logs

Most of debug.log is peer churn. Act on repeated disk errors, LevelDB complaints or crash loops. Logs contain peer IPs and paths, so redact before pasting them anywhere public.

Once a year, recheck whether your disk still has room for growth and whether pruned or full still fits your use (pruned vs full).

FAQ

How often should I check my node?

A weekly glance at sync, peers and free disk. A fuller review monthly. Do not restart it without a reason.

Do I need monitoring software?

No. bitcoin-cli, systemctl and df are enough for a home node. Add alerts only if you already run monitoring.

When should I upgrade Bitcoin Core?

When a stable release appears on bitcoincore.org: read the release notes, verify the signatures, stop cleanly, install, restart. Skip release candidates.