atproto user agency toolkit for individuals and groups
at main 60 lines 1.9 kB view raw
1#!/bin/bash 2# Start both p2pds nodes for two-node testing 3# Usage: scripts/start-both.sh [--clean] 4set -e 5 6# Stop previous instances if pid files exist 7bash scripts/stop-both.sh 2>/dev/null || true 8 9# Optionally wipe all data 10if [ "$1" = "--clean" ]; then 11 echo "Cleaning node data..." 12 rm -rf data/pds.db data/pds.db-shm data/pds.db-wal data/blobs data/ipfs 13 rm -rf data-node2/pds.db data-node2/pds.db-shm data-node2/pds.db-wal data-node2/blobs data-node2/ipfs 14 echo "Data wiped (kept .env files)" 15fi 16 17# Build first 18npm run build 19 20# Start node 1 (random port) 21PORT1=$(python3 -c 'import socket; s=socket.socket(); s.bind(("",0)); print(s.getsockname()[1]); s.close()') 22export PORT=$PORT1 23node dist/server.js > /tmp/p2pds-node1.log 2>&1 & 24echo $! > /tmp/p2pds-node1.pid 25echo "$PORT1" > /tmp/p2pds-node1.port 26echo "Node 1 started (pid $!, port $PORT1, log: /tmp/p2pds-node1.log)" 27 28# Start node 2 (random port, different env) 29PORT2=$(python3 -c 'import socket; s=socket.socket(); s.bind(("",0)); print(s.getsockname()[1]); s.close()') 30set -a && source data-node2/.env && set +a 31export PORT=$PORT2 32node dist/server.js > /tmp/p2pds-node2.log 2>&1 & 33echo $! > /tmp/p2pds-node2.pid 34echo "$PORT2" > /tmp/p2pds-node2.port 35echo "Node 2 started (pid $!, port $PORT2, log: /tmp/p2pds-node2.log)" 36 37# Wait for both to be ready 38echo "" 39echo "Waiting for nodes..." 40for node in 1 2; do 41 for i in $(seq 1 30); do 42 if grep -q "P2PDS_READY" "/tmp/p2pds-node${node}.log" 2>/dev/null; then 43 echo "Node $node ready (port $(cat /tmp/p2pds-node${node}.port))" 44 break 45 fi 46 if grep -q "Error:" "/tmp/p2pds-node${node}.log" 2>/dev/null; then 47 echo "Node $node FAILED:" 48 cat "/tmp/p2pds-node${node}.log" 49 break 50 fi 51 sleep 1 52 done 53done 54 55echo "" 56echo "=== NODE 1 (port $PORT1) ===" 57tail -10 /tmp/p2pds-node1.log 58echo "" 59echo "=== NODE 2 (port $PORT2) ===" 60tail -10 /tmp/p2pds-node2.log