Server part for update and backup management

Medowar f62663ef10 removed references to psa project #2 il y a 1 mois
admin f62663ef10 removed references to psa project #2 il y a 1 mois
api f62663ef10 removed references to psa project #2 il y a 1 mois
assets f62663ef10 removed references to psa project #2 il y a 1 mois
client-package f62663ef10 removed references to psa project #2 il y a 1 mois
docs f62663ef10 removed references to psa project #2 il y a 1 mois
includes f62663ef10 removed references to psa project #2 il y a 1 mois
scripts f62663ef10 removed references to psa project #2 il y a 1 mois
.gitignore 90e0d37438 initial commit il y a 1 mois
.htaccess 90e0d37438 initial commit il y a 1 mois
README.md f62663ef10 removed references to psa project #2 il y a 1 mois
config.sample.php f62663ef10 removed references to psa project #2 il y a 1 mois
index.php 90e0d37438 initial commit il y a 1 mois

README.md

Manage

Update- und Backup-Server für PHP-Projekte, plus ein weitergebbares Client-Paket.

Zweck

Mehrere eigenständige PHP-Projekte brauchen dieselben zwei Dinge: eine Möglichkeit, neue Versionen einzuspielen, und regelmäßige Sicherungen der Betriebsdaten. manage stellt beides zentral bereit, statt es in jedem Projekt erneut zu bauen.

Eine Installation betreut ein Produkt mit einer überschaubaren Zahl von Instanzen. Für ein weiteres Produkt wird manage erneut ausgerollt.

Kernfunktionen

  • Release-Verwaltung: Pakete hochladen, Prüfsummen serverseitig berechnen, aktuelles Release festlegen
  • Backup-Empfang je Instanz, mit zwei Aufbewahrungsstufen und optionalem S3-Archiv
  • Instanzregister mit Token-Authentifizierung, Deaktivierung und Token-Erneuerung
  • Übersicht über installierte Versionen, letzte Sicherungen und offene Migrationen
  • Client-Paket mit Kommandozeile, fertiger Adminoberfläche und Funktions-API

Voraussetzungen

  • PHP 8.x
  • ein Webserver (Apache mit aktiver .htaccess oder nginx mit gesetzten Sperren)
  • Schreibrechte auf storage/

Keine Datenbank, kein Composer, kein Build-Schritt, keine externen Bibliotheken.

Wichtige Dateien

  • Konfiguration: config.php (aus config.sample.php)
  • Oberfläche: admin/
  • Schnittstelle für Clients: api/v1/
  • Gemeinsame Bibliothek: includes/
  • Zustand: storage/ (nicht öffentlich)
  • Weitergebbares Client-Paket: client-package/

Einrichtung

  1. config.sample.php nach config.php kopieren.
  2. Passwort-Hash erzeugen und als MANAGE_ADMIN_PASSWORD_HASH eintragen: php -r 'echo password_hash("…", PASSWORD_DEFAULT), PHP_EOL;'
  3. MANAGE_PUBLIC_URL auf die absolute Adresse dieser Installation setzen.
  4. MANAGE_PRODUCT_NAME und MANAGE_PACKAGE_PREFIX auf das betreute Produkt setzen.
  5. Schreibrechte auf storage/ sicherstellen.
  6. admin/login.php öffnen und unter Einstellungen → Diagnose prüfen, dass alles Wesentliche stimmt.

Ausführlich: docs/SERVER_SETUP.md.

Ein Projekt anbinden

  1. Im Manage-Server unter Instanzen eine Instanz anlegen und das einmalig angezeigte Token notieren.
  2. Client-Paket bauen und übergeben: ./scripts/build-client-package.sh --server-url https://manage.example.org
  3. Im Projekt: manage-client/ einkopieren, config.php anlegen, php manage-client/bin/manage-client.php status ausführen.

Die vollständige Anleitung dafür liegt im Paket selbst (client-package/README.md), damit die empfangende Seite keinen Zugriff auf dieses Repository braucht.

Dokumentation

Serverseitig, in docs/:

Für Projekte, in client-package/docs/: Quickstart, Integration, Konfiguration, Funktions-API, Backup-Quellen, Paketbau, Post-Update-Hooks, Protokoll, Fehlersuche, Sicherheit.

Im Browser lesbar über docs/index.php beziehungsweise client-package/docs/index.php (Markdown wird mit dem mitgelieferten marked gerendert).

Was bewusst fehlt

  • Keine Wiederherstellung. Backups werden erstellt, übertragen und zum Download bereitgestellt, aber nie automatisch zurückgespielt. Ein Update sichert die überschriebenen Dateien, kann sie aber nicht zurückholen.
  • Keine automatischen Updates. Der Server bietet an, die Instanz entscheidet.
  • Keine Signatur der Pakete. Prüfsumme und Paket kommen vom selben Server; die Absicherung ist TLS plus Token. Der Manage-Server muss entsprechend geschützt sein.
  • Keine Kanäle pro Instanz. Es gibt ein aktuelles Release für alle Instanzen eines Servers.

Hinweise

  • Kein automatisiertes Test-/CI-Setup vorgesehen.