2. Systemvoraussetzungen¶
Pfarrplaner ist eine Laravel-Anwendung mit Vue-Frontend und zusätzlichen Werkzeugen für Dateiausgaben, Browser-Automatisierung und Dokumenterzeugung. Für einen stabilen Betrieb müssen deshalb mehrere Laufzeiten zusammenpassen.
2.1. Mindestbestandteile des Docker-Betriebs¶
- Linux-Server mit dauerhaftem Speicher
- Docker Engine mit Docker-Compose-Plugin
- mindestens 2 CPU-Kerne und 4 GB RAM als Ausgangspunkt
- DNS-Name und TLS vor dem Caddy-Container
- ausreichend Speicher für MariaDB, Redis, MinIO und Backups
- unabhängiges Backup-Ziel außerhalb des Servers
Die Produktions-Compose-Datei bringt PHP, Caddy, MariaDB, Redis, MinIO, Soketi, Horizon und den Scheduler als Container mit. Ein optionales Postfix-Profil übernimmt die ausgehende Zustellung. Für den Betrieb wird keine separat installierte PHP-, Node- oder Webserver-Laufzeit auf dem Host benötigt.
2.2. PHP-Anforderungen¶
Aus composer.json ergeben sich mindestens diese harten Anforderungen:
- PHP
^8.4 - PHP-Erweiterung
ext-dom - PHP-Erweiterung
ext-zip
Zusätzlich braucht Laravel in der Praxis weitere übliche Erweiterungen, zum Beispiel:
mbstringopensslpdo- zum gewählten Datenbanksystem passende PDO-Erweiterung
fileinfotokenizerxmlctypejson
Wenn Sie Dateiausgaben, Importe oder Office-Dokumente nutzen, sollten Sie fehlende Basis-Erweiterungen vor der Installation gezielt prüfen, nicht erst bei der ersten Fehlermeldung.
2.3. Datenbank und Objektspeicher¶
Im Docker-Betrieb ist MariaDB 11 der Datenbankdienst. MinIO ist der verbindliche S3-kompatible Objektspeicher für Uploads und andere Anwendungsdateien.
Für produktive Mehrbenutzer-Instanzen empfiehlt sich in der Regel MySQL oder MariaDB. SQLite ist vor allem für kleine Test- oder Demo-Umgebungen praktisch.
2.4. Node.js, npm und Frontend-Build¶
Pfarrplaner nutzt Vite und ein modernes npm-Ökosystem. Für produktive Builds brauchen Sie:
- eine aktuelle Node.js-LTS-Version
npm- ausreichend Arbeitsspeicher für
npm installundnpm run build
Node wird im Docker-Build verwendet. Auf dem Host wird Node nur benötigt, wenn Sie lokale Frontend- oder Manual-Builds außerhalb von Docker ausführen.
2.5. Chromium, Puppeteer und Browsershot¶
Pfarrplaner verwendet unter anderem:
puppeteerspatie/browsershot
Darum muss auf dem Zielsystem ein lauffähiger Chromium- beziehungsweise Chrome-Stack vorhanden sein. Prüfen Sie besonders:
- Chromium oder Google Chrome ist installiert.
- Alle nötigen Systembibliotheken für Headless-Chromium sind vorhanden.
- Der Benutzer der Webanwendung darf den Browser im Headless-Betrieb starten.
- Temporäre Verzeichnisse und Cache-Verzeichnisse sind schreibbar.
Fehlt diese Laufzeit, schlagen PDF-, Screenshot- oder Browser-basierte Ausgaben oft erst später im Betrieb fehl.
2.6. Webserver und öffentliche Netze¶
Im Produktionsbetrieb nimmt Caddy die öffentliche Verbindung entgegen und reicht
sie intern an den App-Container weiter. Der Host-Port wird über APP_PORT
konfiguriert und standardmäßig nur an 127.0.0.1 gebunden; TLS kann davor über
einen externen Reverse Proxy terminiert werden.
Wichtig sind außerdem:
- HTTPS
- ausreichend Upload-Größen
- saubere Weiterleitung auf die öffentliche Basis-URL
- Schutz gegen direkten Zugriff auf interne Dateien außerhalb von
public/
2.7. Mail¶
Pfarrplaner verschickt Systemmails. Deshalb brauchen Sie:
- gültige Absenderadresse
- funktionierenden SMTP- oder anderen Mail-Transport
- SPF, DKIM und DMARC passend zur Absenderdomain
- im Docker-Produktionsbetrieb das optionale Compose-Profil
mail - ausgehender TCP-Port 25 oder ein erreichbarer authentifizierter SMTP-Relay
Ohne funktionierende Mailzustellung sind Passwort-Resets, Benachrichtigungen und manche Arbeitsabläufe unzuverlässig.
2.8. Hintergrundaufgaben¶
Für einen vollständigen Docker-Betrieb sind horizon und scheduler eigene
Compose-Dienste. Sie werden beim Produktionsupdate gemeinsam mit app
aktualisiert. Ein Host-Cronjob für den Laravel-Scheduler ist in diesem Weg
nicht erforderlich.
Wenn Sie Octane oder RoadRunner verwenden, kommen eigene Betriebsaufgaben wie Reloads und Health-Checks dazu.