Adminoberflaeche erreichbar machen - ueber einen Namen oder ueber die Wurzel

Unter einem Unterpfad wie /npm bleibt die Oberflaeche des Proxy Managers
weiss. Sie ist eine Single-Page-Anwendung und laedt ihre Dateien ueber
absolute Pfade; nur die Startseite kommt an, alles Weitere landet bei
dem, was auf der Wurzel liegt. An einem laufenden Proxy Manager
gemessen: /npm liefert 200, /images/... dagegen 502. Checkmk funktioniert
unter /cmk/ nur deshalb, weil es fuer einen URL-Praefix gebaut ist.

"proxy admin" kann beides, und beides kommt mit dem einen freien Port
aus:

  proxy admin --domain npm.example.local
      Eigener Proxy-Host, Oberflaeche auf "/". Welcher Server-Block
      greift, entscheidet der Name (SNI), nicht der Port. Setzt
      Namensaufloesung voraus - notfalls eine Zeile in der hosts-Datei.

  proxy admin --root
      Ohne Namensaufloesung: die Wurzel zeigt auf die Adminoberflaeche,
      das bisherige Ziel wandert auf /<site>. Checkmk belegt ohnehin nur
      seinen Site-Pfad.

  proxy admin --root --off    nimmt das wieder zurueck
  proxy admin                 zeigt den Stand

Beide Wege sind ueber die IP ohne SNI durchgemessen: Startseite,
/images, /login und die Anmeldung per POST /api/tokens antworten mit
200. In der Oberflaeche liegt das unter Proxy-Hosts >
"Adminoberflaeche erreichbar machen".

Dabei ist ein aelterer Fehler aufgefallen: "die" ruft exit auf, und die
Oberflaeche ruft cmd_* direkt auf - ein Fehlerfall beendete damit die
ganze Oberflaeche, statt ihn anzuzeigen. Betraf auch bestehende
Menuepunkte wie "Einzelheiten eines Proxy-Hosts" (stirbt bei unbekanntem
Namen) und die Jobliste. Alle 24 Aufrufe laufen jetzt in einer Subshell.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-20 21:48:12 +02:00
co-authored by Claude Opus 5
parent 9a567c6cca
commit f02692e8be
3 changed files with 402 additions and 25 deletions
+71
View File
@@ -1227,6 +1227,7 @@ erzwingen, HTTP/2 und Websockets einschalten und den empfohlenen
| `proxy edit --id N …` | vorhandenen Proxy-Host ändern – nur die angegebenen Felder |
| `proxy default --domain X` | HTTPS über die blanke IP ermöglichen (spiegelt X in einen Standard-Server) |
| `proxy default --off` | diese Spiegelung wieder entfernen |
| `proxy admin --domain X` / `--root` | Adminoberfläche erreichbar machen – per Name oder über die Wurzel |
| `proxy reload` | nginx die Konfiguration neu einlesen lassen – ohne Unterbrechung |
| `proxy restart` | den Proxy-Manager-Container neu starten |
@@ -1606,6 +1607,76 @@ dahinter braucht länger, und ein „fertig" wäre sonst gelogen.
In der Oberfläche liegt beides unter **Proxy-Hosts → Proxy Manager neu starten
/ nginx neu laden**.
### 10.11 Die Adminoberfläche des Proxy Managers erreichbar machen
Sie ist eine Single-Page-Anwendung und lädt ihre Dateien über **absolute**
Pfade:
```html
<link rel="preload" href="/images/logo-no-text.svg" ...>
```
Unter einem Unterpfad wie `/npm` kommt deshalb nur die Startseite an, alles
Weitere landet bei dem, was auf der Wurzel liegt – im Browser eine **weiße
Seite**. Gemessen an einem laufenden Proxy Manager:
| Zugriff | `/` | `/images/…` | Anmeldung (`POST /api/tokens`) |
|---|---|---|---|
| Unterpfad `/npm` | 200 | **502** | – |
| eigener Name | 200 | 200 | 200 |
| Wurzel | 200 | 200 | 200 |
Checkmk funktioniert unter `/cmk/` nur deshalb, weil es für einen URL-Präfix
gebaut ist und ihn in jede erzeugte Adresse einsetzt. Der Proxy Manager kann
das nicht. Es bleiben zwei Wege – **beide kommen mit dem einen freien Port
aus**:
**Variante A – eigener Name** (wenn es Namensauflösung gibt):
```bash
./scripts/cmk-manage.sh proxy admin --domain npm.example.local
./scripts/cmk-manage.sh proxy reload
```
Legt einen Proxy-Host an, der auf `127.0.0.1:81` zeigt – die Oberfläche liegt
dort auf `/`, alles funktioniert. Checkmk bleibt unter seinem eigenen Namen
oder unter der IP erreichbar; welcher Server-Block greift, entscheidet der
Name (SNI), nicht der Port. Ohne DNS genügt eine Zeile in der `hosts`-Datei
der Arbeitsplätze.
**Variante B – Wurzel** (wenn es *keine* Namensauflösung gibt):
```bash
./scripts/cmk-manage.sh proxy admin --root
./scripts/cmk-manage.sh proxy default --domain <name> --restart # falls eingerichtet
```
Die Wurzel des vorhandenen Proxy-Hosts zeigt danach auf die Adminoberfläche,
das bisherige Ziel wandert auf `/cmk` (bzw. `CMK_SITE_ID`):
```
https://172.0.250.82/ Adminoberfläche des Proxy Managers
https://172.0.250.82/cmk/ Checkmk
```
Das geht, weil Checkmk nur seinen Site-Pfad belegt – der Rest der Wurzel ist
frei. Zurück:
```bash
./scripts/cmk-manage.sh proxy admin --root --off
```
> Bei Variante B liegt die **Anmeldemaske offen im Netz**. Für die Dauer einer
> Einrichtung ist das vertretbar; danach entweder zurücknehmen oder den Zugang
> per Firewall auf das Adminnetz begrenzen.
Weitere Angaben: `--id N` bzw. `--host NAME`, wenn es mehrere Proxy-Hosts gibt,
`--path /pfad` für einen abweichenden Site-Pfad, `--cert self|letsencrypt|none`
bei Variante A. Ohne Angabe zeigt `proxy admin` den Stand.
In der Oberfläche liegt beides unter **Proxy-Hosts → Adminoberfläche erreichbar
machen**.
---
## 11. Proxy Manager lokal einrichten (Terminal-Browser)