# ===================================================================== # 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 // 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 # Holt der Proxy Manager beim Start IP-Bereiche von AWS und Cloudflare? # Gebraucht wird das nur fuer Zugriffslisten mit deren Adressbereichen. # Vorgabe hier: false. In Netzen, die TLS aufbrechen oder Verbindungen # kappen, stirbt der Dienst sonst an einer unbehandelten Ausnahme und # startet endlos neu - sichtbar nur als "502 Bad Gateway". NPM_IP_RANGES_FETCH=false # ===================================================================== # 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