- Linux
- Minimum 4GB RAM (configurable), more the better for higher rewards
- At least 100GB free disk space (configurable). 200-500GB is a sweet spot
- Internet connectivity available 24/7
Before starting the node setup, install tmux to ensure the process runs even after SSH disconnection.
sudo apt update && sudo apt install -y tmux
sudo yum install -y tmux
brew install tmux
Create a new tmux session named pop-node to run the node inside it.
tmux new-session -s pop-node
# Download the compiled pop binary
curl -L -o pop "https://dl.pipecdn.app/v0.2.4/pop"
# Assign executable permission to the pop binary
chmod +x pop
# Create a folder to be used for the download cache
mkdir download_cache
./pop
If you'd like to use a referral, here is one you can use:
referral=62a43039f81528cc
If you prefer running the node as a background service managed by systemd, follow these steps:
sudo useradd -r -m -s /sbin/nologin pop-svc-user -d /home/pop-svc-user 2>/dev/null || true
sudo mkdir -p /opt/pop /var/lib/pop /var/cache/pop/download_cache
sudo mv -f ~/pop /opt/pop/
sudo chmod +x /opt/pop/pop 2>/dev/null || true
sudo mv -f ~/node_info.json /var/lib/pop/ 2>/dev/null || true
sudo chown -R pop-svc-user:pop-svc-user /var/lib/pop
sudo chown -R pop-svc-user:pop-svc-user /var/cache/pop
sudo chown -R pop-svc-user:pop-svc-user /opt/pop
sudo tee /etc/systemd/system/pop.service << 'EOF'
[Unit]
Description=Pipe POP Node Service
After=network.target
Wants=network-online.target
[Service]
User=pop-svc-user
Group=pop-svc-user
ExecStart=/opt/pop/pop \
--ram=12 \
--pubKey 7ugorwsqWvT6fwHoZhejAUPGWxK4fJtE9W8f8vebVh2S \
--max-disk 175 \
--cache-dir /var/cache/pop/download_cache \
--no-prompt
Restart=always
RestartSec=5
LimitNOFILE=65536
LimitNPROC=4096
StandardOutput=journal
StandardError=journal
SyslogIdentifier=pop-node
WorkingDirectory=/var/lib/pop
[Install]
WantedBy=multi-user.target
EOF
Modify pop.service: Customize the parameters (such as --ram, --max-disk, --pubKey) based on your preferences.
ln -sf /var/lib/pop/node_info.json ~/node_info.json
grep -q "alias pop='cd /var/lib/pop && /opt/pop/pop'" ~/.bashrc || echo "alias pop='cd /var/lib/pop && /opt/pop/pop'" >> ~/.bashrc && source ~/.bashrc
echo "alias pop='/opt/pop/pop'" >> ~/.bashrc
source ~/.bashrc
sudo systemctl daemon-reload
sudo systemd-analyze verify pop.service && sudo systemctl enable pop.service && sudo systemctl start pop.service
sudo systemctl status pop
./pop --status
./pop --points-route
./pop --gen-referral-route
./pop --signup-by-referral-route <CODE>
To prevent data loss, back up the node_info.json file and store it offline.
cp /var/lib/pop/node_info.json ~/node_info.backup2-4-25
cp ~/node_info.json ~/node_info.backup2-4-25
To keep the process running while exiting the SSH session, detach from tmux using:
Ctrl + B, then press D
To reattach to the session later, use:
tmux attach-session -t pop-node
-
Running POP Commands:
Change to the working directory first: cd /var/lib/pop && /opt/pop/pop [command]
OR use the provided alias: pop [command] (recommended).
tmux attach-session -t pop-node
https://docs.pipe.network/devnet-2
curl -L -o pop "https://dl.pipecdn.app/v0.2.4/pop"
chmod +x pop
If you see this error:
-bash: ./pop: No such file or directory
Try running:
/opt/pop/pop --status
If that works, set up the alias as mentioned above.
To confirm the node is active:
sudo systemctl status pop.service
ss -tulnp | grep 8003
Expected output:
tcp LISTEN 0 128 0.0.0.0:8003 0.0.0.0:* users:("pop",pid=XXXX,fd=XX)
If external access is required, open port 8003:
For UFW (Ubuntu/Debian):
sudo ufw allow 8003/tcp
For Firewalld (CentOS/RHEL):
sudo firewall-cmd --add-port=8003/tcp --permanent
sudo firewall-cmd --reload
If behind a router, forward port 8003 (TCP) to your machine.
From another machine:
telnet <your-server-ip> 8003
If you get:
Connected to . HTTP/1.1 408 Request Timeout
This means your node is reachable. 🎉
If needed, restart the service:
sudo systemctl restart pop.service
journalctl -u pop.service -f