Running your own Bitcoin full node lets you independently verify transactions and blocks without trusting a third party — the foundation for using Bitcoin in a truly trustless, self-sovereign way. This guide covers setting one up on a VPS.
What a Full Node Actually Does
A full node downloads and independently validates the entire Bitcoin blockchain, enforcing all consensus rules itself rather than trusting someone else's summary — this is what "not your node, not your rules" self-sovereignty actually means in practice.
Prerequisites
- Ubuntu 22.04/24.04 VPS: 4 vCPU, 8 GB RAM minimum
- At least 700 GB SSD storage (full blockchain size grows continuously)
Step 1 — Install Dependencies
sudo apt update
sudo apt install build-essential libtool autotools-dev automake pkg-config bsdmainutils python3 -y
Step 2 — Download Bitcoin Core
wget https://bitcoincore.org/bin/bitcoin-core-VERSION/bitcoin-VERSION-x86_64-linux-gnu.tar.gz
Check the official Bitcoin Core website for the current stable version number.
Step 3 — Verify the Download (Important)
Always verify the PGP signature of downloaded Bitcoin Core binaries against the official release signatures before running them — consult Bitcoin Core's official verification documentation for the exact current process.
Step 4 — Extract and Install
tar xzf bitcoin-VERSION-x86_64-linux-gnu.tar.gz
sudo install -m 0755 -o root -g root -t /usr/local/bin bitcoin-VERSION/bin/*
Step 5 — Create a Configuration File
mkdir ~/.bitcoin
nano ~/.bitcoin/bitcoin.conf
server=1
daemon=1
txindex=1
rpcuser=CHANGE_ME
rpcpassword=CHANGE_ME_STRONG_PASSWORD
Step 6 — Start the Node
bitcoind
Step 7 — Monitor Initial Block Download Progress
bitcoin-cli getblockchaininfo
Initial sync downloads and validates the entire blockchain history — this takes considerable time (often several days) depending on your VPS's disk and network performance.
Reducing Storage Requirements with Pruning
If you don't need the full historical blockchain (e.g. just want to validate current transactions, not serve historical data to others), enable pruning — see Understanding Pruned vs Full Blockchain Nodes.
Securing Your Node
- Never expose the RPC port publicly without strong authentication — see How to Secure a Cryptocurrency Node on a VPS
- Use a firewall to restrict access to only what's genuinely needed
Allowing the P2P Port (For Network Participation)
sudo ufw allow 8333/tcp
This lets your node accept incoming connections from other Bitcoin nodes, contributing to network health — optional but beneficial to the broader network.
Checking Sync Status
bitcoin-cli getblockchaininfo | grep verificationprogress
A value near 1.0 (or 100%) indicates the node is fully synced with the current blockchain tip.
Common Errors
Sync is extremely slow — verify you're using SSD storage (not spinning disk), and that your VPS has adequate network bandwidth; initial sync is inherently disk and bandwidth intensive.
"Disk space is low" warnings — the blockchain continues growing; monitor free space regularly and consider pruning if storage is constrained.
Continue Reading
- Understanding Pruned vs Full Blockchain Nodes
- How to Secure a Cryptocurrency Node on a VPS
- VPS Requirements for Running a Blockchain Node
Browse more articles in Cryptocurrency & Blockchain Node Hosting.