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>
179 lines
7.7 KiB
Bash
179 lines
7.7 KiB
Bash
# =====================================================================
|
|
# Checkmk + NGINX Proxy Manager - zentrale Konfiguration
|
|
# Kopieren nach ".env" und anpassen: cp .env.example .env
|
|
#
|
|
# Diese Datei ist die EINZIGE Quelle der Wahrheit. Sie wird gelesen von
|
|
# * docker-compose.yml / podman-compose (Variablen-Ersetzung)
|
|
# * der systemd-Unit (EnvironmentFile=)
|
|
# * scripts/cmk-manage.sh (source)
|
|
# Das Verwaltungsskript SCHREIBT hier nur hinein (z.B. CMK_IMAGE),
|
|
# es haelt keine zweite Konfiguration.
|
|
#
|
|
# Werte mit Leerzeichen bitte in Anfuehrungszeichen setzen.
|
|
# =====================================================================
|
|
|
|
# ---------------------------------------------------------------------
|
|
# Container-Runtime (leer = automatische Erkennung: docker oder podman)
|
|
# ---------------------------------------------------------------------
|
|
CMK_RUNTIME=
|
|
|
|
# =====================================================================
|
|
# CHECKMK-IMAGE
|
|
# =====================================================================
|
|
# Das ist der einzige Wert, den compose/systemd tatsaechlich verwendet.
|
|
#
|
|
# IMMER VOLLQUALIFIZIERT ANGEBEN (mit Registry-Praefix)!
|
|
# Podman loest kurze Namen ueber "unqualified-search-registries" auf -
|
|
# auf RHEL steht dort registry.access.redhat.com an erster Stelle. Ein
|
|
# kurzer Name wie "checkmk/check-mk-enterprise" wird deshalb dort gesucht
|
|
# und nicht gefunden ("image not known") oder es erscheint eine Abfrage.
|
|
#
|
|
# Beispiele:
|
|
# docker.io/checkmk/check-mk-raw:2.3.0-latest
|
|
# registry.checkmk.com/enterprise/check-mk-enterprise:2.3.0p23
|
|
# localhost/checkmk/check-mk-enterprise:2.3.0p23 (aus Tarball geladen)
|
|
CMK_IMAGE=docker.io/checkmk/check-mk-raw:2.3.0-latest
|
|
|
|
# ---------------------------------------------------------------------
|
|
# Nur fuer den Image-Downloader: scripts/cmk-manage.sh image ...
|
|
# Daraus wird CMK_IMAGE ermittelt und oben automatisch eingetragen.
|
|
# ---------------------------------------------------------------------
|
|
# Edition:
|
|
# raw Docker Hub, frei (bis 2.4)
|
|
# community Docker Hub, frei (ab 2.5, Nachfolger von "raw")
|
|
# enterprise NUR registry.checkmk.com oder Tarball - NICHT auf Docker Hub!
|
|
# pro Docker Hub (ab 2.5, Nachfolger von "enterprise")
|
|
# cloud Docker Hub
|
|
# managed Docker Hub (bis 2.4)
|
|
# ultimate Docker Hub (ab 2.5)
|
|
# ultimatemt Docker Hub (ab 2.5, Nachfolger von "managed")
|
|
CMK_EDITION=raw
|
|
|
|
# Konkrete Version. Fuer den Tarball-Download muss eine exakte Version
|
|
# angegeben werden (z.B. 2.3.0p23), "-latest" funktioniert dort nicht.
|
|
CMK_VERSION=2.3.0-latest
|
|
|
|
# --- Bezugsweg 1: private Registry (Enterprise) ----------------------
|
|
# Zugangsdaten aus dem Checkmk-Kundenportal (portal.checkmk.com)
|
|
CMK_REGISTRY=registry.checkmk.com
|
|
CMK_REGISTRY_USER=
|
|
CMK_REGISTRY_PASSWORD=
|
|
|
|
# --- Bezugsweg 2: Image-Tarball vom Download-Portal ------------------
|
|
# Zugangsdaten der Checkmk-Downloadseite. Der Downloader probiert die
|
|
# ueblichen Dateinamen unter <BASEURL>/<version>/ durch; mit
|
|
# CMK_DOWNLOAD_URL laesst sich die vollstaendige URL fest vorgeben.
|
|
CMK_DOWNLOAD_BASEURL=https://download.checkmk.com/checkmk
|
|
CMK_DOWNLOAD_URL=
|
|
CMK_DOWNLOAD_USER=
|
|
CMK_DOWNLOAD_PASSWORD=
|
|
|
|
# =====================================================================
|
|
# CHECKMK-LAUFZEIT
|
|
# =====================================================================
|
|
CMK_CONTAINER_NAME=checkmk
|
|
CMK_HOSTNAME=checkmk
|
|
|
|
# Site, die der Container beim Start automatisch anlegt/startet.
|
|
# Bei einer Migration hier den Namen der importierten Site eintragen!
|
|
CMK_SITE_ID=cmk
|
|
|
|
# Initiales Passwort fuer den Benutzer "cmkadmin" (nur bei Neuanlage relevant)
|
|
CMK_PASSWORD=bitte-aendern
|
|
|
|
# Livestatus via TCP (Port 6557) fuer verteilte Umgebungen: on / off
|
|
CMK_LIVESTATUS_TCP=off
|
|
|
|
# Optionaler SMTP-Relay fuer Benachrichtigungen
|
|
MAIL_RELAY_HOST=
|
|
|
|
# Zeitzone
|
|
TZ=Europe/Berlin
|
|
|
|
# =====================================================================
|
|
# NGINX PROXY MANAGER (HTTPS: Let's Encrypt ODER selbstsigniert)
|
|
# =====================================================================
|
|
# Ebenfalls vollqualifiziert - siehe Hinweis oben zu Podman!
|
|
# Soll der Proxy-Manager-Container ueberhaupt betrieben werden?
|
|
# on = wird gebaut und gestartet (Vorgabe)
|
|
# off = wird weder angelegt noch gestartet - sinnvoll, wenn die
|
|
# HTTPS-Terminierung ein bereits vorhandener NGINX auf einem
|
|
# anderen System uebernimmt. Der leitet dann auf Port 5000 weiter.
|
|
# Die Daten unter ./data/npm bleiben beim Abschalten erhalten.
|
|
# Umschalten ueber das Menue oder: ./scripts/cmk-manage.sh npm-enable off
|
|
NPM_ENABLED=on
|
|
|
|
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:
|
|
# ./scripts/cmk-manage.sh npm-port 10443
|
|
# oder im Menue unter "Einstellungen".
|
|
NPM_ADMIN_PORT=81
|
|
|
|
# =====================================================================
|
|
# TERMINAL-BROWSER (lokale Bedienung des Proxy Managers)
|
|
# 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=
|
|
|
|
# Vorgabe-Engine: browsh | carbonyl | links | w3m | lynx | shell
|
|
# ACHTUNG: nur browsh und carbonyl koennen JavaScript und damit die
|
|
# Oberflaeche des Proxy Managers darstellen.
|
|
BROWSER_ENGINE=browsh
|
|
|
|
# Images der Engines (vollqualifiziert - siehe Podman-Hinweis oben)
|
|
BROWSH_IMAGE=docker.io/browsh/browsh:v1.8.3
|
|
CARBONYL_IMAGE=docker.io/fathyb/carbonyl:latest
|
|
|
|
# Selbst gebautes Werkzeug-Image (Textbrowser, curl, jq, openssl).
|
|
# Leer lassen - das Skript waehlt automatisch den zur Runtime passenden
|
|
# Namen (Podman braucht das Praefix "localhost/", Docker darf es nicht haben).
|
|
BROWSER_TOOLS_IMAGE=
|
|
|
|
# =====================================================================
|
|
# PFADE (relativ zum Projektverzeichnis)
|
|
# Ausschliesslich Bind-Mounts - keine Docker/Podman-Volumes!
|
|
# =====================================================================
|
|
CMK_DATA_DIR=./data/checkmk/sites
|
|
NPM_DATA_DIR=./data/npm/data
|
|
NPM_LE_DIR=./data/npm/letsencrypt
|
|
|
|
# Ablage fuer MANUELLE Backups und Migrations-Bundles.
|
|
# Geplante Jobs bringen ihr eigenes Zielverzeichnis mit (backup-jobs.conf).
|
|
BACKUP_DIR=./backups
|
|
|
|
# Sollen die Backup-Jobs automatisch per cron laufen?
|
|
# Umschalten ueber das Menue oder: ./scripts/cmk-manage.sh job auto on
|
|
BACKUP_AUTO=off
|
|
IMAGE_DIR=./images
|
|
|
|
# =====================================================================
|
|
# SELBSTSIGNIERTES ZERTIFIKAT (Vorgaben fuer "cmk-manage.sh cert")
|
|
# =====================================================================
|
|
CERT_DOMAIN=checkmk.example.local
|
|
CERT_DAYS=3650
|
|
CERT_COUNTRY=DE
|
|
CERT_ORG="Beispiel GmbH"
|