Server part for update and backup management

Medowar 90e0d37438 initial commit 1 bulan lalu
admin 90e0d37438 initial commit 1 bulan lalu
api 90e0d37438 initial commit 1 bulan lalu
assets 90e0d37438 initial commit 1 bulan lalu
client-package 90e0d37438 initial commit 1 bulan lalu
docs 90e0d37438 initial commit 1 bulan lalu
includes 90e0d37438 initial commit 1 bulan lalu
scripts 90e0d37438 initial commit 1 bulan lalu
.gitignore 90e0d37438 initial commit 1 bulan lalu
.htaccess 90e0d37438 initial commit 1 bulan lalu
README.md 90e0d37438 initial commit 1 bulan lalu
config.sample.php 90e0d37438 initial commit 1 bulan lalu
index.php 90e0d37438 initial commit 1 bulan lalu

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

  • Das PSA-Bestellsystem wurde beim Herauslösen nicht verändert und läuft unverändert gegen seine bisherigen Server weiter.
  • Kein automatisiertes Test-/CI-Setup vorgesehen.