# PnPaaS PnPaaS ist eine PHP-/MariaDB-Webanwendung zur Verwaltung von Benutzern und containerbasierten Instanzen über Portainer. ## Funktionen - Benutzerregistrierung mit E-Mail-Aktivierung - Anmeldung und sichere Passwortverwaltung - Passwort-Reset mit zeitlich begrenzten Einmal-Tokens - CSRF-Schutz und sichere Session-Cookies - geschütztes Benutzer- und Admin-Dashboard - Verwaltung von Instanzanforderungen und Tarifen - Portainer-Anbindung über serverseitigen API-Key - Datenbank-Audit-Log - Verwaltung von Rechtstext-Zustimmungen und Versionen - Browserinstaller unter `/installer.php` - Root- und Unterverzeichnisbetrieb ohne fest codierten Installationspfad - Schutzregeln für Datenbank-, Include- und Konfigurationsdateien ## Voraussetzungen - PHP 8.1 oder neuer - MariaDB/MySQL - PHP-Erweiterungen `pdo_mysql`, `curl` und `mbstring` - HTTPS im Produktivbetrieb - eine bereits angelegte Datenbank und ein eingeschränkter Datenbankbenutzer ## Browserinstallation ohne Shellzugriff 1. Alle Dateien dieses Repositorys in das gewünschte Webverzeichnis hochladen. 2. `https://example.org/installer.php` öffnen. 3. Bei einer Installation in einem Unterverzeichnis die entsprechende URL verwenden, zum Beispiel `https://example.org/pnpaas/installer.php`. 4. Datenbank-, Administrator-, Portainer- und Rechtstextdaten eingeben. 5. Der Installer importiert Schema und Migrationen und erstellt die geschützte Laufzeitkonfiguration. 6. Nach erfolgreicher Einrichtung löscht sich `installer.php` selbst oder wird durch `.install-complete` gesperrt. Die MariaDB-Datenbank und der Anwendungsbenutzer müssen vor dem Browser-Aufruf über das Hosting-Panel angelegt werden. Root-Datenbankzugangsdaten werden nicht benötigt. ## Konfiguration Die Browserinstallation schreibt die Konfiguration nach `includes/runtime-config.php`. Diese Datei enthält sensible Zugangsdaten und darf nicht öffentlich ausgeliefert werden. `.htaccess` schützt sie zusätzlich; die effektive Webserver-Konfiguration muss nach der Bereitstellung geprüft werden. `config.example.php` dokumentiert die unterstützten Konfigurationswerte für manuelle Serverinstallationen. ## Struktur - `installer.php` – einmaliger Browserinstaller - `index.php` – Anmeldung - `register.php` – Registrierung - `dashboard.php` – Benutzer- und Adminbereich - `includes/bootstrap.php` – Konfiguration, Sessions, Datenbank und Portainer-Client - `database/schema.sql` – initiales Datenbankschema - `database/migrations/` – idempotente Migrationen - `assets/style.css` – Anwendungsstyles - `.htaccess` – Defense-in-Depth-Schutz für Apache ## Sicherheit Produktivbetrieb muss über HTTPS erfolgen. API-Keys, Datenbankpasswörter, Laufzeitkonfigurationen und private Schlüssel gehören nicht in Git. Vor Updates ist ein Datenbankbackup zu erstellen. Weitere Änderungsinformationen stehen in `CHANGELOG.md`.