How to Run a Bitcoin Full Node on a VPS

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

Browse more articles in Cryptocurrency & Blockchain Node Hosting.

  • bitcoin node, bitcoin core, bitcoin full node vps, run bitcoin node
  • 0 Корисниците го најдоа ова како корисно
Дали Ви помогна овој одговор?

Понудени резултати

How to Run an Ethereum Node with Geth and a Consensus Client

Since Ethereum's transition to proof-of-stake, running a full node requires two separate pieces...

VPS Requirements for Running a Blockchain Node

Different blockchain networks have vastly different resource requirements — this guide...

How to Set Up a Lightning Network Node (LND) on a VPS

The Lightning Network enables fast, low-fee Bitcoin transactions through payment channels. This...

How to Run a Monero Node on a VPS

Monero is a privacy-focused cryptocurrency; running your own node lets you interact with the...

Understanding Pruned vs Full Blockchain Nodes

Most blockchain node software offers a choice between running a "full" node (retaining complete...