Weitere Sites anlegen und entfernen

Bisher liess sich eine zweite Site nur importieren, nicht anlegen - der
Entrypoint des Abbilds macht ausschliesslich die Site aus CMK_SITE_ID.
Absicht war das nicht, es fehlte schlicht.

  site-create NAME [--password PW] [--expose] [--no-start]
  site-delete NAME [--force]

Im Container laeuft "omd create --no-tmpfs"; ohne --no-tmpfs scheitert
es, weil sich dort kein tmpfs einhaengen laesst. Laeuft der Container
nicht im Host-Netz, wird der Apache der Site zusaetzlich auf 0.0.0.0
gebunden - im Host-Netz genuegt 127.0.0.1, und der Proxy kommt trotzdem
hin. Das wird am Container nachgesehen, nicht geraten.

Der eigentliche Punkt sind die Ports. omd vergibt sie selbst weiter, am
laufenden Container nachgemessen:

                 erste   zweite   dritte
  Oberflaeche     5000     5001     5002
  Agent-Receiver  8000     8001     8002
  Livestatus      6557     6558     6559

Die Agents einer zweiten Site sprechen also 8001 an, nicht 8000 - das
faellt sonst erst auf, wenn niemand Daten liefert. "site-create" gibt
deshalb beides fertig aus: den Proxy-Pfad mit der richtigen Portnummer
und den Firewall-Eintrag fuer den Receiver, dazu den Hinweis auf den
Standard-Server, falls er eingerichtet ist.

Beim Loeschen war "omd rm" zuerst wirkungslos: es fragt selbst nach, die
Site blieb stehen, waehrend hier Erfolg gemeldet wurde. Jetzt mit dem
globalen -f, und danach wird nachgesehen, ob sie wirklich weg ist. Die
Standard-Site ist geschuetzt - der Entrypoint legt sie ohnehin wieder
an.

In der Oberflaeche unter "Sites im Container verwalten": anlegen mit
Namens- und Kennwortabfrage, entfernen mit Rueckfrage.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-20 22:20:21 +02:00
co-authored by Claude Opus 5
parent 4456f8c3ea
commit 7d9ed10e09
3 changed files with 360 additions and 28 deletions
+70 -12
View File
@@ -2549,6 +2549,8 @@ Eine Dateiauswahl mit Verzeichnisnavigation ist eingebaut.
| `sites` | Sites im Container auflisten |
| `site-start SITE` / `site-stop SITE` | einzelne Site steuern |
| `start-all-sites` | alle Sites starten (wird von systemd aufgerufen) |
| `site-create NAME` | weitere Site im Container anlegen – eigene Ports (5001, 8001, …) |
| `site-delete NAME` | Site samt Daten entfernen |
| `backup …` | Backup als `.tar.gz`-Bundle |
| `list` / `verify` / `prune --keep N` | Backups verwalten |
| `job list\|add\|set\|del\|run\|auto` | geplante Backups (eigene Zielpfade je Job) |
@@ -3054,25 +3056,81 @@ Danach in der Oberfläche prüfen:
## 18. Mehrere Sites in einem Container
Der Checkmk-Entrypoint legt beim Start nur die Site aus `CMK_SITE_ID` an und
startet auch nur diese. Weitere Sites (z. B. mehrere importierte) existieren im
Bind-Mount, werden aber nach einem Neustart nicht automatisch hochgefahren.
Der Entrypoint des Abbilds legt nur die Site aus `CMK_SITE_ID` an und startet
auch nur diese. Weitere Sites lassen sich aber anlegen – und mit dem Proxy
davor liegen sie nebeneinander unter einem einzigen Port:
Deshalb:
```bash
./scripts/cmk-manage.sh site-create zweite
./scripts/cmk-manage.sh site-create kunde2 --password geheim123
./scripts/cmk-manage.sh sites
./scripts/cmk-manage.sh site-delete zweite
```
### 18.1 Eigene Ports je Site
`omd` vergibt die Ports selbst weiter – daran hängt alles Weitere:
| | erste Site | zweite | dritte |
|---|---|---|---|
| Oberfläche (Apache) | 5000 | 5001 | 5002 |
| **Agent-Receiver** | 8000 | **8001** | **8002** |
| Livestatus | 6557 | 6558 | 6559 |
Zwei Dinge folgen daraus:
1. **Im Proxy** bekommt jede Site ihren Pfad:
```bash
./scripts/cmk-manage.sh proxy edit --domain <name> --location /zweite=127.0.0.1:5001
./scripts/cmk-manage.sh proxy reload
```
Danach liegt sie neben der ersten: `https://<ip>/cmk/` und
`https://<ip>/zweite/`. Checkmk kommt mit dem Präfix zurecht, weil der
Site-Name ohnehin Teil jeder Adresse ist – siehe
[Kapitel 10.12](#1012-weitere-dienste-dazunehmen--beispiel-grafana).
2. **In der Firewall** sprechen die Agents dieser Site einen anderen Port an:
```bash
./scripts/cmk-manage.sh config set FW_EXTRA_PORTS "8001/tcp=Agent-Receiver zweite"
sudo ./scripts/cmk-manage.sh firewall open --apply
```
`site-create` gibt genau diese beiden Befehle mit den richtigen Portnummern
aus, dazu die Erinnerung an den Standard-Server für den IP-Zugang, falls er
eingerichtet ist.
### 18.2 Was beim Anlegen passiert
Im Container läuft `omd create --no-tmpfs` – ohne `--no-tmpfs` scheitert es,
weil sich im Container kein tmpfs einhängen lässt. Läuft der Container **nicht**
im Host-Netz, wird der Apache der Site zusätzlich auf `0.0.0.0` gebunden, sonst
wäre sie von außen nicht erreichbar; im Host-Netz genügt `127.0.0.1`, und der
Proxy kommt trotzdem hin. Ohne `--password` erzeugt `omd` eines und zeigt es an.
### 18.3 Nach einem Neustart
```bash
sudo ./scripts/cmk-manage.sh start-all-sites
```
Dieses Kommando wird von der systemd-Unit (`ExecStartPost`) bzw. der
Quadlet-Unit automatisch nach dem Containerstart ausgeführt und startet alle
vorhandenen Sites.
Der Entrypoint startet nur die Standard-Site. Dieses Kommando wird von der
systemd-Unit (`ExecStartPost`) bzw. der Quadlet-Unit automatisch nach dem
Containerstart ausgeführt und fährt alle vorhandenen Sites hoch.
> **Empfehlung:** Für sauber getrennte Umgebungen lieber je Site ein eigenes
> Projektverzeichnis mit eigener `.env` betreiben. Da beide Container im
> Host-Netzwerk laufen, kann pro Host allerdings nur **ein** Checkmk-Container
> die Ports 5000/8000 belegen – für echte Mehrfachinstanzen dann getrennte
> Hosts oder eine Bridge-Netzwerk-Variante verwenden.
### 18.4 Wann lieber getrennte Projekte?
Mehrere Sites in einem Container teilen sich Abbild und Version – ein
`omd update` betrifft alle. Für sauber getrennte Umgebungen (unterschiedliche
Checkmk-Versionen, getrennte Wartungsfenster, verschiedene Kunden) ist je Site
ein eigenes Projektverzeichnis mit eigener `.env` besser. Da beide Container im
Host-Netzwerk laufen, kann pro Host allerdings nur **ein** Checkmk-Container die
Ports 5000/8000 belegen – für echte Mehrfachinstanzen dann getrennte Hosts oder
eine Bridge-Netzwerk-Variante.
In der Oberfläche liegt alles unter **Sites im Container verwalten**.
---