Add project README and changelog
This commit is contained in:
@@ -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