62 lines
2.8 KiB
Markdown
62 lines
2.8 KiB
Markdown
# 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`.
|