#!/bin/sh set -e # Create user and group if they don't exist if ! getent group p2pool >/dev/null; then addgroup --system p2pool fi if ! getent passwd p2pool >/dev/null; then adduser --system --ingroup p2pool --no-create-home \ --home /var/lib/p2pool --shell /usr/sbin/nologin \ --gecos "P2Pool Service" p2pool fi # Create data directory mkdir -p /var/lib/p2pool/data-api chown -R p2pool:p2pool /var/lib/p2pool chmod -R 750 /var/lib/p2pool # Create example params.conf if it doesn't exist if [ ! -f /var/lib/p2pool/params.conf ]; then cat > /var/lib/p2pool/params.conf << 'CONF' # P2Pool Configuration File # Edit this file with your settings and restart the service # Monero node connection host = 127.0.0.1 rpc-port = 18081 zmq-port = 18083 # Use SSL for RPC connection # rpc-ssl = true # RPC credentials (if applicable) # rpc-login = username:password # Your Monero wallet address (REQUIRED) wallet = YOUR_MONERO_WALLET_ADDRESS # P2P settings p2p = 0.0.0.0:37889 # API settings data-api = /var/lib/p2pool/data-api local-api = true # Logging log-file = /var/log/p2pool/p2pool.log loglevel = 3 # Mining mode (uncomment to enable mini sidechain) # mini = true # Merge mining (optional - uncomment to enable Tari merge mining) # merge-mine = tari://TARI_NODE_IP:18142 TARI_WALLET_ADDRESS # Stratum server (for miners to connect) # stratum = 0.0.0.0:3333 CONF chown p2pool:p2pool /var/lib/p2pool/params.conf chmod 640 /var/lib/p2pool/params.conf fi # Create log directory mkdir -p /var/log/p2pool chown p2pool:p2pool /var/log/p2pool chmod 750 /var/log/p2pool # Set binary permissions chown root:root /opt/p2pool/p2pool chmod 755 /opt/p2pool/p2pool # Reload systemd and handle service restart on upgrade if [ -d /run/systemd/system ]; then systemctl daemon-reload # On upgrade: restart service if it was enabled if [ "$1" = "configure" ] && [ -n "$2" ]; then # $2 is the previously installed version (only set on upgrade) if systemctl is-enabled --quiet p2pool.service 2>/dev/null; then echo "Restarting p2pool service after upgrade..." systemctl start p2pool.service || true fi fi # Note: On fresh install, service is NOT auto-enabled or auto-started # Users should manually enable the service: # systemctl enable p2pool.service # systemctl start p2pool.service fi echo "" echo "✅ P2Pool installed successfully!" echo "" echo "📋 Before starting P2Pool, you MUST configure your settings:" echo "" echo "1. Edit the configuration file:" echo " sudo nano /var/lib/p2pool/params.conf" echo "" echo " Set your Monero wallet address and adjust other settings as needed." echo "" echo "2. Start P2Pool:" echo " sudo systemctl enable p2pool.service" echo " sudo systemctl start p2pool.service" echo "" echo "3. Check status:" echo " sudo systemctl status p2pool.service" echo " sudo journalctl -u p2pool -f" echo "" echo "📁 Important paths:" echo " Config file: /var/lib/p2pool/params.conf" echo " Data directory: /var/lib/p2pool" echo " Log directory: /var/log/p2pool" echo " Binary: /opt/p2pool/p2pool" echo "" echo "💡 Tip: Your params.conf will NOT be overwritten during package upgrades." echo "" echo "For help:" echo " /opt/p2pool/p2pool --help" echo "" exit 0