Files
docker-podman-installation-…/.env.example
T
duffyduckandClaude Opus 5 eb29db0130 no_proxy vergleicht Namen, keine Adressen - NPM_API_HOST
Der Kern des Problems, und die Stelle, an der man am laengsten sucht:
"no_proxy=localhost" deckt eine Anfrage an 127.0.0.1 NICHT ab, und
umgekehrt genauso wenig. An curl 7.88 nachgemessen:

  no_proxy      an 127.0.0.1      an localhost
  localhost     ueber den Proxy   direkt
  127.0.0.1     direkt            ueber den Proxy

In Firmennetzen steht oft nur "localhost" in der Ausnahmeliste - dann
laeuft ausgerechnet der Zugriff auf die Schnittstelle des Proxy
Managers ueber den Proxy, obwohl no_proxy dem Anschein nach gesetzt
ist.

Deshalb NPM_API_HOST: damit laesst sich die Schnittstelle als
"localhost" ansprechen, ohne die Ausnahmeliste zu aendern - was im
Kundennetz oft nicht in der eigenen Hand liegt. Vorgabe bleibt
127.0.0.1, denn das kommt ohne Namensaufloesung aus und zeigt immer auf
IPv4.

"noproxy" prueft jetzt beide Schreibweisen einzeln und sagt, welche
fehlt, statt nur "geht nicht" zu melden:

  http://127.0.0.1:81/         geht an den Proxy
  http://localhost:81/         direkt
  [ WARN ] Nur 'localhost' ist ausgenommen, 127.0.0.1 nicht.
           Bis das geaendert ist, hilft sofort:
             cmk-manage.sh config set NPM_API_HOST localhost

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-20 23:44:07 +02:00

249 lines
11 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
# Woher soll das Image geholt werden, wenn es lokal fehlt?
# auto erst Registry, dann Downloadportal (Vorgabe)
# registry nur aus der Registry
# download nur als Tarball vom Downloadportal
# Hintergrund: Registries halten meist nur die juengsten Patchstaende
# vor. Eine aeltere Version - etwa die einer zu migrierenden Site -
# liegt dann nur noch im Downloadportal.
CMK_IMAGE_SOURCE=auto
# --- 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
# Unter welchem Namen die Schnittstelle des Proxy Managers angesprochen
# wird. Wichtig nur in Netzen mit Zwangsproxy: no_proxy vergleicht NAMEN,
# nicht Adressen - steht dort nur "localhost", laeuft eine Anfrage an
# 127.0.0.1 trotzdem ueber den Proxy. Dann hier auf localhost stellen.
NPM_API_HOST=127.0.0.1
# =====================================================================
# 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"
# ---------------------------------------------------------------------
# Firewall: was von aussen erreichbar sein muss
#
# Diese Werte oeffnen nichts von selbst - sie sagen "cmk-manage.sh
# firewall", welche Ports dieser Aufbau braucht.
# ---------------------------------------------------------------------
# Rolle im verteilten Monitoring:
# single - eigenstaendige Site (Vorgabe)
# central - Zentrale; baut die Verbindungen selbst auf, braucht
# eingehend nichts zusaetzlich
# remote - Remote-Site; die Zentrale fragt hier Livestatus (6557) ab,
# dazu muss CMK_LIVESTATUS_TCP=on gesetzt sein
FW_ROLE=single
# Event Console: Syslog annehmen - off, udp, tcp oder beide (Port 514)
FW_EC_SYSLOG=off
# Event Console: SNMP-Traps annehmen (Port 162/udp)
FW_EC_SNMPTRAP=off
# Event Console: Status und Ereignisse ueber TCP (Port 6558)
FW_EC_TCP=off
# Laeuft auf diesem Host ein Checkmk-Agent, der im Pull-Betrieb
# abgefragt wird? (Port 6556/tcp)
FW_AGENT=off
# Weitere Ports, die mitgeprueft werden sollen - durch Komma getrennt,
# Beschreibung nach dem Gleichheitszeichen. Ohne Protokoll gilt tcp.
# Enthaelt eine Beschreibung Leerzeichen, gehoert der ganze Wert in
# Anfuehrungszeichen (das erledigt "cmk-manage.sh config set" selbst).
# FW_EXTRA_PORTS=3000/tcp=Grafana,5667/tcp=NSCA,514/udp=Syslog
FW_EXTRA_PORTS=
# ---------------------------------------------------------------------
# Von aussen geliefertes Zertifikat
#
# Wird das Zertifikat von einer fremden Stelle in ein Verzeichnis
# gelegt und beim Erneuern dort ersetzt (gleicher Dateiname, neuer
# Inhalt), dann zeigt der Proxy Manager auf diese Dateien, statt sie zu
# kopieren. Das Verzeichnis wird schreibgeschuetzt als /certs in den
# Container gehaengt - nach einer Aenderung ist ein "up" noetig.
#
# cmk-manage.sh cert external --domain kunde.example.com
# ---------------------------------------------------------------------
CERT_EXTERNAL_DIR=./data/npm/external-certs
CERT_EXTERNAL_FULLCHAIN=fullchain.pem
CERT_EXTERNAL_KEY=privkey.pem
# Taeglich nachsehen, ob die Datei ausgetauscht wurde, und nginx dann
# neu laden. Ohne das liefert nginx bis zum naechsten Neustart weiter
# das alte Zertifikat.
CERT_EXTERNAL_WATCH=off