Files
pnpaas-adm/README.md
T

62 lines
2.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`.