Blockchain node setup guide
How to run your own blockchain node on a VPS from scratch: choose a plan, secure the server, verify downloads, run a systemd service and check sync.
Read more →Updated 2026-11-11 · Published by AnonVPS
Log in as root over SSH or the in-browser console, then update the system and create an unprivileged user for daily work. The node itself will run under its own service account, never as root.
apt update && apt full-upgrade -y
adduser admin
usermod -aG sudo admin
rsync --archive --chown=admin:admin ~/.ssh /home/admin
# log out, then log back in as adminAllow SSH and the IPFS peer-to-peer port. Keep the RPC and API ports closed to the internet: they are not meant to face the public network.
sudo apt install -y ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 4001
sudo ufw enable
sudo ufw statussudo useradd --system --create-home --home-dir /var/lib/ipfs --shell /usr/sbin/nologin ipfsGet the current release from dist.ipfs.tech. Each download has a checksum file next to it.
VER=VERSION_FROM_THE_DOWNLOAD_PAGE # example format: v0.38.0
cd /tmp
wget https://dist.ipfs.tech/kubo/$VER/kubo_${VER}_linux-amd64.tar.gz
wget https://dist.ipfs.tech/kubo/$VER/kubo_${VER}_linux-amd64.tar.gz.sha512sha512sum --check kubo_${VER}_linux-amd64.tar.gz.sha512tar -xzf kubo_${VER}_linux-amd64.tar.gz
sudo install -m 0755 -o root -g root kubo/ipfs /usr/local/bin/ipfs
ipfs --versionThe server profile disables local-network discovery, which is not wanted on a hosted machine. Set a storage limit that leaves room for the operating system.
sudo -u ipfs env IPFS_PATH=/var/lib/ipfs/.ipfs ipfs init --profile server
sudo -u ipfs env IPFS_PATH=/var/lib/ipfs/.ipfs ipfs config Datastore.StorageMax 20GB
sudo -u ipfs env IPFS_PATH=/var/lib/ipfs/.ipfs ipfs config Addresses.API /ip4/127.0.0.1/tcp/5001
sudo -u ipfs env IPFS_PATH=/var/lib/ipfs/.ipfs ipfs config Addresses.Gateway /ip4/127.0.0.1/tcp/8080sudo tee /etc/systemd/system/ipfs.service >/dev/null <<'EOF'
[Unit]
Description=IPFS (Kubo) daemon
After=network-online.target
Wants=network-online.target
[Service]
Environment=IPFS_PATH=/var/lib/ipfs/.ipfs
ExecStart=/usr/local/bin/ipfs daemon --enable-gc
User=ipfs
Group=ipfs
Type=simple
Restart=on-failure
NoNewPrivileges=true
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now ipfs
sudo systemctl status ipfs --no-pagerA healthy node shows peers. The add command prints a content ID (CID) for your file.
export IPFS_PATH=/var/lib/ipfs/.ipfs
sudo -E -u ipfs ipfs id | head -5
sudo -E -u ipfs ipfs swarm peers | wc -l
echo 'hello from my node' > /tmp/hello.txt
sudo -E -u ipfs ipfs add /tmp/hello.txt4001 (TCP and UDP) for peers. Keep 5001 (API) and 8080 (gateway) on localhost unless you add a proxy.
Set Datastore.StorageMax and run the daemon with --enable-gc, as in this guide.
Only while your node is online and has the data pinned. Others can keep copies too, but do not rely on that.
Technically yes, but it brings abuse and bandwidth risk. Read the acceptable use policy first.
How to run your own blockchain node on a VPS from scratch: choose a plan, secure the server, verify downloads, run a systemd service and check sync.
Read more →A practical checklist for a new Linux VPS: SSH keys, a non-root user, firewall, automatic updates and backups, with the commands.
Read more →How to publish a website or admin panel as a Tor onion service on a VPS: install, configure, test and keep it private.
Read more →