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.