Server part for update and backup management
|
|
1 ay önce | |
|---|---|---|
| admin | 1 ay önce | |
| api | 1 ay önce | |
| assets | 1 ay önce | |
| client-docs | 1 ay önce | |
| client-package | 1 ay önce | |
| docs | 1 ay önce | |
| includes | 1 ay önce | |
| scripts | 1 ay önce | |
| .gitignore | 1 ay önce | |
| .htaccess | 1 ay önce | |
| README.md | 1 ay önce | |
| config.sample.php | 1 ay önce | |
| index.php | 1 ay önce |
Update- und Backup-Server für PHP-Projekte, plus ein weitergebbares Client-Paket.
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.
.htaccess oder nginx mit gesetzten Sperren)storage/Keine Datenbank, kein Composer, kein Build-Schritt, keine externen Bibliotheken.
config.php (aus config.sample.php)admin/api/v1/includes/storage/ (nicht öffentlich)client-package/config.sample.php nach config.php kopieren.MANAGE_ADMIN_PASSWORD_HASH eintragen:
php -r 'echo password_hash("…", PASSWORD_DEFAULT), PHP_EOL;'MANAGE_PUBLIC_URL auf die absolute Adresse dieser Installation setzen.MANAGE_PRODUCT_NAME und MANAGE_PACKAGE_PREFIX auf das betreute Produkt setzen.storage/ sicherstellen.admin/login.php öffnen und unter Einstellungen → Diagnose prüfen, dass alles
Wesentliche stimmt.Ausführlich: docs/SERVER_SETUP.md.
./scripts/build-client-package.sh --server-url https://manage.example.orgmanage-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.
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).
client-docs/ veröffentlicht den Inhalt von client-package/ über HTTP: jedes Kapitel
und jede Quelldatei als eigene Seite, dazu die Schnittstelle als OpenAPI. Anders als
admin/ und api/v1/ ist dieser Ordner ohne Anmeldung erreichbar – er ist dafür da,
weitergegeben zu werden, damit ein Projekt eingebunden werden kann, ohne vorher ein ZIP
zu verschicken.
| Adresse | Inhalt |
|---|---|
client-docs/ |
Übersicht, von dort ein Kapitel oder eine Quelldatei |
client-docs/index.php?doc=01_QUICKSTART |
ein Kapitel |
client-docs/index.php?code=manage-client/lib/updater.php |
eine Quelldatei |
client-docs/api.php |
Protokoll v1 in Swagger UI |
client-docs/openapi.php |
das OpenAPI-Dokument allein, für Codegeneratoren |
Für Programme gibt es dieselben Seiten als reines Markdown unter llms.php, mit
llms.php?doc=… und llms.php?code=… daneben. client-docs/llms.php ist das
Verzeichnis: es nennt jede Seite mit einem Satz Beschreibung und ihrer Größe und führt
für die üblichen Aufgaben – Client einbauen, nur Backups, nur Updater, eigenen Client
schreiben, Fehlersuche – die kurze Liste der Seiten auf, die dafür reicht. Das ist der
Zweck der Aufteilung: nur laden, was gebraucht wird. Diese Adresse bekommt ein LLM.
Apache beantwortet zusätzlich llms.txt; kanonisch ist llms.php, weil das ohne
mod_rewrite auskommt.
Die Seiten für Menschen rendern ihr Markdown im Browser und tragen im Quelltext einen Kommentar und ein unsichtbares Element, die auf die Markdown-Fassung derselben Seite verweisen – ein Programm, das versehentlich dort landet, findet den Weg.
Der Inhalt wird bei jedem Aufruf aus client-package/ gelesen; es gibt nichts zu bauen
und nichts nachzuziehen. manage-client/config.php ist von der Veröffentlichung
ausgenommen, damit ein lokal angelegtes Token nicht öffentlich wird.
marked und Swagger UI liegen unter client-docs/assets/ im Repository. Es wird kein
fremder Server kontaktiert, auch nicht für Schriften oder Symbole.