Skip to content
Diese Seite wurde mit KI-Unterstützung erstellt und übersetzt. Falls Ihnen Ungenauigkeiten auffallen, helfen Sie gerne bei der Verbesserung. Auf GitHub bearbeiten

Fehlerbehebung

Diese Seite behandelt häufige Probleme beim Betrieb von Fenfa und ihre Lösungen.

iOS-Installation

"Unable to Install" / Installation schlägt fehl

Symptome: Tippen auf den Installations-Button auf iOS zeigt "Unable to Install" oder es passiert nichts.

Ursachen und Lösungen:

  1. HTTPS nicht konfiguriert. iOS erfordert HTTPS mit einem gültigen TLS-Zertifikat für OTA-Installation. Selbstsignierte Zertifikate funktionieren nicht.

    • Lösung: Reverse Proxy mit einem gültigen TLS-Zertifikat einrichten. Siehe Produktions-Deployment.
    • Zum Testen: ngrok verwenden, um einen HTTPS-Tunnel zu erstellen: ngrok http 8000
  2. Falsche primary_domain. Das Manifest-Plist enthält Download-URLs basierend auf primary_domain. Bei falschem Wert kann iOS die IPA nicht abrufen.

    • Lösung: FENFA_PRIMARY_DOMAIN auf die genaue HTTPS-URL setzen, auf die Benutzer zugreifen (z.B. https://dist.example.com).
  3. Zertifikatsprobleme. Das TLS-Zertifikat muss die Domain abdecken und von iOS vertrauenswürdig sein.

    • Lösung: Let's Encrypt für kostenlose, vertrauenswürdige Zertifikate verwenden.
  4. IPA-Signierung abgelaufen. Das Bereitstellungsprofil oder Signierungszertifikat ist möglicherweise abgelaufen.

    • Lösung: Die IPA mit einem gültigen Zertifikat neu signieren und erneut hochladen.

UDID-Bindung funktioniert nicht

Symptome: Das Mobileconfig-Profil wird installiert, aber das Gerät ist nicht registriert.

Ursachen und Lösungen:

  1. Callback-URL nicht erreichbar. Die UDID-Callback-URL muss vom Gerät erreichbar sein.

    • Lösung: Sicherstellen, dass primary_domain korrekt ist und vom Netzwerk des Geräts zugänglich ist.
  2. Nonce abgelaufen. Profil-Nonces laufen nach einem Timeout ab.

    • Lösung: Das Mobileconfig-Profil erneut herunterladen und es erneut versuchen.

Upload-Probleme

Upload schlägt mit 401 fehl

Symptom: {"ok": false, "error": {"code": "UNAUTHORIZED", ...}}

Lösung: Prüfen, dass der X-Auth-Token-Header einen gültigen Token enthält. Upload-Endpunkte akzeptieren sowohl Upload- als auch Admin-Token.

bash
# Token-Funktion verifizieren
curl -H "X-Auth-Token: YOUR_TOKEN" http://localhost:8000/admin/api/products

Upload schlägt mit 413 fehl (Request Entity Too Large)

Symptom: Große Datei-Uploads schlagen mit einem 413-Fehler fehl.

Lösung: Dies ist typischerweise ein Reverse-Proxy-Limit, nicht Fenfa selbst. Das Limit erhöhen:

Nginx:

nginx
client_max_body_size 2G;

Caddy: Caddy hat kein Standard-Body-Size-Limit, aber wenn eines gesetzt wurde:

dist.example.com {
    request_body {
        max_size 2GB
    }
    reverse_proxy localhost:8000
}

Intelligenter Upload erkennt keine Metadaten

Symptom: Version und Build-Nummer sind nach dem intelligenten Upload leer.

Lösung: Die automatische Erkennung des intelligenten Uploads funktioniert nur für IPA- und APK-Dateien. Für Desktop-Formate (DMG, EXE, DEB, etc.) version und build explizit in der Upload-Anfrage angeben.

Docker-Probleme

Container startet, aber Admin-Panel ist leer

Symptom: Das Admin-Panel lädt, zeigt aber keine Daten oder eine leere Seite.

Lösung: Prüfen, dass der Container läuft und die Port-Zuordnung korrekt ist:

bash
docker ps
docker logs fenfa

Daten nach Container-Neustart verloren

Symptom: Alle Produkte, Varianten und Releases verschwinden nach dem Neustart des Containers.

Lösung: Persistente Volumes einbinden:

bash
docker run -d --name fenfa -p 8000:8000 \
  -v ./data:/data \
  -v ./uploads:/app/uploads \
  fenfa/fenfa:latest

Berechtigung verweigert bei eingebundenen Volumes

Symptom: Fenfa kann nicht in /data oder /app/uploads schreiben.

Lösung: Sicherstellen, dass die Host-Verzeichnisse existieren und korrekte Berechtigungen haben:

bash
mkdir -p data uploads
chmod 777 data uploads  # Oder passende UID/GID setzen

Datenbankprobleme

"database is locked"-Fehler

Symptom: SQLite gibt "database is locked" bei hoher Parallelität zurück.

Lösung: SQLite verarbeitet gleichzeitige Lesevorgänge gut, serialisiert aber Schreibvorgänge. Dieser Fehler tritt typischerweise bei sehr hoher Schreiblast auf. Lösungen:

  • Sicherstellen, dass nur eine Fenfa-Instanz in dieselbe Datenbankdatei schreibt.
  • Bei mehreren Instanzen S3-Speicher und eine gemeinsame Datenbank verwenden.

Beschädigte Datenbank

Symptom: Fenfa startet nicht mit SQLite-Fehlern.

Lösung: Aus Backup wiederherstellen:

bash
# Fenfa stoppen
docker stop fenfa

# Backup wiederherstellen
cp /backups/fenfa-latest.db /path/to/data/fenfa.db

# Neu starten
docker start fenfa

Prävention

Automatische tägliche Backups einrichten. Backup-Skript finden sich im Produktions-Deployment.

Netzwerkprobleme

iOS-Manifest gibt falsche URLs zurück

Symptom: iOS-Manifest-Plist enthält http://localhost:8000 anstatt der öffentlichen Domain.

Lösung: FENFA_PRIMARY_DOMAIN auf die öffentliche HTTPS-URL setzen:

bash
FENFA_PRIMARY_DOMAIN=https://dist.example.com

Downloads langsam oder Timeout

Symptom: Große Datei-Downloads sind langsam oder schlagen fehl.

Mögliche Lösungen:

  • Reverse-Proxy-Timeout erhöhen: proxy_read_timeout 600s; (Nginx)
  • Anfrage-Pufferung deaktivieren: proxy_request_buffering off; (Nginx)
  • S3-kompatiblen Speicher mit CDN für große Dateien in Betracht ziehen

Hilfe erhalten

Wenn das Problem hier nicht behandelt wird:

  1. GitHub Issues auf bekannte Probleme prüfen.
  2. Container-Protokolle anzeigen: docker logs fenfa
  3. Ein neues Issue mit folgenden Informationen öffnen:
    • Fenfa-Version (docker inspect fenfa | grep Image)
    • Relevante Log-Ausgabe
    • Schritte zur Reproduktion des Problems

Released under the Apache-2.0 License.