129 lines
4.3 KiB
Bash
Executable File
129 lines
4.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Quick fix script for Blockscout initialization issues
|
|
# Run from Proxmox host: ./scripts/blockscout-quick-fix.sh
|
|
|
|
set -euo pipefail
|
|
|
|
VMID=5000
|
|
|
|
echo "=========================================="
|
|
echo "Blockscout Quick Fix for VMID 5000"
|
|
echo "=========================================="
|
|
echo ""
|
|
|
|
# Execute fix commands in VMID 5000
|
|
pct exec $VMID -- bash << 'FIX_SCRIPT'
|
|
set -euo pipefail
|
|
|
|
echo "Finding Blockscout container..."
|
|
BLOCKSCOUT_CONTAINER=$(docker ps -a | grep blockscout | grep -v postgres | awk '{print $1}' | head -1)
|
|
|
|
if [ -z "$BLOCKSCOUT_CONTAINER" ]; then
|
|
echo "❌ ERROR: Blockscout container not found"
|
|
exit 1
|
|
fi
|
|
|
|
echo "✅ Found container: $BLOCKSCOUT_CONTAINER"
|
|
echo ""
|
|
|
|
# Step 1: Verify database connectivity
|
|
echo "=== Step 1: Verifying database connectivity ==="
|
|
echo "Blockscout database credentials:"
|
|
echo " User: blockscout"
|
|
echo " Database: blockscout"
|
|
echo " Password: blockscout"
|
|
docker exec -it blockscout-postgres psql -U blockscout -d blockscout -c "SELECT 1;" >/dev/null 2>&1 && \
|
|
echo "✅ Database connection successful" || \
|
|
echo "⚠️ Database connection check failed (may still work)"
|
|
echo ""
|
|
|
|
# Step 2: Run migrations
|
|
echo "=== Step 2: Running database migrations ==="
|
|
docker exec -it $BLOCKSCOUT_CONTAINER bin/blockscout eval "Explorer.Release.migrate()" || {
|
|
echo "⚠️ Release.migrate() failed, trying mix ecto.migrate..."
|
|
docker exec -it $BLOCKSCOUT_CONTAINER mix ecto.migrate
|
|
}
|
|
echo ""
|
|
|
|
# Step 3: Build assets
|
|
echo "=== Step 3: Building static assets ==="
|
|
docker exec -it $BLOCKSCOUT_CONTAINER mix phx.digest || {
|
|
echo "⚠️ mix phx.digest failed, trying npm deploy..."
|
|
docker exec -it $BLOCKSCOUT_CONTAINER npm run deploy || true
|
|
}
|
|
echo ""
|
|
|
|
# Step 4: Update docker-compose if needed
|
|
echo "=== Step 4: Updating docker-compose configuration ==="
|
|
BLOCKSCOUT_DIR="/opt/blockscout"
|
|
if [ -f "$BLOCKSCOUT_DIR/docker-compose.yml" ]; then
|
|
# Check if command is already set
|
|
if ! grep -q "command:.*blockscout start" "$BLOCKSCOUT_DIR/docker-compose.yml"; then
|
|
echo "Adding startup command to docker-compose.yml..."
|
|
sed -i '/blockscout:/a\ command: bin/blockscout start' "$BLOCKSCOUT_DIR/docker-compose.yml"
|
|
echo "✅ Updated docker-compose.yml"
|
|
else
|
|
echo "✅ docker-compose.yml already has startup command"
|
|
fi
|
|
else
|
|
echo "⚠️ docker-compose.yml not found at $BLOCKSCOUT_DIR"
|
|
fi
|
|
echo ""
|
|
|
|
# Step 5: Restart Blockscout
|
|
echo "=== Step 5: Restarting Blockscout ==="
|
|
if [ -f "$BLOCKSCOUT_DIR/docker-compose.yml" ]; then
|
|
cd "$BLOCKSCOUT_DIR"
|
|
docker compose restart blockscout || docker compose up -d blockscout
|
|
else
|
|
echo "Restarting container manually..."
|
|
docker restart $BLOCKSCOUT_CONTAINER || {
|
|
docker stop $BLOCKSCOUT_CONTAINER
|
|
docker start $BLOCKSCOUT_CONTAINER
|
|
}
|
|
fi
|
|
|
|
echo ""
|
|
echo "Waiting for Blockscout to start..."
|
|
sleep 10
|
|
|
|
# Step 6: Verify
|
|
echo "=== Step 6: Verification ==="
|
|
if docker ps | grep -q blockscout; then
|
|
echo "✅ Blockscout container is running"
|
|
|
|
# Check logs for errors
|
|
echo ""
|
|
echo "Recent logs:"
|
|
docker logs blockscout 2>&1 | tail -10
|
|
|
|
# Check if tables exist in Blockscout database
|
|
echo ""
|
|
echo "Checking Blockscout database tables..."
|
|
docker exec -it blockscout-postgres psql -U blockscout -d blockscout -c "
|
|
SELECT
|
|
CASE WHEN EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'blocks')
|
|
THEN '✅ blocks' ELSE '❌ blocks' END as blocks,
|
|
CASE WHEN EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'transactions')
|
|
THEN '✅ transactions' ELSE '❌ transactions' END as transactions,
|
|
CASE WHEN EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'migrations_status')
|
|
THEN '✅ migrations_status' ELSE '❌ migrations_status' END as migrations_status;
|
|
" 2>/dev/null || echo "⚠️ Could not verify tables (container may still be starting)"
|
|
else
|
|
echo "❌ Blockscout container is not running"
|
|
echo "Check logs: docker logs blockscout"
|
|
exit 1
|
|
fi
|
|
|
|
echo ""
|
|
echo "=========================================="
|
|
echo "✅ Blockscout fix complete!"
|
|
echo "=========================================="
|
|
FIX_SCRIPT
|
|
|
|
echo ""
|
|
echo "Fix completed. Check status with:"
|
|
echo " pct exec $VMID -- docker logs blockscout"
|
|
|