From 272d30357f9900c7772b0dc4a729fb7c2f1f04a1 Mon Sep 17 00:00:00 2001 From: karim Date: Mon, 1 Jun 2026 23:47:35 +0200 Subject: [PATCH] =?UTF-8?q?ops:=20update.sh=20=E2=80=94=20Update=20im=20LX?= =?UTF-8?q?C=20in=20einem=20Befehl?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Kapselt git pull + Deploy-Config + Neustart, damit die Migrationsschritte nicht mehr per Hand nötig sind: - kong.yml vor dem Pull auf die Vorlage zurücksetzen (kein Konflikt), danach CORS-Origin aus SITE_URL rendern - chown -R 1000:1000 (non-root-Container darf schreiben) - git safe.directory für root auf dem uid-1000-Repo - docker compose up -d --build + kong reload + Healthcheck Co-Authored-By: Claude Opus 4.8 --- cms/README.md | 13 ++++++++++++ cms/update.sh | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100755 cms/update.sh diff --git a/cms/README.md b/cms/README.md index 9caa0e8..2e3a75a 100644 --- a/cms/README.md +++ b/cms/README.md @@ -66,6 +66,19 @@ bash <(curl -fsSL https://git.kgva.ch/karim/OPENBUREAU/raw/branch/main/cms/proxm Fragt interaktiv nur Storage/Bridge/IP ab (Enter = Default). Kein Token nötig. `GIT_TOKEN` nur setzen, wenn das CMS per `GIT_PUBLISH` nach Gitea zurückschreiben soll. +### Updaten (bestehender LXC) + +Nicht `git pull` von Hand — das vergisst CORS-Origin (kong.yml), Dateirechte +(non-root) und den Neustart. Stattdessen im Container: + +```bash +bash /opt/openbureau/cms/update.sh +``` + +Das macht: `git pull` → CORS-Origin aus `SITE_URL` in `kong.yml` rendern → +`chown -R 1000:1000` → `docker compose up -d --build` + kong neu laden → +Healthcheck. (Beim allerersten Mal das Skript per einmaligem `git pull` holen.) + ### Manuell (oder im Container) 1. `cp .env.example .env` diff --git a/cms/update.sh b/cms/update.sh new file mode 100755 index 0000000..057004c --- /dev/null +++ b/cms/update.sh @@ -0,0 +1,55 @@ +#!/usr/bin/env bash +# OPENBUREAU — Update im LXC in einem Rutsch. +# Statt `git pull` direkt: holt den Code, rendert die Deploy-Config, setzt die +# Dateirechte für den non-root-Container und startet den Stack neu. +# +# Im Container (als root) ausführen: +# bash /opt/openbureau/cms/update.sh +set -euo pipefail + +# Repo-Root = eine Ebene über diesem Skript (cms/..). +ROOT="$(cd "$(dirname "$0")/.." && pwd)" +cd "$ROOT" + +# Git läuft hier als root auf einem Repo, das dem Container-User (uid 1000) +# gehört → ohne das meckert Git über „dubious ownership". +git config --global --add safe.directory "$ROOT" 2>/dev/null || true + +echo "→ git pull…" +# kong.yml wird beim Deploy lokal gerendert (CORS-Origin eingesetzt). Vor dem +# Pull auf die versionierte Vorlage (mit __CORS_ORIGIN__) zurücksetzen, sonst +# kollidiert der Pull mit der lokalen Änderung. +git checkout -- cms/kong.yml 2>/dev/null || true +git pull --ff-only + +cd "$ROOT/cms" + +# CORS-Origin aus SITE_URL (.env) in kong.yml einsetzen — eine Quelle der Wahrheit. +ORIGIN="$(grep -E '^SITE_URL=' .env | head -1 | cut -d= -f2-)" +if [ -n "${ORIGIN:-}" ]; then + sed -i "s|__CORS_ORIGIN__|${ORIGIN}|g" kong.yml + echo "✓ CORS-Origin gesetzt: ${ORIGIN}" +else + echo "WARN: SITE_URL in .env nicht gefunden — kong.yml-Origin bleibt Platzhalter." +fi + +# Der CMS-Container läuft als uid 1000 und muss das ganze Repo schreiben können +# (Hugo baut public/, schreibt content/). git pull als root zieht neue Dateien +# als root → hier wieder geradeziehen. +chown -R 1000:1000 "$ROOT" +echo "✓ Dateirechte (uid 1000) gesetzt." + +echo "→ docker compose up…" +docker compose up -d --build +# kong liest die declarative config nur beim Start — nach kong.yml-Änderung neu. +docker compose restart kong +echo "✓ Stack neu gestartet." + +# Kurzer Healthcheck (localhost im LXC, unabhängig von BIND_ADDR). +PORT="$(grep -E '^APP_PORT=' .env | head -1 | cut -d= -f2-)"; PORT="${PORT:-8080}" +sleep 2 +if curl -fsS -I "http://127.0.0.1:${PORT}/" >/dev/null 2>&1; then + echo "✓ Seite antwortet auf :${PORT}." +else + echo "WARN: Seite antwortet (noch) nicht auf :${PORT} — 'docker compose ps' prüfen." +fi