Add project README and changelog
This commit is contained in:
@@ -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.
|
||||||
@@ -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`.
|
||||||
Reference in New Issue
Block a user