#!/usr/bin/env bash set -euo pipefail NET="hxki-internal" SVC_LIST=("hxki-web:80" "hxki-n8n:5678" "hxki-mautic:80") echo "=== COM2 DOCTOR ยท PORTS / LISTEN / LOGS ===" echo "[0] Netzwerk" docker network inspect "$NET" >/dev/null 2>&1 && echo "OK: $NET existiert" || { echo "FAIL: $NET fehlt"; exit 1; } docker network inspect "$NET" --format '{{range $id,$c := .Containers}}{{println $c.Name}}{{end}}' | sort echo echo "[1] Container-Status" docker ps --format 'NAME={{.Names}} STATUS={{.Status}} PORTS={{.Ports}}' | egrep 'hxki-|hx-caddy' || true echo echo "[2] Listen-Checks IN jedem Service-Container (ss/netstat)" for entry in "${SVC_LIST[@]}"; do c="${entry%%:*}" p="${entry##*:}" echo echo "--- $c (soll lauschen auf :$p) ---" docker exec -it "$c" sh -lc " echo 'id:'; id || true echo 'ps:'; ps aux | head -n 20 || true echo 'ss:'; (ss -lntp 2>/dev/null || netstat -lntp 2>/dev/null || true) | egrep '(:$p\\b|LISTEN)' || true echo 'localhost test:'; (wget -qO- http://127.0.0.1:$p/ >/dev/null && echo OK_LOCALHOST || echo FAIL_LOCALHOST) || true " || echo "WARN: docker exec in $c fehlgeschlagen" done echo echo "[3] Caddy -> Upstreams (mit Retry 30s)" for entry in "${SVC_LIST[@]}"; do host="${entry%%:*}" port="${entry##*:}" echo echo "--- hx-caddy -> $host:$port ---" docker exec -it hx-caddy sh -lc " i=0 while [ \$i -lt 30 ]; do wget -qO- http://$host:$port/ >/dev/null 2>&1 && { echo OK; exit 0; } i=\$((i+1)); sleep 1 done echo FAIL exit 0 " || true done echo echo "[4] Logs (letzte 120 Zeilen)" for c in hxki-web hxki-n8n hxki-mautic hx-caddy; do echo echo "--- logs: $c ---" docker logs --tail=120 "$c" 2>&1 || true done echo echo "=== ENDE ==="