Okay, straight up — running a full Bitcoin node is less mystical than some threads make it, but it’s also not plug-and-play if you care about correctness, privacy, and long-term availability. I’ll skip the hand-holding basics and focus on the choices that actually matter for someone who already knows what a UTXO is and how block validation works.
Think of this as a checklist plus rationale: why pick archival vs pruned, which flags and services to worry about, how to size storage and bandwidth, and the operational habits that keep a node honest and useful to the network. Some parts are nuanced; others are blunt. Read the whole thing, skim the bullets, and adapt.
Why run a full node? (Short recap)
Running a full node validates your own transactions and enforces Bitcoin’s rules — you don’t need to trust anyone else. It also supports the network: you relay blocks and transactions, serve peers, and help keep the network decentralized. If you care about censorship resistance or want to build services on top of Bitcoin, a full node is fundamental.
But there are trade-offs. Full archival nodes need disk, time, and bandwidth. Pruned nodes save space but reduce historical queryability. Decide what you need first, then optimize.
Hardware and sizing
CPU: Modern multi-core CPUs are fine. Validation is CPU-bound during initial block download (IBD) and during reindexing. For a single node, a midrange 4-8 core CPU with good single-thread performance is perfectly adequate unless you’re doing heavy indexing or running multiple services on the same host.
RAM: 8–16 GB is sufficient for most setups. More RAM helps OS disk caching which speeds up validation and peer serving, especially for archival nodes.
Storage: NVMe SSDs make a meaningful difference during IBD and reindex. If you’re archival, budget for ~400–500 GB for the chainstate and block data (this grows). A safe baseline today is 1 TB NVMe for headroom. If you want to run txindex=1 or additional indexes, add more disk. Don’t use consumer SD cards or slow HDDs for main storage unless you accept much longer IBD and potential wear issues.
Network: Expect to download ~400+ GB during IBD and then several GB/week depending on relay settings and peer load. If you plan to serve many peers, you’ll need generous upload. Set realistic caps if you’re on metered links, but also avoid throttling so severely that IBD stalls.
Archival vs Pruned — choose carefully
Archival node (default): stores every block and lets you serve history to peers and query blocks freely. This is necessary if you run services that need past block data, or if you want to archive the full history yourself.
Pruned node (prune=
There’s no shame in pruning. If you choose prune, set it carefully: prune=550 is a common minimal safe default; larger values give more local history for rescans or reorgs.
Config flags and important knobs
Some flags matter more than others for experienced users:
- txindex=1 — Enable if you need to query arbitrary txids. It increases disk usage and IBD time.
- prune=X — Enables pruning. Pick size in MB. If set, txindex=1 is incompatible.
- dbcache — Increase to speed up validation. On machines with ample RAM, dbcache=1500 (MB) or more can help, but don’t starve the OS.
- listen=1 and externalip= — If you want inbound peers, ensure your firewall/NAT is configured. Tor users often set listen=1 with onlyonion=1.
- blocksonly=1 — Reduce bandwidth by not relaying transactions (useful for archival-only block relays), but it limits mempool participation.
- uacomment= — Handy for tagging your node in peer lists for operations.
Privacy and network-level choices
Tor: Running an onion service is the best privacy-preserving way to accept inbound connections without exposing your IP. Bitcoin Core supports Tor out of the box (onion/hidden services), but you’ll need Tor running and configured. Many operators use a split: one node as a Tor-only reachable endpoint for wallets, another as a clearnet relay.
UPnP vs manual port forwarding: UPnP is convenient but less secure. If you can, set up manual NAT rules and only open port 8333 on the node’s host. Use firewall rules to restrict management ports (SSH should be limited and use key auth).
Wallets and backups
Wallet handling has changed: descriptor wallets and HD seeds are easier to back up than legacy wallet.dat chaos. For any wallet that holds keys, maintain encrypted backups and test restores. Keep multiple offline copies. If you rely on an HSM or hardware wallet, use PSBT workflows — and ensure your node has the rpcwallet interface configured appropriately.
Important: wallet.dat backups are not enough if you also rely on metadata or external descriptors. Document your restore procedure and verify it occasionally in a test environment.
Initial Block Download (IBD) and practical tips
IBD can take hours to days depending on hardware and whether you use snapshot syncing methods (like assuming-valid) — but always be careful: some shortcuts reduce validation guarantees. The safest route is full validation from genesis.
Use pruning if you just need wallet validation. If you need historical data, run archival and consider fast hardware. Increase dbcache during IBD, then scale back afterward if needed.
Monitoring, updates, and operational hygiene
Monitoring: Track block height, mempool size, peer count, and validation errors. Simple scripts querying getblockchaininfo and getmempoolinfo are enough for most operators. Alert on reorgs bigger than a threshold you’re comfortable with.
Updates: Stay reasonably up-to-date with Bitcoin Core releases, especially for security fixes. Test upgrades in a staging environment if you operate production services. Read release notes — sometimes default behaviors change.
Backups and redundancy: For critical nodes, use RAID carefully (software RAID is fine for redundancy; remember RAID is not a backup). Keep cold backups of keys offline. Consider a secondary hot node for failover if uptime matters.
Common pitfalls and gotchas
Watch for these mistakes I keep seeing:
- Assuming wallet backups are current after moving to descriptor wallets — check the restore path.
- Running txindex without budgeting disk and IBD time — big surprise later.
- Exposing RPC ports — always restrict RPC (bind to localhost or use firewall and authentication).
- Using slow disk for chain data — IBD times explode.
- Neglecting to monitor — small problems become big outages fast.
Where to learn more
For configuration details and the authoritative reference, check the official Bitcoin Core docs and release notes. If you prefer a quick landing page to jump into downloads and docs, see bitcoin core — it’s a practical starting point for links and setup steps.
FAQ
Q: Is pruning safe for my wallet?
A: Yes, pruning is safe for normal wallet operations if you don’t need to rescan deep history. Keep a recent backup and avoid setting prune so low that rescans fail. If you expect to restore an old wallet and rescan the entire chain, run an archival node or keep a copy of the chain.
Q: How do I speed up IBD?
A: Use a fast NVMe, increase dbcache, ensure good network bandwidth, and consider snapshots only if you understand the trust trade-offs. Running multiple validation threads isn’t a silver bullet; single-threaded signature verification still dominates certain phases.
Q: Can I run a node on a VPS?
A: Yes. VPS is common for uptime, but watch I/O performance, bandwidth limits, and the provider’s trust model. For privacy and censorship-resistance, combine a VPS with Tor or keep critical keys off-host.
