Skip to content

Betrieb und Wiederherstellung

Warteschlange

worker verarbeitet Dokumente, Übersetzungen, Webhooks und E-Mails. scheduler prüft alle fünf Minuten persönliche Suchaufträge. Beides arbeitet nach einem Neustart mit der Datenbank weiter.

docker compose --env-file .env.local logs --tail=100 worker
docker compose --env-file .env.local exec app php bin/console messenger:failed:show
docker compose --env-file .env.local exec app php bin/console messenger:failed:retry --force

KI-Fehler erscheinen am Übersetzungsauftrag; vollständige Originaldateien bleiben unverändert. Eine neue Originalrevision entzieht alten Übersetzungen die aktuelle Freigabe. Mehrere Worker teilen dasselbe Dokumentenvolume. Die Standardinstallation verwendet Dateisperren; für verteilte Hosts wird ein gemeinsam erreichbarer Symfony-Lock-Store benötigt.

Sichern

./bin/backup

Ein Sicherungsordner enthält database.sql.gz und uploads.tar.gz. Zusätzlich .env.local verschlüsselt sichern, damit APP_SECRET, Datenbank- und Dienstzugänge erhalten bleiben. Sicherungen auf einen getrennten Host übertragen. Bei hoher Schreiblast vor dem Sichern kurz Wartungsmodus beziehungsweise einen Volume-/Datenbanksnapshot verwenden, damit Datenbank und Dokumente denselben Zeitpunkt abbilden.

Wiederherstellen

In einer eigenen Wiederherstellungsinstanz mit leeren Volumes und passender .env.local beginnen. Die folgenden Befehle ersetzen deren Inhalt; BACKUP_DIR ist der geprüfte Sicherungsordner.

export BACKUP_DIR=backups/your-selected-backup
docker compose --env-file .env.local stop app worker scheduler
gzip -dc "$BACKUP_DIR/database.sql.gz" | docker compose --env-file .env.local exec -T db \
  sh -c 'MYSQL_PWD="$MYSQL_PASSWORD" mysql -u"$MYSQL_USER" "$MYSQL_DATABASE"'
cat "$BACKUP_DIR/uploads.tar.gz" | docker compose --env-file .env.local run --rm --no-deps -T app \
  sh -c 'tar -xzf - -C /var/www/html/var && chown -R www-data:www-data /var/www/html/var/uploads'
docker compose --env-file .env.local up -d app worker scheduler
docker compose --env-file .env.local exec app php bin/console app:health

Danach eine Anmeldung, eine fremde Firma ohne Berechtigung, einen autorisierten Download, die SHA-256-Prüfsumme des Originals und einen vollständigen Anfrageablauf prüfen. Ein erfolgreiches Backup ist erst nach einer solchen Wiederherstellungsprobe bestätigt. Ein tatsächlicher Docker-Volume-Restore wurde in der Erstellungsumgebung nicht durchgeführt.

Livekonfiguration

APP_URL, eigene Domain/TLS, ausgehender Maildienst, KI-Anbieter sowie Stripe-Preisobjekte gehören zur Betreiberkonfiguration. ClamAV muss erreichbar und aktuell sein; bei fehlender Virensuche werden Uploads im Standardbetrieb abgewiesen. Die lokale Abweichung UPLOAD_SCAN_REQUIRED=0 ist für Tests vorgesehen. Ein lokales Mailpit-Postfach verschickt keine E-Mails ins Internet.

Die Vorlage enthält keine produktiven Daten und keine echten Geheimnisse. Die E-Mail-Adressen aus den Beispielbefehlen sind durch eigene zu ersetzen. Anmelde-, Rollen-, Download- und API-Regeln sind innerhalb der Anwendung umgesetzt; ein Betreiber sollte diese mit seinen eigenen Abläufen vor Freischaltung abnehmen.