atproto user agency toolkit for individuals and groups
at main 61 lines 1.5 kB view raw
1#!/bin/bash 2# Start a single p2pds node: scripts/start-node.sh [1|2] [--clean] 3set -e 4NODE=${1:-1} 5PIDFILE="/tmp/p2pds-node${NODE}.pid" 6PORTFILE="/tmp/p2pds-node${NODE}.port" 7LOGFILE="/tmp/p2pds-node${NODE}.log" 8 9# Stop if already running 10if [ -f "$PIDFILE" ]; then 11 kill "$(cat "$PIDFILE")" 2>/dev/null || true 12 rm -f "$PIDFILE" "$PORTFILE" 13 sleep 1 14fi 15 16# Optionally wipe data 17if [ "$2" = "--clean" ] || [ "$1" = "--clean" ]; then 18 DATADIR="data" 19 [ "$NODE" = "2" ] && DATADIR="data-node2" 20 echo "Cleaning $DATADIR..." 21 rm -rf "$DATADIR/pds.db" "$DATADIR/pds.db-shm" "$DATADIR/pds.db-wal" "$DATADIR/blobs" "$DATADIR/ipfs" 22fi 23 24npm run build 25 26# Fixed high port per node (node1=6700, node2=6701) 27PORT=$((6699 + NODE)) 28export PORT 29 30if [ "$NODE" = "2" ]; then 31 set -a && source data-node2/.env && set +a 32 export PORT # override .env PORT with our random one 33fi 34 35> "$LOGFILE" 36node dist/server.js > "$LOGFILE" 2>&1 & 37echo $! > "$PIDFILE" 38echo "$PORT" > "$PORTFILE" 39 40# Wait for P2PDS_READY or failure 41for i in $(seq 1 30); do 42 if grep -q "P2PDS_READY" "$LOGFILE" 2>/dev/null; then 43 echo "" 44 cat "$LOGFILE" 45 echo "" 46 echo "PID: $(cat "$PIDFILE") PORT: $PORT" 47 exit 0 48 fi 49 if grep -q "Error:" "$LOGFILE" 2>/dev/null; then 50 echo "Node $NODE failed to start:" 51 cat "$LOGFILE" 52 rm -f "$PIDFILE" "$PORTFILE" 53 exit 1 54 fi 55 sleep 1 56done 57 58echo "Node $NODE startup timed out. Log:" 59cat "$LOGFILE" 60rm -f "$PIDFILE" "$PORTFILE" 61exit 1