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:
| Resource | Minimum | Recommended |
|---|---|---|
| CPU | 1 vCPU | 2 vCPU |
| RAM | 1 GB | 2 GB |
| Disk | 20 GB SSD | 40 GB SSD |
| Bandwidth | 100 Mbps | 1 Gbps |
| OS | Ubuntu 22.04 | Ubuntu 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
- Go to privanet.dev and log in
- Navigate to My Node → Register Node
- Enter your server's public IP address
- The dashboard will verify connectivity to port 8336
- Once confirmed, your node appears as Online and starts earning