# Deployment auf Netcup Webspace ## Zielbild - Code unter einem Release-Pfad wie `/apps/kaffeekasse/current` - Document Root in Plesk auf `/apps/kaffeekasse/current/public` - `.env` ausserhalb des Webroots oder direkt im Projektverzeichnis ohne Webzugriff - Migrationen ueber `bin/migrate.php` - zyklische Aufgaben ueber `bin/cron.php` ## Erstinstallation 1. Neue Domain oder Subdomain im Netcup WCP/Plesk anlegen. 2. Document Root auf das Verzeichnis `public/` des Releases zeigen lassen. 3. MySQL-Datenbank und separaten User anlegen. 4. Projekt per FTPES oder SFTP hochladen. 5. Installer unter `/install` aufrufen oder `.env` manuell setzen. 6. Alternativ oder zusaetzlich: `/usr/local/php83/bin/php /apps/kaffeekasse/current/bin/migrate.php` 7. Plattform-Admin einloggen und ersten Mandanten registrieren. ## Scheduled Tasks - Alle 5 Minuten: `/usr/local/php83/bin/php /apps/kaffeekasse/current/bin/cron.php` - Optional Healthcheck: `/usr/local/php83/bin/php /apps/kaffeekasse/current/bin/healthcheck.php` ## Release-Prozess 1. `scripts/build-release.sh` erzeugt ein auslieferbares Paket. 2. Paket hochladen und entpacken. 3. `.env` und persistente `storage/`-Pfade sichern. 4. `bin/migrate.php` ausfuehren. 5. Healthcheck und Login pruefen. ## Sicherheitshinweise - `public/` bleibt der einzige Webroot. - `.env`, Dumps, Backups und `.git` duerfen nicht oeffentlich erreichbar sein. - Fuer produktive Domains HTTPS erzwingen. - Session-Cookies sind auf `HttpOnly`, `SameSite=Lax` und `Secure` ausgelegt. - Tenant-Daten werden serverseitig ueber Session und Memberships zugeordnet. ## Git-Remote vorbereiten Beispiel fuer spaeteres Pushen auf `git.ctb-it.de`: ```bash git remote add origin ssh://git@git.ctb-it.de/namespace/kaffeekasse-saas.git git push -u origin main ``` Die genaue URL haengt von eurem Namespace und dem Zielsystem ab.