A quick, clean guide to get your PipeCDN node online and ready for mainnet.
Supported OS
Network
80 and 443Storage
cd /opt
mkdir pipe && cd pipe
curl -L https://pipe.network/p1-cdn/releases/latest/download/pop -o pop
chmod +x pop
π‘ Tip: Keep the binary inside
/opt/pipefor easy service management and updates.
Create a file named .env inside /opt/pipe:
# Wallet for earnings
NODE_SOLANA_PUBLIC_KEY=your_solana_wallet_address
# Node identity
NODE_NAME=my-pop-node
NODE_EMAIL="operator@example.com"
NODE_LOCATION="San Francisco, USA"
# Cache configuration
MEMORY_CACHE_SIZE_MB=512
DISK_CACHE_SIZE_GB=100
DISK_CACHE_PATH=./cache
# Network ports
HTTP_PORT=80
HTTPS_PORT=443
# Home network auto port forwarding (disable on VPS/servers)
UPNP_ENABLED=true
π‘ Tip: If you run on a VPS, keep
UPNP_ENABLED=false. For home setups, enable it and make sure your router allows UPnP.
If you donβt have a Solana wallet yet:
Install Phantom Wallet, or
Use Solana CLI:
solana-keygen new
solana address
Copy your public key (44 chars, starts with letters/numbers).
Paste it into .env as NODE_SOLANA_PUBLIC_KEY.
β οΈ Never share your private key or seed phrase.
Choose one of the options below to start your node β pick the method that fits your setup.
Ideal for quick testing or temporary sessions.
source .env && ./pop
Run it detached from the terminal (logs to pop.log).
nohup bash -c "source .env && ./pop" > pop.log 2>&1 &
Create /etc/systemd/system/pipe.service:
[Unit]
Description=Pipe Network POP Node
After=network-online.target
Wants=network-online.target
[Service]
WorkingDirectory=/opt/pipe
ExecStart=/bin/bash -c 'source /opt/pipe/.env && /opt/pipe/pop'
Restart=always
RestartSec=5
StandardOutput=journal
StandardError=journal
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
Enable and start:
sudo systemctl daemon-reload
sudo systemctl enable pipe
sudo systemctl start pipe
sudo journalctl -u pipe -f
π‘ Tip: Systemd ensures auto-restart on crash and starts automatically at boot.
Check if it's running:
# Health check
curl http://localhost:8081/health
View node status and earnings:
cd /opt/pipe
./pop status
./pop earnings
Prometheus metrics:
curl http://localhost:9090/metrics
Logs ( If use Systemd Service):
journalctl -u pipe -f
| Issue | Solution |
|---|---|
| Port 80/443 in use | sudo lsof -i :80 β kill conflicting process |
| UPnP failed (home use) | Enable UPnP in router or set UPNP_ENABLED=false |
| Low disk space | Reduce DISK_CACHE_SIZE_GB in .env |
| High memory usage | Lower MEMORY_CACHE_SIZE_MB (e.g. 256) |
For high-traffic setups:
# Increase worker threads
export TOKIO_WORKER_THREADS=16
# Larger cache
export MEMORY_CACHE_SIZE_MB=8192
export DISK_CACHE_SIZE_GB=500
# Use SSD/NVMe for cache
export DISK_CACHE_PATH=/mnt/nvme/cache
Use SSD/NVMe for best caching performance.
chmod +x pop.envsource .env && ./pop/health - the output should return"status":"healthy"Your node is now part of the PipeCDN mesh and ready to earn $PIPE rewards. π