← Zurueck zu Education
🔍

Debugging Grundlagen

Probleme systematisch finden und loesen - von 'es geht nicht' zu 'ich weiss warum'.

⏱️ 25 Minuten 📊 Mittel
🧠 Schritt 1: Die richtige Einstellung +

Bevor du loslegst - die wichtigste Regel beim Debugging:

"Der Computer macht genau das, was man ihm sagt - nicht das, was man meint."

Systematisches Vorgehen:

  1. Reproduzieren: Kannst du das Problem nachstellen?
  2. Eingrenzen: Was funktioniert noch? Was nicht?
  3. Hypothese: Was koennte die Ursache sein?
  4. Testen: Eine Aenderung, dann pruefen
  5. Dokumentieren: Was hast du versucht?
⚠️

Nicht wild aendern!

Aendere nie mehrere Dinge gleichzeitig. Sonst weisst du am Ende nicht, was das Problem geloest hat.
🌐 Schritt 2: Ist es erreichbar? (Netzwerk-Check) +

Das erste was du pruefen solltest: Komme ich ueberhaupt hin?

# Ist der Server erreichbar?

ping dein-server.de

# DNS-Aufloesung pruefen

nslookup dein-server.de

dig dein-server.de

# Ist der Port offen?

nc -zv dein-server.de 443

telnet dein-server.de 443

Haeufige Ursachen

Ping fehlschlaegt Server down, Firewall blockt ICMP, Netzwerkproblem
DNS fehlschlaegt Domain nicht registriert, DNS-Server down, Propagation
Port nicht offen Service laeuft nicht, Firewall, Port falsch
💡

Praktisches Beispiel: Nextcloud nicht erreichbar

1. ping cloud.deine-domain.de → OK? Server lebt
2. nc -zv cloud.deine-domain.de 443 → Fehlschlag? → Webserver oder Firewall pruefen
⚙️ Schritt 3: Laeuft der Service? (Status-Check) +

Bei Docker-basierten Services:

# Alle Container anzeigen

docker ps -a

# Status eines spezifischen Containers

docker ps -a | grep nextcloud

# Container neustarten

docker restart nextcloud

# Mit docker-compose

cd /opt/nextcloud && docker compose ps

docker compose restart

Container-Status verstehen

Up Container laeuft normal
Restarting Crasht und startet immer wieder → Logs pruefen!
Exited Gestoppt oder gecrasht → Logs pruefen!
Created Erstellt aber nie gestartet

Bei systemd Services (ohne Docker):

# Service Status

systemctl status nginx

systemctl status postgresql

# Service neustarten

sudo systemctl restart nginx

📜 Schritt 4: Was sagen die Logs? +

Logs sind dein bester Freund! Hier steht meist genau was schief laeuft.

# Docker Container Logs

docker logs nextcloud

docker logs nextcloud --tail 100

docker logs nextcloud -f # Live folgen

# docker-compose Logs

docker compose logs

docker compose logs -f nextcloud

# Systemd Journal

journalctl -u nginx -n 50

journalctl -xe # Letzte Fehler

Wonach suchen?

  • ERROR / FATAL - Offensichtliche Fehler
  • WARNING - Kann relevant sein
  • Connection refused - Anderer Service nicht erreichbar
  • Permission denied - Berechtigungsproblem
  • No space left - Festplatte voll
  • Out of memory - RAM voll

Praktisches Beispiel: n8n Workflow fehlgeschlagen

docker logs n8n --tail 200 | grep -i error
Zeigt: "Connection refused to smtp:25" → E-Mail-Server nicht erreichbar
📊 Schritt 5: Ressourcen pruefen +

Manchmal ist einfach etwas "voll":

# Festplatten-Nutzung

df -h

# Welcher Ordner ist gross?

du -sh /* 2>/dev/null | sort -h

du -sh /var/lib/docker/*

# RAM und CPU

htop

free -h

# Docker-spezifisch

docker stats

docker system df # Docker Speicherverbrauch

Typische Probleme

Festplatte 100% Docker Images aufraeumen, Logs rotieren, alte Backups loeschen
RAM voll Service braucht zu viel, Memory Leak, zu viele Services
CPU 100% Prozess haengt, Crypto-Mining, DoS-Angriff
⚠️

Docker aufraumen

docker system prune -a loescht ungenutzte Images, Container und Netzwerke. Kann viel Platz freigeben - aber Vorsicht: Nicht bei laufenden Services!
🔧 Schritt 6: Typische Probleme & Loesungen +

Webseite zeigt "502 Bad Gateway"

Der Reverse Proxy (nginx/Traefik) erreicht den Backend-Service nicht.

Pruefen:

  • Laeuft der Container? docker ps
  • Logs des Backends: docker logs app-name
  • Stimmt der Port in der Proxy-Config?

E-Mails kommen nicht an

E-Mail-Versand ist komplex - viele moegliche Fehlerquellen.

Pruefen:

  • SMTP-Credentials korrekt?
  • Port blockiert? (25, 465, 587)
  • SPF/DKIM/DMARC korrekt? dig TXT deine-domain.de
  • Mailserver-Logs pruefen

Login funktioniert nicht

Authentifizierung fehlgeschlagen.

Pruefen:

  • Passwort wirklich korrekt? (Caps Lock, Tastaturlayout)
  • Account gesperrt/deaktiviert?
  • Session/Cookie-Probleme? Browser-Cache leeren
  • Datenbank erreichbar? (bei zentraler Auth)

Alles ist langsam

Performance-Probleme haben viele Ursachen.

Pruefen:

  • Ressourcen: htop, docker stats
  • Festplatte: iostat (I/O-Last)
  • Netzwerk: iftop (Bandbreite)
  • Datenbank: Langsame Queries? Indexe fehlen?

Container startet nicht / Restart Loop

Container crasht direkt nach dem Start.

Pruefen:

  • Logs: docker logs container-name
  • Config-Datei kaputt? (YAML-Syntax)
  • Abhaengiger Service fehlt? (DB nicht gestartet)
  • Volume/Mount-Pfad existiert nicht?
🎯 Schritt 7: Service-spezifische Checks +

☁️ Nextcloud

# In den Container gehen

docker exec -it nextcloud bash

# OCC-Befehle (Nextcloud CLI)

occ status

occ maintenance:mode --off

occ files:scan --all

🔄 n8n

# Workflow-Ausfuehrungen pruefen

docker logs n8n --tail 100

# Webhook-URL erreichbar?

curl -I https://n8n.domain.de/webhook/test

📧 Mailserver

# Mailqueue pruefen

docker exec -it mailserver mailq

# SMTP-Verbindung testen

openssl s_client -connect mail.domain.de:465

# DNS-Records pruefen

dig MX domain.de

dig TXT domain.de | grep spf

🗄️ Datenbank (PostgreSQL/MariaDB)

# Verbindung pruefen

docker exec -it postgres psql -U user -d dbname -c "SELECT 1"

docker exec -it mariadb mysql -u user -p -e "SHOW STATUS"

# Aktive Verbindungen

SELECT * FROM pg_stat_activity;

🆘 Schritt 8: Wenn nichts hilft +

Eskalations-Checkliste:

  1. Google die Fehlermeldung

    Kopiere die exakte Fehlermeldung. Jemand hatte das Problem bestimmt schon.

  2. Dokumentation lesen

    Die offizielle Doku hat oft einen Troubleshooting-Bereich.

  3. GitHub Issues durchsuchen

    Bei Open Source Projekten: Issues und Discussions durchsuchen.

  4. Neustarten (ja, wirklich)

    docker compose down && docker compose up -d oder Server-Neustart.

  5. Support kontaktieren

    Mit allen gesammelten Infos: Was genau passiert, was hast du versucht, Logs.

💡

Was wir brauchen wenn du uns kontaktierst

1. Genaue Fehlerbeschreibung (Screenshot hilfreich)
2. Wann trat es auf? Was hast du vorher gemacht?
3. Relevante Logs (die letzten 50-100 Zeilen)
4. Was hast du schon versucht?

Haeufige Fragen

Wie finde ich die richtige Log-Datei?
Bei Docker: docker logs container-name. Bei systemd: journalctl -u service-name. Bei Webservern: /var/log/nginx/ oder /var/log/apache2/. Die App selbst loggt oft in eigene Dateien oder Docker-Volumes.
Wann sollte ich neustarten vs. debuggen?
Neustart ist ok bei: Einmaligem Problem, nach Updates, "komisches Verhalten". Debuggen bei: Wiederkehrenden Problemen, nach Aenderungen, wenn du verstehen willst warum.
Wie verhindere ich Probleme praeventiv?
Monitoring einrichten (Uptime Kuma), Logs regelmaessig pruefen, Updates zeitnah einspielen, Backups automatisieren und testen, Festplatten-Auslastung ueberwachen.
Was ist der Unterschied zwischen einem Bug und einem Config-Fehler?
Bug = Software verhält sich anders als dokumentiert (Entwickler-Problem). Config-Fehler = Software macht was sie soll, aber falsch konfiguriert (Admin-Problem). 90% der "Bugs" sind Config-Fehler.