#!/bin/bash # Диагностика HTTP 502 (Caddy не достучался до Node / БД) set -e source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/shop-root.sh" 2>/dev/null || SHOP_ROOT=/opt/shop echo "=== Shop / Caddy 502 diagnostic ($SHOP_ROOT) ===" echo echo "1. PostgreSQL" if command -v pg_isready >/dev/null; then pg_isready -h 127.0.0.1 -p 5432 && echo " pg_isready: OK" || echo " pg_isready: FAIL" else echo " pg_isready не найден" fi echo echo "2. Служба shop" systemctl is-active shop 2>/dev/null || echo " shop: не active" systemctl status shop --no-pager -l 2>/dev/null | head -15 || true echo echo "3. Служба caddy" systemctl is-active caddy 2>/dev/null || true echo echo "4. Порт 3000" if command -v ss >/dev/null; then ss -tlnp | grep ':3000' || echo " Ничего не слушает порт 3000" else netstat -tlnp 2>/dev/null | grep ':3000' || true fi echo echo "5. curl backend" if curl -sf --max-time 3 http://127.0.0.1:3000/health; then echo echo " OK" else echo " FAIL — проверьте DATABASE_URL и journalctl -u shop" fi echo echo "6. .env" if [ -f "$SHOP_ROOT/.env" ]; then grep -E '^(DATABASE_URL|HOST|PORT)=' "$SHOP_ROOT/.env" 2>/dev/null | sed 's/=.*/=***/' || true grep -E '^DATABASE_URL=' "$SHOP_ROOT/.env" || echo " DATABASE_URL не задан" else echo " $SHOP_ROOT/.env не найден" fi echo echo "7. Node" which node && node -v