From d06ecb27042f33bd87fc727398cc0531a74fe630 Mon Sep 17 00:00:00 2001 From: duffyduck Date: Sun, 20 Sep 2026 19:22:53 +0200 Subject: [PATCH] Menuepunkt: Datenbank des Proxy Managers zuruecksetzen Das Kommando gab es schon, den Weg dorthin nicht. Jetzt erreichbar unter Einstellungen -> NGINX Proxy Manager -> ">> Datenbank zuruecksetzen" und zusaetzlich im Proxy-Hosts-Menue. Der Dialog fuehrt durch die Sache, statt nur auszufuehren: * Gibt es noch keine Datenbank, sagt er das und nennt den kuerzeren Weg (Zugangsdaten setzen, Stack starten). * Fehlen NPM_ADMIN_EMAIL/-PASSWORD, weist er darauf hin, dass sonst wieder kein Konto entstuende, und bietet an, sie gleich einzutragen. * Vor dem Zuruecksetzen zeigt er Dateigroesse, was verloren geht (Konten, Proxy-Hosts, Weiterleitungen, Zugriffslisten) und was bleibt (Zertifikate), samt dem Konto, das danach entsteht. * Anschliessend bietet er an, den Stack gleich zu starten - ohne das entsteht das Konto naemlich noch nicht. Beide Zweige durchgespielt: ohne Datenbank meldet er "Nichts zurueckzusetzen", mit Datenbank legt er sie als database.sqlite.alt- beiseite. Co-Authored-By: Claude Opus 5 (1M context) --- README.md | 4 ++- README_en.md | 4 ++- scripts/cmk-manage.sh | 78 ++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 83 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 75ac48f..1fbcd23 100644 --- a/README.md +++ b/README.md @@ -1176,7 +1176,9 @@ sieht dafür nach, ob `data/npm/data/database.sqlite` schon existiert: | **noch keine Datenbank** | `config set NPM_ADMIN_EMAIL …` und `…_PASSWORD …`, dann `up` – der Container legt das Konto selbst an | | **Datenbank vorhanden** | Konto im Browser anlegen (`cmk-manage.sh browser`), dieselben Daten anschließend mit `config set` eintragen | -Wer lieber sauber neu beginnt: +Wer lieber sauber neu beginnt – in der Oberfläche unter **Einstellungen → +NGINX Proxy Manager → „>> Datenbank zurücksetzen"** oder auch im +**Proxy-Hosts**-Menü, auf der Kommandozeile: ```bash sudo ./scripts/cmk-manage.sh npm-reset diff --git a/README_en.md b/README_en.md index 462e039..e4ce7a7 100644 --- a/README_en.md +++ b/README_en.md @@ -1175,7 +1175,9 @@ situation – it checks whether `data/npm/data/database.sqlite` already exists: | **no database yet** | `config set NPM_ADMIN_EMAIL …` and `…_PASSWORD …`, then `up` – the container creates the account itself | | **database present** | create the account in the browser (`cmk-manage.sh browser`), then enter the same credentials with `config set` | -To start over cleanly: +To start over cleanly – in the interface under **Einstellungen → NGINX Proxy +Manager → ">> Datenbank zuruecksetzen"**, or from the **Proxy-Hosts** menu, or +on the command line: ```bash sudo ./scripts/cmk-manage.sh npm-reset diff --git a/scripts/cmk-manage.sh b/scripts/cmk-manage.sh index 4276f9b..0cc2ebe 100755 --- a/scripts/cmk-manage.sh +++ b/scripts/cmk-manage.sh @@ -4754,7 +4754,8 @@ gui_settings_category() { items+=("__wizard__" ">> Assistent: Edition, Version, Bezugsweg") items+=("__test__" ">> Zugangsdaten jetzt pruefen (Registry + Downloadportal)") ;; npm) items+=("__proxy__" ">> Proxy-Hosts anlegen/verwalten") - items+=("__npm__" ">> Proxy Manager: Stand und Admin-Port anzeigen") ;; + items+=("__npm__" ">> Proxy Manager: Stand und Admin-Port anzeigen") + items+=("__npmrst__" ">> Datenbank zuruecksetzen (Konto neu anlegen lassen)") ;; backup) items+=("__jobs__" ">> Backup-Jobs verwalten") ;; esac items+=("back" "zurueck") @@ -4765,6 +4766,7 @@ gui_settings_category() { __get__) gui_image_get || true; continue ;; __wizard__) gui_image_wizard || true; continue ;; __proxy__) gui_proxy_menu || true; continue ;; + __npmrst__) gui_npm_reset || true; continue ;; __test__) gui_image_test || true; continue ;; __jobs__) gui_jobs_menu || true; continue ;; __npm__) local f; f="$(mktemp)" @@ -4852,6 +4854,78 @@ Trotzdem starten? # --------------------------------------------------------------------- # Proxy-Hosts im Menue # --------------------------------------------------------------------- +# Datenbank des Proxy Managers zuruecksetzen, damit der Container das +# Konto beim naechsten Start neu aus NPM_ADMIN_EMAIL/-PASSWORD anlegt. +gui_npm_reset() { + local d="${NPM_DATA_DIR:-$PROJECT_DIR/data/npm/data}" + case "$d" in /*) : ;; *) d="$PROJECT_DIR/${d#./}" ;; esac + + if ! npm_db_exists; then + ui_msg "Nichts zurueckzusetzen" \ +"Der Proxy Manager hat noch keine Datenbank. + +Es genuegt, die Zugangsdaten zu setzen und den Stack zu +starten - der Container legt das Konto daraus selbst an: + + Einstellungen -> NGINX Proxy Manager + NPM_ADMIN_EMAIL + NPM_ADMIN_PASSWORD + danach: Stack steuern -> Stack starten" + return 0 + fi + + # Ohne Zugangsdaten entstuende beim naechsten Start wieder kein Konto + if [ -z "${NPM_ADMIN_EMAIL:-}" ] || [ -z "${NPM_ADMIN_PASSWORD:-}" ]; then + if ui_yesno "Zugangsdaten fehlen" \ +"NPM_ADMIN_EMAIL bzw. NPM_ADMIN_PASSWORD sind nicht gesetzt. + +Ohne sie entsteht beim naechsten Start wieder KEIN Konto - +der Proxy Manager zeigt dann erneut den Einrichtungsassistenten. + +Jetzt eintragen?"; then + gui_settings_edit NPM_ADMIN_EMAIL + gui_settings_edit NPM_ADMIN_PASSWORD + load_env "${ENV_FILE:-$PROJECT_DIR/.env}" + fi + if [ -z "${NPM_ADMIN_EMAIL:-}" ] || [ -z "${NPM_ADMIN_PASSWORD:-}" ]; then + ui_msg "Abgebrochen" "Ohne Zugangsdaten hat das Zuruecksetzen keinen Zweck." + return 0 + fi + fi + + local groesse + groesse="$(du -h "$d/database.sqlite" 2>/dev/null | cut -f1 || echo '?')" + ui_yesno "Datenbank zuruecksetzen" \ +"Die Datenbank wird beiseitegelegt - umbenannt, nicht geloescht: + + $d/database.sqlite ($groesse) + +${C_BLD}Das ist danach weg${C_RST} + Konten, Proxy-Hosts, Weiterleitungen, Zugriffslisten + +${C_BLD}Das bleibt${C_RST} + Zertifikate (Let's Encrypt und eigene) + +Beim naechsten Start legt der Container das Konto neu an: + ${NPM_ADMIN_EMAIL} + +Proxy-Hosts lassen sich anschliessend unter 'Proxy-Hosts' +in einem Durchgang neu anlegen. + +Fortfahren?" || return 0 + + ui_run "Datenbank zuruecksetzen" bash -c \ + "cd '$PROJECT_DIR' && NO_COLOR=1 '$SELF' -y npm-reset" + + if ui_yesno "Jetzt starten?" \ +"Damit das Konto entsteht, muss der Proxy Manager neu starten. + +Stack jetzt starten?"; then + ui_run "Stack starten" bash -c "cd '$PROJECT_DIR' && NO_COLOR=1 '$SELF' -y up" + fi + load_env "${ENV_FILE:-$PROJECT_DIR/.env}" +} + gui_proxy_menu() { while :; do local sel @@ -4867,6 +4941,7 @@ Ziel : ${PROXY_FORWARD_HOST:-127.0.0.1}:${PROXY_FORWARD_PORT:-5000}" \ certs "Vorhandene Zertifikate anzeigen" \ del "Proxy-Host loeschen" \ status "Anmeldung pruefen" \ + reset "Datenbank zuruecksetzen (Konto neu anlegen lassen)" \ back "zurueck")" || return 0 case "$sel" in anlegen) gui_proxy_add || true ;; @@ -4881,6 +4956,7 @@ Ziel : ${PROXY_FORWARD_HOST:-127.0.0.1}:${PROXY_FORWARD_PORT:-5000}" \ ui_text "Zertifikate" "$f2"; rm -f "$f2" ;; del) gui_proxy_del || true ;; status) ui_run "Anmeldung pruefen" bash -c "cd '$PROJECT_DIR' && NO_COLOR=1 '$SELF' proxy status" ;; + reset) gui_npm_reset || true ;; back) return 0 ;; esac done