Schalter: NGINX Proxy Manager abschaltbar (externer NGINX)
Wer die HTTPS-Terminierung bereits mit einem NGINX auf einem anderen
System loest, braucht den Container nicht. NPM_ENABLED=off sorgt dafuer,
dass er gar nicht erst angelegt wird: compose bekommt dann nur noch den
Checkmk-Dienst genannt.
NPM_ENABLED=off -> compose up -d checkmk
NPM_ENABLED=on -> compose up -d checkmk nginx-proxy-manager
Das gilt auch fuer "pull" - abgeschaltet wird nicht einmal das Image
geladen. Beim Abschalten wird ein vorhandener Container gestoppt UND
entfernt, damit ihn weder eine Restart-Regel noch ein Reboot wieder
hochzieht.
Die Daten bleiben in jedem Fall erhalten: Konfiguration, Datenbank und
Zertifikate liegen in den Bind-Mounts unter ./data/npm, nicht im
Container. Vor dem Abschalten werden beide Verzeichnisse mit Groesse
angezeigt; beim Einschalten wird die vorhandene Konfiguration samt
Zertifikaten unveraendert wieder aufgenommen.
Bedienung:
- Menuepunkt "Proxy Manager betreiben" unter Einstellungen -> npm
- cmk-manage.sh npm-enable [on|off] (ohne Argument: Stand anzeigen)
- config set NPM_ENABLED off
"npm-enable off" gibt gleich die noetige Firewall-Regel und eine
Beispielkonfiguration fuer den externen NGINX aus - Port 5000 muss dann
fuer dessen IP erreichbar sein. Der Agent-Receiver auf Port 8000 ist
davon nicht betroffen, den sprechen die Agents ohnehin direkt an.
Damit der Schalter auch nach einem Reboot gilt, ruft die von install.sh
erzeugte systemd-Unit jetzt cmk-manage.sh auf statt compose direkt.
Bei Quadlet wird die Unit nginx-proxy-manager.container uebersprungen
und entfernt, solange der Schalter auf "off" steht.
Verifiziert mit einem compose-Stub, dass in beiden Schalterstellungen
genau die erwarteten Dienste uebergeben werden, sowie ueber das Menue.
Dokumentiert als Abschnitt 12.4 in beiden Sprachfassungen.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -127,7 +127,7 @@ werden müssen.
|
||||
| 80/tcp | NGINX Proxy Manager – HTTP, Let's-Encrypt-Challenge | Internet/LAN |
|
||||
| 443/tcp | NGINX Proxy Manager – HTTPS | Internet/LAN |
|
||||
| 81/tcp | NGINX Proxy Manager – **Adminoberfläche** (Vorgabe; per [`npm-port`](#12-adminoberfläche-auf-einen-anderen-port-legen) änderbar) | nur Admin-Netz! |
|
||||
| 5000/tcp | Checkmk Apache (Backend) | **nur localhost** – nicht freigeben |
|
||||
| 5000/tcp | Checkmk Apache (Backend) | **nur localhost** – nicht freigeben. Ausnahme: bei abgeschaltetem Proxy Manager ([12.4](#124-proxy-manager-ganz-abschalten-externer-nginx)) nur für die IP des externen Proxys |
|
||||
| 8000/tcp | Checkmk Agent-Receiver (TLS-registrierte Agents) | überwachte Hosts |
|
||||
| 6557/tcp | Livestatus (nur bei `CMK_LIVESTATUS_TCP=on`) | verteilte Sites |
|
||||
|
||||
@@ -550,6 +550,7 @@ Die wichtigsten Schalter:
|
||||
| `CMK_LIVESTATUS_TCP` | `on` öffnet Port 6557 für verteilte Überwachung |
|
||||
| `MAIL_RELAY_HOST` | SMTP-Relay für Benachrichtigungen |
|
||||
| `TZ` | Zeitzone, z. B. `Europe/Berlin` |
|
||||
| `NPM_ENABLED` | `on`/`off` – soll der Proxy-Manager-Container überhaupt laufen? Siehe [12.4](#124-proxy-manager-ganz-abschalten-externer-nginx) |
|
||||
| `NPM_ADMIN_PORT` | Port der Proxy-Manager-Oberfläche (Vorgabe 81) – nur über `npm-port` bzw. das Menü ändern |
|
||||
| `NPM_ADMIN_URL` | Startseite des Terminal-Browsers; leer = automatisch aus `NPM_ADMIN_PORT` |
|
||||
| `BACKUP_DIR` | Ablage für Backups/Bundles (Vorgabe `./backups`) |
|
||||
@@ -1168,6 +1169,75 @@ ein anderer Dienst lauscht.
|
||||
> überflüssig – dann genügt die Umgebungsvariable. Bis dahin ist der
|
||||
> Erweiterungspunkt der Weg, der ohne Änderung am Image auskommt.
|
||||
|
||||
### 12.4 Proxy Manager ganz abschalten (externer NGINX)
|
||||
|
||||
Wer die HTTPS-Terminierung schon anderweitig löst – etwa mit einem NGINX auf
|
||||
einem vorgelagerten System – braucht den Container gar nicht. Dafür gibt es
|
||||
einen Schalter:
|
||||
|
||||
```bash
|
||||
sudo ./scripts/cmk-manage.sh npm-enable off # abschalten
|
||||
sudo ./scripts/cmk-manage.sh npm-enable on # wieder einschalten
|
||||
./scripts/cmk-manage.sh npm-enable # Stand anzeigen
|
||||
```
|
||||
|
||||
In der Oberfläche steht er unter **Einstellungen → NGINX Proxy Manager →
|
||||
„Proxy Manager betreiben"**, in der `.env` heißt er `NPM_ENABLED`.
|
||||
|
||||
**Was „aus" bedeutet:** Der Container wird gestoppt und entfernt, und bei
|
||||
`up` gar nicht erst angelegt – `compose` bekommt dann nur noch den
|
||||
Checkmk-Dienst genannt. Es wird also weder ein Image geladen noch ein
|
||||
Container gebaut:
|
||||
|
||||
```
|
||||
NPM_ENABLED=off -> docker compose up -d checkmk
|
||||
NPM_ENABLED=on -> docker compose up -d checkmk nginx-proxy-manager
|
||||
```
|
||||
|
||||
**Die Daten bleiben.** Konfiguration, Datenbank und Zertifikate liegen in den
|
||||
Bind-Mounts `./data/npm/data` und `./data/npm/letsencrypt`, nicht im Container.
|
||||
Vor dem Abschalten zeigt das Kommando beides mit Größe an; beim späteren
|
||||
Einschalten wird die vorhandene Konfiguration samt Zertifikaten unverändert
|
||||
wieder aufgenommen.
|
||||
|
||||
**Was danach zu tun ist:** Der externe Proxy leitet auf Port 5000 dieses Hosts
|
||||
weiter. Der war bisher nur für localhost gedacht und muss jetzt – möglichst eng
|
||||
begrenzt – für den Proxy erreichbar sein:
|
||||
|
||||
```bash
|
||||
# firewalld
|
||||
sudo firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=<proxy-ip> port port=5000 protocol=tcp accept'
|
||||
sudo firewall-cmd --reload
|
||||
|
||||
# ufw
|
||||
sudo ufw allow from <proxy-ip> to any port 5000 proto tcp
|
||||
```
|
||||
|
||||
Im externen NGINX:
|
||||
|
||||
```nginx
|
||||
location / {
|
||||
proxy_pass http://<checkmk-host>:5000;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
client_max_body_size 0;
|
||||
proxy_read_timeout 300s;
|
||||
}
|
||||
```
|
||||
|
||||
Das passende Kommando samt Beispielkonfiguration gibt `npm-enable off` direkt
|
||||
mit aus.
|
||||
|
||||
> **Der Agent-Receiver bleibt davon unberührt.** Die Agents sprechen Port 8000
|
||||
> dieses Hosts direkt an, nicht den Proxy – der muss also weiterhin für die
|
||||
> überwachten Systeme erreichbar sein.
|
||||
|
||||
> **Bei Quadlet** ([Kapitel 6, Variante B](#variante-b--podman-quadlet-ab-podman-44-ohne-compose))
|
||||
> entfernt `install.sh --quadlet` die Unit `nginx-proxy-manager.container`,
|
||||
> solange der Schalter auf `off` steht. Schaltet man ihn später ein, genügt ein
|
||||
> erneutes `sudo ./install.sh --quadlet`.
|
||||
|
||||
---
|
||||
|
||||
## 13. Firewall
|
||||
@@ -1260,6 +1330,7 @@ Eine Dateiauswahl mit Verzeichnisnavigation ist eingebaut.
|
||||
| `browser [--engine …]` | Terminal-Browser im Container – Proxy Manager lokal bedienen |
|
||||
| `config list\|get\|set\|edit` | Einstellungen der `.env` anzeigen und ändern |
|
||||
| `npm-port [PORT]` | Port der Proxy-Manager-Oberfläche setzen/anzeigen |
|
||||
| `npm-enable [on\|off]` | Proxy Manager ein-/ausschalten (Daten bleiben erhalten) |
|
||||
| `cert …` | selbstsigniertes Zertifikat erzeugen |
|
||||
| `shell` | Root-Shell im Checkmk-Container |
|
||||
| `omd …` | beliebiges `omd`-Kommando im Container |
|
||||
@@ -1661,6 +1732,7 @@ Checkmk-Werksnotizen (Werks/Release Notes) lesen.
|
||||
| `podman-compose` nicht gefunden | EPEL aktivieren oder auf Quadlet umstellen (`./install.sh --quadlet`) |
|
||||
| `This system is not registered with an entitlement server` | RHEL ohne Subskription – `dnf` liefert dann gar keine Pakete. Registrieren, Installations-DVD als Repository einbinden oder auf Rocky/Alma wechseln: [Abschnitt 5.1](#51-unregistriertes-rhel-woher-die-pakete-kommen) |
|
||||
| `epel-release` lässt sich nicht installieren | EPEL setzt Red Hats Basis-Repositories voraus und ersetzt die Registrierung nicht. Ohne Subskription führt der Quadlet-Weg ohne `podman-compose` zum Ziel: [Kapitel 6, Variante B](#variante-b--podman-quadlet-ab-podman-44-ohne-compose) |
|
||||
| Proxy-Manager-Container startet nicht mehr mit | Schalter steht auf `off`: `cmk-manage.sh npm-enable on`. Prüfen mit `cmk-manage.sh npm-enable` |
|
||||
| Adminoberfläche aus dem LAN nicht erreichbar | Port 81 gesperrt. Auf einen freien Port legen: `cmk-manage.sh npm-port 10443` und in der Firewall freigeben |
|
||||
| Nach `npm-port` antwortet der neue Port nicht | Proxy Manager wurde nicht neu gestartet: `cmk-manage.sh restart`; Datei prüfen: `data/npm/data/nginx/custom/http.conf` |
|
||||
| `cmk-manage.sh` bricht mit „CMK_RUNTIME … ist nicht installiert" ab | wird nur noch gewarnt und selbst gesucht; sauber setzen mit `config set CMK_RUNTIME auto` |
|
||||
|
||||
Reference in New Issue
Block a user