#!/bin/bash echo "║ AUTO-FIX — DETECT + CORRECT" FIXED=0 # 1. Docker containers down for S in langfuse mattermost n8n qdrant searxng twenty uptime-kuma vaultwarden plausible prometheus loki; do if ! docker ps --format '{{.Names}}' | grep -q "^$S$"; then docker start $S > /dev/null 2>&1 echo "║ FIXED: Started $S" FIXED=$((FIXED+1)) fi done # 2. Systemd services for S in deerflow deerflow-web nginx php8.5-fpm; do if ! systemctl is-active $S > /dev/null 2>&1; then systemctl start $S 2>/dev/null echo "║ FIXED: Started $S" FIXED=$((FIXED+1)) fi done # 3. MiroFish MF=$(curl -sf http://127.0.0.1:5001/ --max-time 3 2>/dev/null) if [ -z "$MF" ]; then systemctl restart mirofish 2>/dev/null sleep 3 echo "║ FIXED: MiroFish restarted" FIXED=$((FIXED+1)) else echo "║ OK: MiroFish :5001" fi # 4. Disk > 90% DISK=$(df -h / | tail -1 | awk '{print $5}' | tr -d '%') if [ "$DISK" -gt 90 ]; then docker system prune -f > /dev/null 2>&1 journalctl --vacuum-size=100M > /dev/null 2>&1 find /tmp -mtime +3 -delete 2>/dev/null echo "║ FIXED: Disk cleanup ($DISK%)" FIXED=$((FIXED+1)) else echo "║ OK: Disk $DISK%" fi # 5. PHP error logs ERRS=$(find /var/log/nginx -name '*.log' -newer /tmp/.director-last-check -exec grep -c 'PHP Fatal' {} + 2>/dev/null | awk -F: '{s+=$2}END{print s+0}') if [ "$ERRS" -gt 100 ]; then find /var/log/nginx -name '*.log' -exec truncate -s 0 {} \; touch /tmp/.director-last-check echo "║ FIXED: Cleared $ERRS PHP errors" FIXED=$((FIXED+1)) fi echo "║ TOTAL FIXES: $FIXED" echo "║ NonReg: $(bash /var/www/html/api/nonreg-check.sh)"