Diese Anleitung beschreibt den praktischen Ablauf für ein bestehendes OpenPaw-Memory-Server-Projekt auf einem All-Inkl-Webspace. Sie trennt bewusst zwischen Erstinstallation und Update. Zugangsdaten, Tokens und konkrete Pfade gehören nicht ins Repository.
Auf dem Webspace bleiben diese Dateien und Ordner erhalten:
private/config.phpprivate/backups/private/runtime/Beim Update werden Code, Assets, SQL-Migrationen, Tools und Dokumentation ersetzt. Die produktive Config wird nicht überschrieben.
Im Projektordner:
scripts/build-release.sh
Danach gibt es zwei Artefakte:
release/: entpacktes Installationspaketdist/openpaw-memory-server-<version>.zip: ZIP-Paket zum Hochladen und
Entpacken auf dem WebspaceFür normale Anwender ist das ZIP-Paket der einfachste Weg.
Wenn möglich, sollte die Domain im All-Inkl-KAS auf den public/-Ordner zeigen:
openpaw/
public/ <- Domain-Ziel
private/
sql/
tools/
docs/
Wenn die Domain nicht direkt auf public/ zeigen kann, müssen private/,
sql/, tools/ und docs/ zuverlässig durch .htaccess oder Webroot-Trennung
vor direktem Zugriff geschützt sein.
scripts/build-release.sh ausführen.dist/ per SFTP/FTP auf den Webspace hochladen.public/-Ordner setzen, falls
möglich./login testen./api/health mit Bearer-Token testen.Vor jedem Update:
scripts/build-release.sh ausführen.private/config.php sichern.Die Datenbank kann über die All-Inkl-Datenbankverwaltung oder phpMyAdmin exportiert werden. Wichtig ist ein vollständiger Export der bestehenden Tabellen.
dist/ auf den Webspace hochladen.private/config.php, private/backups/ und private/runtime/ nicht
löschen und nicht überschreiben./update öffnen./chat und /api/health prüfen.Wenn der Webspace-Dateimanager beim Entpacken keine Kontrolle über einzelne
Dateien bietet, vor dem Entpacken unbedingt private/config.php sichern und
danach prüfen, ob sie unverändert vorhanden ist. Das Release-ZIP enthält keine
private/config.php, aber Vorsicht beim Umgang mit kompletten Ordnern bleibt
wichtig.
Alternativ per SFTP/FTP aus release/ hochladen:
public/sql/tools/docs/VERSIONLICENSE.htaccessAus release/private/ nur diese Datei hochladen:
private/config.example.phpNicht überschreiben:
private/config.phpprivate/backups/private/runtime/Wenn der Client nur komplette Ordner ersetzen kann, private/ nicht komplett
ersetzen. Sonst geht die produktive Config verloren.
Nach dem Upload müssen neue SQL-Migrationen eingespielt werden. Der einfache Standardweg ist die Browser-Routine:
/update öffnen.Für dieses Update ist besonders wichtig:
sql/migrations/20260714-0001-chat.sql
Wenn SSH für den Webspace verfügbar ist:
cd /pfad/zum/openpaw
php tools/update-db.php
Falls php nicht die richtige Version ist, den beim Hoster verfügbaren
PHP-CLI-Befehl verwenden, z. B. php8.2 oder php8.3.
Die Browser-Routine und das CLI-Skript legen bei Bedarf schema_migrations an
und merken sich, welche Migrationen bereits angewendet wurden.
Wenn /update nicht funktioniert und kein SSH verfügbar ist:
sql/migrations/20260714-0001-chat.sql importieren oder im
SQL-Fenster ausführen.CREATE TABLE IF NOT EXISTS schema_migrations (
name VARCHAR(255) NOT NULL,
applied_at DATETIME NOT NULL,
PRIMARY KEY (name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
INSERT IGNORE INTO schema_migrations (name, applied_at)
VALUES ('20260714-0001-chat.sql', UTC_TIMESTAMP());
Bei späteren Updates gilt dasselbe Prinzip: jede neue .sql-Datei aus
sql/migrations/ einmal ausführen und danach in schema_migrations markieren.
/ öffnen./login testen./chat öffnen.curl -fsS \
-H "Authorization: Bearer <token>" \
"https://<domain>/api/health"
curl -fsS \
-H "Authorization: Bearer <token>" \
"https://<domain>/api/chats"
Wenn nach dem Update etwas fehlschlägt:
/api/health, /login und /chat erneut prüfen./chat zeigt einen Datenbankfehler:
chat_threads und chat_messages fehlen./api/chats liefert 404:
public/api/index.php wurde nicht hochgeladen.Login funktioniert, aber API liefert 401:
Authorization-Header nicht weiter.Config ist weg:
private/config.php wurde überschrieben. Die gesicherte Config wieder
einspielen.