❓ FAQ - Häufig gestellte Fragen

Für junge Krümel: Hier findest du Antworten auf häufige Fragen!


🌱 Grundsätzliches

Brauche ich Vorkenntnisse?

Hilfreich:
- Grundkenntnisse in Linux (cd, ls, cat)
- SSH-Zugang zu einem Server
- Verständnis was ein Web-Server ist

Nicht nötig:
- Nginx-Expertenwissen
- Programmier-Kenntnisse
- Netzwerk-Studium

💡 Tipp: Lies das Glossar wenn Begriffe unklar sind!

Wie lange dauert die Installation?

Mit Erfahrung: 15-30 Minuten
Als Anfänger: 1-2 Stunden (inkl. Lesen der Docs)
Beim ersten Mal: Plane einen halben Tag ein

Warum länger? Du lernst dabei! 📚

Kann ich etwas kaputt machen?

Ja, aber:
- Das Script erstellt automatisch ein Backup
- Du kannst jederzeit zurückrollen
- Wir testen alles vor dem Live-Schalten

💡 Tipp: Mache das erste Mal auf einem Test-Server!

Was kostet das?

Das Repo: Kostenlos! (MIT License)
SSL-Zertifikate: Kostenlos! (Let's Encrypt)
Server: Kommt drauf an
- VPS bei Hetzner: ~5€/Monat
- Bei DigitalOcean: ~6$/Monat
- Raspberry Pi zu Hause: Einmalig ~50€


🖥️ Server & Hosting

Welcher Server funktioniert?

Empfohlen:
- Ubuntu 20.04 oder neuer
- Debian 11 oder neuer
- Mind. 1GB RAM
- 10GB Speicher

Getestet auf:
- Hetzner Cloud (CX11)
- DigitalOcean Droplets
- Raspberry Pi 4 (4GB)

Nicht empfohlen:
- Shared Hosting (kein Root-Zugriff)
- Windows Server (nutzt Linux!)

Kann ich das auf meinem Raspberry Pi machen?

Ja! 🎉
- Raspberry Pi 3B+ oder neuer
- Mind. 2GB RAM (4GB besser)
- Raspbian OS (Debian-basiert)
- Feste IP oder DynDNS

Aber:
- Langsamer als VPS
- Internet-Anbindung wichtig
- Router-Port-Forwarding nötig

Brauche ich eine eigene Domain?

Nein! Wir nutzen sslip.io:
- Kostenlos
- Keine Registrierung
- Automatische SSL-Zertifikate
- Format: subdomain.DEINE-IP.sslip.io

Beispiel:
IP: 194.164.194.191
Domain: crumbforest.194-164-194-191.sslip.io

Mit eigener Domain? Funktioniert auch, ändere einfach die Config!


🔐 Sicherheit & Auth

Wie sicher ist Basic Auth?

Kombination mit HTTPS: Sehr sicher! ✅
- Passwort wird verschlüsselt übertragen
- Moderne TLS-Verschlüsselung
- Für interne Tools völlig ausreichend

Ohne HTTPS: UNSICHER! ❌
- Passwort im Klartext
- Kann abgefangen werden

Für Produktion:
- Basic Auth + HTTPS = OK ✅
- Für Banking etc.: OAuth2 besser

Kann ich mehrere Benutzer anlegen?

Ja! So geht's:

# Ersten User anlegen (mit -c für "create")
htpasswd -c /etc/nginx/.htpasswd alice

# Weitere User hinzufügen (OHNE -c!)
htpasswd /etc/nginx/.htpasswd bob
htpasswd /etc/nginx/.htpasswd charlie

# Alle User anzeigen
cat /etc/nginx/.htpasswd | cut -d: -f1

Wichtig: Beim ersten Mal -c, danach NIE MEHR! Sonst überschreibst du die Datei!

Was ist wenn ich mein Passwort vergesse?

Kein Problem:

# Für einen User neu setzen
htpasswd /etc/nginx/.htpasswd username
# Gib neues Passwort ein

# Nginx neu laden
systemctl reload nginx

Wie stark sollte mein Passwort sein?

Mindestens:
- 12 Zeichen
- Groß- und Kleinbuchstaben
- Zahlen
- Sonderzeichen

Generieren:

# Zufälliges Passwort (32 Zeichen)
openssl rand -base64 32

💡 Tipp: Nutze einen Passwort-Manager!


🔧 Nginx & Konfiguration

Was ist der Unterschied zwischen sites-available und sites-enabled?

sites-available:
- Alle verfügbaren Configs
- Können aber inaktiv sein
- Wie Rezepte in einem Kochbuch 📖

sites-enabled:
- Aktive Configs (Symlinks)
- Nginx lädt nur diese
- Wie Rezepte die du gerade kochst 🍳

Aktivieren:

ln -s /etc/nginx/sites-available/crumbforest /etc/nginx/sites-enabled/

Warum bekomme ich "nginx -t" Fehler?

Häufige Ursachen:

  1. Fehlendes Semikolon:
# Falsch:
server_name example.com

# Richtig:
server_name example.com;
  1. Fehlende Datei:
# Config sagt:
ssl_certificate /pfad/zum/cert.pem;
# Aber Datei existiert nicht!

# Lösung: Prüfen
ls -la /pfad/zum/cert.pem
  1. Falsche Permissions:
auth_basic_user_file /etc/nginx/.htpasswd;
# Datei existiert aber Nginx kann sie nicht lesen

# Lösung:
chmod 640 /etc/nginx/.htpasswd
chown root:www-data /etc/nginx/.htpasswd

Wie ändere ich eine Config?

# 1. Datei bearbeiten
nano /etc/nginx/sites-available/crumbforest.conf

# 2. Testen ob Syntax OK
nginx -t

# 3. Falls OK: Neu laden
systemctl reload nginx

# 4. Prüfen ob läuft
systemctl status nginx

💡 Tipp: Immer erst nginx -t bevor du reload machst!


🚀 Deployment

Was macht das setup_subdomains.sh Script genau?

Schritt für Schritt:

  1. ✅ Erstellt automatisches Backup
  2. ✅ Prüft ob SSL-Zertifikate vorhanden sind
  3. ✅ Erstellt fehlende SSL-Zertifikate mit Certbot
  4. ✅ Löscht alte, doppelte Konfigurationen
  5. ✅ Kopiert neue Configs nach /etc/nginx/sites-available/
  6. ✅ Erstellt Symlinks in /etc/nginx/sites-enabled/
  7. ✅ Testet Nginx Config (nginx -t)
  8. ✅ Lädt Nginx neu (systemctl reload nginx)

Dauer: 2-5 Minuten (je nach SSL-Cert-Erstellung)

Kann ich das Script mehrfach ausführen?

Ja! Das Script ist idempotent:
- Mehrfach ausführen = kein Problem
- Erstellt jedes Mal neues Backup
- Überschreibt alte Configs

Wann nützlich:
- Nach Config-Änderungen
- Zum Testen
- Nach Rollback

Was passiert bei einem Fehler während des Deployments?

Das Script stoppt:
- Bei nginx -t Fehler
- Bei fehlenden Dateien
- Bei Certbot-Problemen

Dann:
1. Fehler wird angezeigt
2. Nginx läuft mit ALTER Config weiter
3. Backup liegt unter /root/nginx-backup-*/
4. Du kannst Fehler beheben und neu versuchen

💡 Tipp: Lies die Fehlermeldung genau!


🧪 Testing

Was bedeuten die Test-Ergebnisse?

✅ Grün (OK):
- Test bestanden
- Alles funktioniert wie erwartet

⚠️ Gelb (WARNING):
- Funktioniert, aber nicht optimal
- Z.B. Cert läuft bald ab (< 30 Tage)
- Solltest du dir ansehen

❌ Rot (FAIL):
- Test fehlgeschlagen
- Etwas funktioniert nicht
- Muss behoben werden!

Warum zeigt curl "401 Unauthorized"?

Das ist gut! 🎉

401 bedeutet: "Auth ist aktiv"
- Server läuft
- HTTPS funktioniert
- Basic Auth schützt die Seite

Testen mit Passwort:

curl -I -u username:password https://domain.sslip.io/
# Sollte 200 OK zeigen

Wie teste ich ob HTTPS funktioniert?

# 1. HTTP sollte umleiten (301/302)
curl -I http://crumbforest.194-164-194-191.sslip.io/

# 2. HTTPS sollte funktionieren (401 oder 200)
curl -I https://crumbforest.194-164-194-191.sslip.io/

# 3. SSL-Cert prüfen
openssl s_client -connect crumbforest.194-164-194-191.sslip.io:443 \
  -servername crumbforest.194-164-194-191.sslip.io 2>/dev/null | \
  grep -E '(subject|issuer|expire)'

🐛 Fehlersuche

"Permission denied" - Was tun?

Problem: Du hast keine Rechte

Lösungen:

  1. Mit sudo:
sudo nginx -t
  1. Als root:
su root  # oder
sudo -i
  1. File Permissions prüfen:
ls -la /etc/nginx/
# Sollte zeigen: drwxr-xr-x root root

"Connection refused" - Was tun?

Problem: Service läuft nicht oder falsche Port

Prüfen:

# 1. Läuft der Service?
systemctl status nginx
systemctl status crumbforest  # dein Backend

# 2. Lauscht er auf dem richtigen Port?
netstat -tlnp | grep 8000

# 3. Firewall OK?
ufw status
# Port 80 und 443 sollten ALLOW sein

Backend Service läuft nicht - Was tun?

Diagnose:

# 1. Status prüfen
systemctl status crumbforest

# 2. Logs anschauen
journalctl -u crumbforest -n 50

# 3. Manuell starten versuchen
# (Je nach Service anders)

Häufige Gründe:
- Port schon belegt
- Fehlende Dependencies
- Falsche Permissions
- Fehler im Code

SSL-Zertifikat abgelaufen - Was tun?

Erneuern:

# Alle Certs erneuern
certbot renew

# Nginx neu laden
systemctl reload nginx

# Prüfen
certbot certificates

Automatisch erneuern:

# Ist meist schon eingerichtet
systemctl status certbot.timer

# Testen (Dry-Run)
certbot renew --dry-run

🔄 Rollback & Backup

Wie mache ich einen Rollback?

Automatisches Backup nutzen:

# 1. Letztes Backup finden
BACKUP=$(ls -td /root/nginx-backup-* | head -1)
echo "Nutze: $BACKUP"

# 2. Wiederherstellen
rm -f /etc/nginx/sites-enabled/*
cp -r $BACKUP/sites-available/* /etc/nginx/sites-available/
cp -r $BACKUP/sites-enabled/* /etc/nginx/sites-enabled/

# 3. Testen und neu laden
nginx -t && systemctl reload nginx

💡 Tipp: Es gibt auch ein scripts/rollback.sh Script!

Wo finde ich die Backups?

# Alle Backups auflisten
ls -lh /root/nginx-backup-*

# Neustes Backup
ls -td /root/nginx-backup-* | head -1

# Bestimmtes Backup ansehen
ls -la /root/nginx-backup-20250114-120000/

Wie erstelle ich ein manuelles Backup?

# Mit Zeitstempel
DATE=$(date +%Y%m%d-%H%M%S)
mkdir -p /root/nginx-backup-manual-$DATE
cp -r /etc/nginx/sites-available /root/nginx-backup-manual-$DATE/
cp -r /etc/nginx/sites-enabled /root/nginx-backup-manual-$DATE/

echo "Backup erstellt: /root/nginx-backup-manual-$DATE"

💡 Tipp: Es gibt auch ein scripts/create_backup.sh Script!


📱 URLs & Domains

Warum nutzen wir sslip.io?

Vorteile:
- ✅ Kostenlos
- ✅ Keine Registrierung
- ✅ Automatische Auflösung (IP in Domain)
- ✅ SSL-Certs funktionieren
- ✅ Subdomains möglich

Wie funktioniert's:
- Deine IP: 194.164.194.191
- Wird zu: 194-164-194-191.sslip.io
- Subdomains: crumbforest.194-164-194-191.sslip.io

Nachteil:
- Nicht so schön wie crumbforest.de
- Abhängig von sslip.io Service

Kann ich meine eigene Domain nutzen?

Ja! Änderungen nötig:

  1. DNS A-Record setzen:
crumbforest.deine-domain.de  →  194.164.194.191
ttyd.deine-domain.de         →  194.164.194.191
git.deine-domain.de          →  194.164.194.191
qdrant.deine-domain.de       →  194.164.194.191
  1. Configs anpassen:
# In jeder .conf Datei:
server_name crumbforest.deine-domain.de;  # statt sslip.io
  1. SSL-Certs neu erstellen:
certbot certonly --nginx -d crumbforest.deine-domain.de

💻 Daily Operations

Wie schaue ich mir Logs an?

Nginx Access Log (wer greift zu):

tail -50 /var/log/nginx/crumbforest.access.log

Nginx Error Log (was geht schief):

tail -50 /var/log/nginx/error.log

Live-Ansicht (folge neuen Einträgen):

tail -f /var/log/nginx/error.log

Alle Logs durchsuchen:

grep "404" /var/log/nginx/*.log
grep -i error /var/log/nginx/*.log

Wie füge ich einen neuen User hinzu?

# Für Crumbforest/Terminal/Gitea
htpasswd /etc/nginx/.htpasswd neuer_user

# Für Qdrant
htpasswd /etc/nginx/.htpasswd_qdrant neuer_user

# Nginx neu laden
systemctl reload nginx

Wie ändere ich ein Passwort?

# Einfach überschreiben
htpasswd /etc/nginx/.htpasswd username
# Gib neues Passwort ein

# Nginx neu laden
systemctl reload nginx

📚 Lernen & Weiterentwicklung

Wo kann ich mehr über Nginx lernen?

Offizielle Docs:
- https://nginx.org/en/docs/

Gute Tutorials:
- DigitalOcean Nginx Tutorials
- Nginx Beginner's Guide
- LinuxBabe Nginx Tutorials

Bücher:
- "Nginx HTTP Server" (4th Edition)
- "Mastering Nginx" (2nd Edition)

Wie kann ich das Repo verbessern?

Pull Requests willkommen! 💚

  1. Fork das Repo
  2. Erstelle Branch für deine Änderung
  3. Teste deine Änderungen
  4. Erstelle Pull Request mit Beschreibung

Ideen:
- Docs verbessern
- Fehler beheben
- Neue Features
- Mehr Tests

Gibt es eine Community?

Geplant! 🌱

  • GitHub Discussions (bald)
  • Discord Server (in Planung)
  • Monatliche Calls (vielleicht)

Aktuell: Issues auf GitHub nutzen!


🎯 Noch Fragen?

Hier nicht gefunden?

  1. Schau ins Glossar - Begriffe erklärt
  2. Lies Troubleshooting - Fehler beheben
  3. Öffne ein Issue - Wir helfen gerne!

Bug gefunden?

Bitte melde ihn: Issue öffnen

Feature-Wunsch?

Auch ein Issue öffnen mit Label "enhancement"!


**Noch unsicher? Das ist normal!** 🌱 [📖 Zurück zur Hauptseite](../README.md) | [🎓 Begriffe lernen](GLOSSARY.md) | [🔧 Installation](INSTALLATION.md) Fragen stellen ist klug! 💡