Add project README and changelog

This commit is contained in:
Hermes Agent
2026-09-20 13:48:28 +00:00
parent ab6aff2d84
commit a621557820
2 changed files with 107 additions and 0 deletions
+46
View File
@@ -0,0 +1,46 @@
# Changelog
Alle Einträge verwenden ISO-8601-Timestamps in UTC. Mehrere Änderungen desselben Tages werden in einem gemeinsamen Eintrag zusammengefasst.
## 2026-09-20T13:48:02+00:00 Initial Release
### Anwendung
- PnPaaS-Webanwendung als PHP-/MariaDB-Anwendung bereitgestellt.
- Benutzerregistrierung mit E-Mail-Aktivierung implementiert.
- Anmeldung, Session-Verwaltung und Logout implementiert.
- Passwort-Reset mit gehashten, zeitlich begrenzten Einmal-Tokens implementiert.
- Passwort- und Benutzerdaten werden mit sicheren Hash-Verfahren verarbeitet.
- Benutzer- und Admin-Dashboard für Instanzanforderungen bereitgestellt.
- Tarif- und Instanzstatusverwaltung integriert.
- Portainer-Anbindung über serverseitigen API-Key integriert.
- Audit-Log und Datenbankbeziehungen für Benutzer und Instanzen vorgesehen.
- Rechtstext-Zustimmungen mit Dokument-URLs und Versionsangaben gespeichert.
### Sicherheit
- CSRF-Schutz für zustandsändernde Formulare implementiert.
- Prepared PDO Statements und native PDO-Prepares aktiviert.
- Sichere Session-Cookies, HttpOnly, SameSite und Secure-Cookie-Unterstützung aktiviert.
- Sicherheitsheader einschließlich CSP, HSTS bei HTTPS, Frame-Schutz und MIME-Schutz ergänzt.
- Technische Fehlerdetails werden nicht an Benutzer ausgegeben.
- `.htaccess` schützt `includes/`, `database/`, Laufzeitkonfigurationen und sensible Dateien.
- Portainer-TLS-Zertifikatsprüfung bleibt aktiviert.
- Produktive Zugangsdaten, `.env`-Dateien, API-Keys und Datenbankinhalte sind nicht Bestandteil des Repositories.
### Datenbank
- Idempotentes Basisschema für Benutzer, Aktivierungstokens, Passwort-Reset-Tokens, Zustimmungen, Instanzen, Portainer-Tokens und Audit-Logs hinzugefügt.
- Migration für Kontoaktivierung hinzugefügt.
- Migration für zusätzliche Registrierungsdaten hinzugefügt.
- Fremdschlüssel, eindeutige Schlüssel und Statuswerte definiert.
### Installation und Betrieb
- Browserinstaller als `installer.php` bereitgestellt.
- Installation ohne Shellzugriff ermöglicht, sofern Datenbank und Datenbankbenutzer bereits über das Hosting-Panel angelegt wurden.
- Installer funktioniert direkt im Webroot sowie in einem Unterverzeichnis.
- Runtime-Konfiguration wird als geschützte PHP-Datei geschrieben.
- Installer löscht sich nach erfolgreicher Installation selbst und verwendet zusätzlich einen Completion-Marker.
- Root-Layout des Git-Repositories hergestellt; die Anwendung liegt direkt im Repository-Root.
- Beispielkonfiguration und Sicherheitsdokumentation bereitgestellt.
+61
View File
@@ -0,0 +1,61 @@
# 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`.