Proxy-Hosts ueber die API statt ueber den Terminal-Browser

Drei zusammenhaengende Befunde aus der Praxis, alle am laufenden
Container nachgeprueft:

1. Die Standardzugangsdaten admin@example.com/changeme stimmen nicht
   mehr. In backend/setup.js von v2.15.1 steht, dass das erste Konto
   nur angelegt wird, wenn INITIAL_ADMIN_EMAIL und
   INITIAL_ADMIN_PASSWORD gesetzt sind - sonst kommt der
   Einrichtungsassistent. Meine README war an der Stelle falsch.
   Die beiden Werte stehen jetzt als NPM_ADMIN_EMAIL/-PASSWORD in der
   .env und werden von compose und der Quadlet-Unit durchgereicht.
   Gegen einen frisch gestarteten Container geprueft: das Konto ist
   sofort da und die Anmeldung an der API liefert ein Token.

2. Die Weboberfliche laesst sich im Terminal-Browser kaum bedienen
   (JSON-Fehler bei Proxy-Hosts, keine Datei-Uploads). Da der Proxy
   Manager ohnehin lokal laeuft, gibt es jetzt

     proxy status | list | certs | add | del

   Damit legt "proxy add --domain X" in einem Zug an: Zertifikat
   erzeugen bzw. bei Let's Encrypt anfordern, hochladen, Proxy-Host
   anlegen, HTTPS erzwingen, HTTP/2 und Websockets setzen. Der Zielport
   ist frei waehlbar (--forward-port), nicht auf 5000 festgelegt.
   Im Menue unter "proxy" und in den Einstellungen unter NGINX Proxy
   Manager.

3. Let's Encrypt nimmt in 2.15 die E-Mail des angemeldeten Kontos; ein
   letsencrypt_email im Aufruf gibt es nicht mehr. Entsprechend
   umgesetzt und im Fehlerfall erklaert.

Beim Testen gegen die echte Instanz gefunden und behoben:
  - Wieder "set -e": ein grep ohne Treffer beendete das Skript still,
    "proxy add" tat daraufhin gar nichts. Vier Stellen abgesichert.
  - Die Listenantwort laesst sich nicht an "{" zerlegen, weil
    "meta":{...} ebenfalls Klammern enthaelt - dadurch fehlte das
    Schema in der Ausgabe. Die Eintraege werden jetzt einzeln geholt.
  - --update legte jedes Mal ein neues Zertifikat an. Ein vorhandener
    eigener Eintrag gleichen Namens wird jetzt wiederverwendet.

Durchgespielt: Anmeldung, Anlegen mit selbstsigniertem Zertifikat,
Liste, Zertifikatsliste, --update, Loeschen, Neuanlage mit anderem
Zielport und alle Fehlerfaelle. Gegengeprueft, dass Port 443 danach
tatsaechlich mit unserem Zertifikat antwortet (CN=checkmk.test.local)
und Port 80 per 301 dorthin umleitet.

Dokumentiert als Kapitel 10.1 bis 10.3 in beiden Sprachfassungen.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-20 17:36:21 +02:00
co-authored by Claude Opus 5
parent c04b3171d9
commit 9c99429c15
7 changed files with 632 additions and 21 deletions
+16
View File
@@ -107,6 +107,17 @@ NPM_IMAGE=docker.io/jc21/nginx-proxy-manager:2
NPM_CONTAINER_NAME=nginx-proxy-manager
NPM_DISABLE_IPV6=true
# Erstes Administratorkonto.
# WICHTIG: Ohne diese beiden Werte zeigt der Proxy Manager beim ersten
# Aufruf einen Einrichtungsassistenten im Browser - die frueher ueblichen
# Standardzugangsdaten admin@example.com/changeme gibt es seit 2.15 NICHT
# mehr. Mit den Werten legt der Container das Konto beim ERSTEN Start
# selbst an (nur bei leerer Datenbank) und die REST-API ist sofort
# nutzbar - damit funktioniert "cmk-manage.sh proxy ...".
# Ist das Konto bereits von Hand angelegt, hier dessen Daten eintragen.
NPM_ADMIN_EMAIL=admin@example.com
NPM_ADMIN_PASSWORD=bitte-aendern-mindestens-8-zeichen
# Port der Adminoberflaeche. Vorgabe im Image ist fest 81; ein abweichender
# Port wird ueber einen zusaetzlichen nginx-Server bereitgestellt.
# NICHT von Hand aendern - dabei muss die nginx-Zusatzdatei mitgezogen werden:
@@ -119,6 +130,11 @@ NPM_ADMIN_PORT=81
# Fuer den Fall, dass Port 81 von aussen nicht erreichbar ist.
# Aufruf: ./scripts/cmk-manage.sh browser
# =====================================================================
# Vorgaben fuer "cmk-manage.sh proxy add" (Proxy-Host fuer Checkmk)
PROXY_DOMAIN=
PROXY_FORWARD_HOST=127.0.0.1
PROXY_FORWARD_PORT=5000
# Startseite des Browsers. Leer = automatisch aus NPM_ADMIN_PORT abgeleitet.
NPM_ADMIN_URL=