Skip to main content

Getting Started as a Node Operator

Running a Priva node earns you real PRIVA tokens and unlocks privacy applications. This guide walks you through the full setup on a VPS.

Prerequisites
  • A VPS with at least 1 CPU, 1 GB RAM, 20 GB disk
  • Ubuntu 22.04 or Debian 12 recommended
  • Ports 8336/TCP and 8336/UDP open in your firewall
  • A Priva account at privanet.dev

Step 1 — Provision Your VPS

You can use any cloud provider: OVH, Hetzner, DigitalOcean, Vultr, AWS, etc.

Minimum specs:

ResourceMinimumRecommended
CPU1 vCPU2 vCPU
RAM1 GB2 GB
Disk20 GB SSD40 GB SSD
Bandwidth100 Mbps1 Gbps
OSUbuntu 22.04Ubuntu 22.04 LTS

Step 2 — Install Docker

SSH into your server and install Docker:

# Update package list
sudo apt-get update

# Install dependencies
sudo apt-get install -y ca-certificates curl gnupg

# Add Docker's GPG key
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Add Docker repository
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list

# Install Docker
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

# Allow running docker without sudo
sudo usermod -aG docker $USER
newgrp docker

Verify the installation:

docker --version
docker compose version

Step 3 — Open Firewall Ports

The node needs port 8336 for P2P communication:

# UFW (Ubuntu default firewall)
sudo ufw allow 22/tcp # SSH — keep this open!
sudo ufw allow 8336/tcp # Priva P2P
sudo ufw allow 8336/udp # Priva P2P (UDP)
sudo ufw enable

Step 4 — Create the Node Directory

mkdir -p /opt/privanet/data
cd /opt/privanet

Step 5 — Create the Configuration File

Create /opt/privanet/config.yaml:

tier: standard          # standard | advanced | elite
api_url: https://privanet.dev/api/v1
listen_addr: "0.0.0.0"
listen_port: 8336
data_dir: /home/privanet/data
log_level: info
metrics_port: 9090
auto_update: false

Step 6 — Set Your Passphrase

Create /opt/privanet/.env:

# Generate a strong passphrase (save this securely — losing it = losing your node identity)
PRIVANET_PASSPHRASE=your-very-secure-passphrase-here
Backup your passphrase

Your passphrase secures your node's cryptographic identity. If you lose it and your data is deleted, your node cannot be recovered. Store it somewhere safe.


Step 7 — Run the Node

Create /opt/privanet/docker-compose.yml:

services:
node:
image: ghcr.io/privanet/node-client:latest
environment:
PRIVANET_PASSPHRASE: ${PRIVANET_PASSPHRASE}
ports:
- "8336:8336/udp"
- "8336:8336/tcp"
- "9090:9090"
volumes:
- ./data:/home/privanet/data
- ./config.yaml:/home/privanet/config.yaml:ro
restart: unless-stopped

volumes:
data:

Initialize and start the node:

# Load environment
source .env

# Initialize the node (creates keypair and data directory)
docker run --rm \
-e PRIVANET_PASSPHRASE="$PRIVANET_PASSPHRASE" \
-v /opt/privanet/data:/home/privanet/data \
ghcr.io/privanet/node-client:latest \
init --data-dir /home/privanet/data

# Start the node
docker compose up -d

Step 8 — Register Your Node

  1. Go to privanet.dev and log in
  2. Navigate to My NodeRegister Node
  3. Enter your server's public IP address
  4. The dashboard will verify connectivity to port 8336
  5. Once confirmed, your node appears as Online and starts earning

Next Steps