HomePart 1: Bitcoin Full Node
Part 1 of 3 — The Brain

How to Build a Bitcoin Full Node & Personal Mining Pool

Install Ubuntu Server on a dedicated PC, sync the full Bitcoin blockchain, and run public-pool to create your own personal solo mining pool — no third party required.

What You Will Need

  • A purpose-built dedicated PC — see the Parts List for the exact build used
  • At least 16 GB of RAM for smooth 24/7 operation
  • At least 1 TB NVMe SSD (PCIe 4.0 recommended for faster initial sync)
  • A stable, wired internet connection
  • A USB drive (8 GB+) to install Ubuntu Server
  • Basic comfort with typing commands in a terminal

Use Quality Hardware for 24/7 Operation

This is not a "use whatever old computer you have lying around" project. A Bitcoin node runs continuously, every hour of every day. The hardware in this guide was deliberately chosen for reliability and long-term stability. See the complete parts list for the exact components used.

Step-by-Step Instructions

1

Install Ubuntu Server 24.04 LTS

Download the Ubuntu Server 24.04 LTS ISO from ubuntu.com/download/server. Flash it to a USB drive using Balena Etcher or Raspberry Pi Imager.

Boot from the USB and follow the installer. Choose Ubuntu Server (minimized) — you do not need a desktop environment. Set a strong password and enable OpenSSH during installation so you can connect remotely.

Use a Static IP Address

During installation, configure a static IP address for the node (e.g., 192.168.0.100). This ensures the Antminer always knows where to find the pool. You can set this in the network configuration step of the Ubuntu installer.
2

Update the System and Install Dependencies

After the first boot, SSH in from another computer:

From your laptop or desktop:
ssh [email protected]

Then update the system and install required packages:

sudo apt update && sudo apt upgrade -y
sudo apt install -y git curl wget build-essential nodejs npm
3

Install Bitcoin Core

Download the latest Bitcoin Core release from the official site. Always verify the signature before installing.

# Download Bitcoin Core (check bitcoin.org for the latest version)
wget https://bitcoincore.org/bin/bitcoin-core-27.0/bitcoin-27.0-x86_64-linux-gnu.tar.gz

# Extract and install
tar -xzf bitcoin-27.0-x86_64-linux-gnu.tar.gz
sudo install -m 0755 -o root -g root -t /usr/local/bin bitcoin-27.0/bin/*

Create the Bitcoin data directory and configuration file:

Create the config file:
mkdir -p ~/.bitcoin
cat > ~/.bitcoin/bitcoin.conf << 'EOF'
# Enable server mode (required for mining)
server=1
daemon=1

# RPC credentials (change these!)
rpcuser=bitcoinrpc
rpcpassword=YourStrongPasswordHere

# Allow connections from local network
rpcallowip=127.0.0.1
rpcallowip=192.168.0.0/24

# Enable transaction indexing
txindex=1

# Limit memory usage (adjust based on your RAM)
dbcache=4096
EOF

Start Bitcoin Core and begin the initial blockchain sync:

bitcoind -daemon

Initial Sync Takes Time

The first sync downloads and verifies the entire Bitcoin blockchain (~600 GB). On a fast NVMe SSD with a good internet connection, this typically takes 12–48 hours. Do not interrupt it. You can check progress with: bitcoin-cli getblockchaininfo
4

Install Node.js and public-pool

public-pool is the open-source solo mining pool software that connects your Antminer to your Bitcoin node. Install it from GitHub:

# Install Node.js 20 LTS
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs

# Clone public-pool
cd ~
git clone https://github.com/benjamin-wilson/public-pool.git
cd public-pool

# Install dependencies
npm install

# Copy and edit the config
cp .env.example .env
nano .env

In the .env file, set the following critical values:

.env configuration:
# Your Bitcoin node RPC credentials (must match bitcoin.conf)
BITCOIN_RPC_URL=http://127.0.0.1:8332
BITCOIN_RPC_USER=bitcoinrpc
BITCOIN_RPC_PASSWORD=YourStrongPasswordHere

# The port miners connect to (default 3333)
STRATUM_PORT=3333

# The port for the web dashboard
API_PORT=3334
5

Run public-pool with PM2 (Auto-Restart)

Install PM2, a process manager that keeps public-pool running automatically and restarts it if it crashes:

sudo npm install -g pm2

# Start public-pool
cd ~/public-pool
pm2 start npm --name "public-pool" -- start

# Save the process list so it restarts after reboot
pm2 save
pm2 startup  # Follow the instructions it prints

Verify it is running:

pm2 status
pm2 logs public-pool --lines 20
6

Configure the Firewall

Open the required ports so miners can connect and you can access the dashboard:

sudo ufw allow 22/tcp    # SSH
sudo ufw allow 3333/tcp  # Stratum mining port
sudo ufw allow 3334/tcp  # public-pool web dashboard
sudo ufw enable
7

Verify Everything is Working

Check that Bitcoin Core is syncing and public-pool is running:

# Check Bitcoin Core sync progress
bitcoin-cli getblockchaininfo | grep -E "blocks|headers|verificationprogress"

# Check public-pool is listening on port 3333
ss -tlnp | grep 3333

Access the public-pool web dashboard in your browser:

http://192.168.0.100:3334

Part 1 Complete!

Your Bitcoin full node is running and your personal mining pool is live. Once the blockchain finishes syncing, you are ready to connect miners. Continue to Part 2 to configure your Antminer.

Hardware Performance Reference

ComponentTypical LoadNotes
AMD Ryzen 5 5600G45–55WWell below 65W TDP — runs cool
16GB DDR4-3200~6WDual channel for better bandwidth
1TB NVMe SSD~3WPCIe 4.0 for fast initial sync
Total System~86W typical~$6.20/month at $0.10/kWh