In this post, we’ll walk you through the process of setting up and running a full Bitcoin node on Microsoft Azure. Whether you're a Bitcoin enthusiast, developer, or just curious about contributing to the network, deploying your own node helps strengthen the Bitcoin ecosystem while giving you full control over your transactions and data.
We’ll guide you through:
- Deploying a virtual machine (VM) in Azure
- Installing and configuring Bitcoin Core (bitcoind)
- Optimizing storage and network settings
- Modifying firewall rules to allow RPC communication
By the end, you’ll have a fully operational Bitcoin node running in the cloud, ready to validate transactions and support the decentralized network. Let’s get started!
1. Deploy a Virtual Machine (VM)
Go to Azure Portal
Click: Create a resource → Compute → Virtual Machine
Choose OS: Ubuntu 24.04 LTS x64 Gen2 (Recommended)
Choose Size: Select a VM with:
You can choose any type of machine you like. On the budget side a Standard_DS1_v1 with 1vCPU and 3.5GB RAM will do , but its recommended at least a Standard_D2s_v3 with 2vCPU's and 8GB RAM . Machines with more RAM would be able to sync much faster.
SSD storage, you will need At least 1TB, as the blockchain is growing
Standard, or Premium SSD will do the job.
Authentication Method:
Use SSH key (Recommended)
Networking:
Allow SSH (port 22)
Attach a Data Disk for Blockchain Storage:
Click Disks → Create and Attach a New Data Disk
Click Create and wait for deployment.
2. Connect to the VM via SSH
If you have chosen to use SSH Key as the authentication method, download the .pem
file that contains the key pair information.
ssh -i C:\path\to\your-key.pem user@hostname
replace @hostname with the public IP address as given in the azure portal Virtual Machine Overview
If you are using windows and receiving errors of type "Permissions for .pem are too open." either move .pem file to your \users\youruser\Documents folder where the permissions are restricted or right-click the .pem
file and navigate to the Security tab to Remove all inherited permissions, and add a Basic read-only permission only for your user.
3. Install Bitcoin Core
Step 1: Update and Install Dependencies
sudo apt update && sudo apt upgrade -y
sudo apt install -y software-properties-common curl jq
Step 2: Download Bitcoin Core
curl -O https://bitcoincore.org/bin/bitcoin-core-26.0/bitcoin-26.0-x86_64-linux-gnu.tar.gz
Step 3: Extract and Install
tar -xvf bitcoin-26.0-x86_64-linux-gnu.tar.gz
sudo install -m 0755 -o root -g root -t /usr/local/bin bitcoin-26.0/bin/*
4. Create and configure data directory
Once the disk is attached, you need to initialize, partition, and format it.
- List the available disks:
lsblk
and look for the new disk for example/dev/sdc
- Create a partition
sudo fdisk /dev/sdc
- Press n (new partition).
- Press p (primary partition).
- Accept defaults.
- Press w to write changes.
- Format the partition:
sudo mkfs.ext4 /dev/sdc1
- Create a mount directory:
sudo mkdir /mnt/datadisk
- Mount the disk:
sudo mount /dev/sdc1 /mnt/datadisk
- Create a folder in /mnt/datadisk
mkdir /mnt/datadisk/bitcoin
5. Configure Bitcoin Node
Modify the bitcoind configuration file :
nano ~/bitcoin-26.0/bitcoin.conf
server=1
daemon=1
txindex=1
rpcuser=myusername
rpcpassword=mysupersecurepwd
rpcbind=0.0.0.0
rpcallowip=0.0.0.0/0
prune=0
datadir=/mnt/datadisk/bitcoin
rpcport=8332
listen=1
externalip=40.113.xx.xx
save and exit.
ExternalIP is the same that you have used to connect via SSH, (the public IP address of the VM).
you may set rpcbindallowip to 0.0.0.0/0 to allow everybody to connect via RPC to this node, or whitelist your IP address only.
6. Start the bitcoin deamon
bitcoind -daemon -conf=~/bitcoin-26.0/bitcoin.conf
you may verify a successful start by using the command :
bitcoin-cli -conf=~/bitcoin-26.0/bitcoin.conf getblockchaininfo
or also by checking the bitcoin daemon running in the process list :
ps -aux |grep -i bitcoind
checking the disk usage the datadisk folder size should be increasing
du -h /mnt/datadisk/bitcoin/
7. Open Firewall for Public P2P Connections
sudo ufw allow 8332/tcp
sudo ufw allow 8333/tcp
sudo systemctl restart ufw
We must also allow the ports through azure firewall. so back in the azure portal, inside the Virtual Machine -> Network Settings we configure the following inbound port rules:
8. Testing the rpc communication
Create a powershell script :
$headers = @{"Content-Type" = "application/json"}
$rpcUser = "myusername"
$rpcPassword = "mysupersecurepwd"
$uri = "http://40.113.xx.xx:8332/"
$body = '{"jsonrpc":"1.0","id":"curl","method":"getblockchaininfo","params":[]}'
Invoke-WebRequest -Uri $uri -Method Post -Headers $headers -Body $body -Credential (New-Object PSCredential $rpcUser, (ConvertTo-SecureString $rpcPassword -AsPlainText -Force))
by running it you should be able to get a success response.
Top comments (0)