Server part for update and backup management

Medowar 938a0e1c29 fixing script not beeing in client package 1 mesiac pred
admin 938a0e1c29 fixing script not beeing in client package 1 mesiac pred
api f62663ef10 removed references to psa project #2 1 mesiac pred
assets f62663ef10 removed references to psa project #2 1 mesiac pred
client-package 938a0e1c29 fixing script not beeing in client package 1 mesiac pred
docs 938a0e1c29 fixing script not beeing in client package 1 mesiac pred
includes f62663ef10 removed references to psa project #2 1 mesiac pred
scripts 938a0e1c29 fixing script not beeing in client package 1 mesiac pred
.gitignore 90e0d37438 initial commit 1 mesiac pred
.htaccess 90e0d37438 initial commit 1 mesiac pred
README.md f62663ef10 removed references to psa project #2 1 mesiac pred
config.sample.php f62663ef10 removed references to psa project #2 1 mesiac pred
index.php 90e0d37438 initial commit 1 mesiac pred

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.