Files
docker-podman-installation-…/docker-compose.yml
duffyduckandClaude Opus 5 1693330162 Terminal-Browser, konfigurierbarer Admin-Port und Einstellungsmenue
Der NGINX Proxy Manager laesst sich jetzt auch dann einrichten, wenn
seine Oberflaeche auf Port 81 aus dem Netz nicht erreichbar ist.

browser
  Terminal-Browser in einem eigenen Container, gestartet mit
  "run --rm -it --network host" - damit erreicht er 127.0.0.1 genau wie
  der Proxy Manager selbst. Engines: browsh und carbonyl (rendern einen
  echten Browser und koennen JavaScript, das die Adminoberflaeche
  benoetigt) sowie links2/w3m/lynx und eine Shell mit curl/jq/openssl
  fuer Diagnose. Werkzeug-Image unter containers/browser/.
  Bewusst kein Compose-Dienst: ein Browser ist interaktiv, und
  podman-compose behandelt Profile unzuverlaessig.

npm-port
  Port der Adminoberflaeche frei waehlbar. Das Image bindet fest auf 81
  ("listen 81 default;"), eine Umgebungsvariable dafuer gibt es in 2.15.1
  noch nicht. Ein abweichender Port wird deshalb ueber den nginx-
  Erweiterungspunkt /data/nginx/custom/http.conf bereitgestellt. Nur der
  markierte Block wird verwaltet, eigene Eintraege bleiben erhalten.
  Port 81 lauscht weiterhin lokal und ist per Firewall zu sperren.

config
  Alle Werte der .env sind menuegefuehrt bzw. ueber config get/set
  aenderbar - der Editor bleibt als Menuepunkt erhalten. Geprueft wird
  beim Setzen: Portbereich und Kollisionen, Site-Namen, vollqualifizierte
  Image-Namen, installierte Runtime, Zahlen- und URL-Felder.

Fehlerbehebungen
  - ui_*-Funktionen initialisieren sich selbst; eine von aussen gesetzte
    UI_BIN fuehrte unter "set -u" zum Abbruch.
  - Eine nicht installierte CMK_RUNTIME machte das gesamte Werkzeug
    unbenutzbar, auch den Aufruf zum Korrigieren. Jetzt wird gewarnt und
    selbst gesucht.
  - env_set setzt Werte mit Leerzeichen in Anfuehrungszeichen und laesst
    optional leere Werte zu.

README auf 22 Kapitel erweitert: Kapitel 11 (Terminal-Browser inkl.
NPM-API als Fallback fuer den Zertifikats-Upload), Kapitel 12 (Admin-Port)
und Abschnitt 14.3 (Einstellungsmenue).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-24 10:48:42 +02:00

70 lines
3.0 KiB
YAML

# =====================================================================
# Checkmk + NGINX Proxy Manager
# Funktioniert identisch mit: docker compose | podman-compose
#
# - Beide Dienste laufen im Host-Netzwerk -> keine "ports:"-Definition
# - Ausschliesslich Bind-Mounts nach ./data -> keine named volumes
# =====================================================================
services:
# -------------------------------------------------------------------
# Checkmk (OMD) - im Host-Netzwerk
# Port 5000 = Web-GUI (wird vom NGINX Proxy Manager als Backend genutzt)
# Port 8000 = Agent-Receiver (cmk-agent-ctl / TLS-registrierte Agents)
# Port 6557 = Livestatus (nur wenn CMK_LIVESTATUS_TCP=on)
# -------------------------------------------------------------------
checkmk:
# Vollqualifizierter Name! Wird aus der .env genommen und ggf. von
# "cmk-manage.sh image ..." dort eingetragen. Kurze Namen wuerde Podman
# ueber unqualified-search-registries aufloesen (auf RHEL zuerst
# registry.access.redhat.com) und das Image nicht finden.
image: ${CMK_IMAGE:-docker.io/checkmk/check-mk-raw:2.3.0-latest}
container_name: ${CMK_CONTAINER_NAME:-checkmk}
hostname: ${CMK_HOSTNAME:-checkmk}
network_mode: host
restart: unless-stopped
stop_grace_period: 120s
environment:
CMK_SITE_ID: ${CMK_SITE_ID:-cmk}
CMK_PASSWORD: ${CMK_PASSWORD:-}
CMK_LIVESTATUS_TCP: ${CMK_LIVESTATUS_TCP:-off}
MAIL_RELAY_HOST: ${MAIL_RELAY_HOST:-}
TZ: ${TZ:-Europe/Berlin}
volumes:
# Kompletter OMD-Datenbestand als Bind-Mount im Projektverzeichnis
- ${CMK_DATA_DIR:-./data/checkmk/sites}:/omd/sites:Z
- /etc/localtime:/etc/localtime:ro
ulimits:
nofile:
soft: 65536
hard: 65536
# ---------------------------------------------------------------
# Optional: tmpfs fuer das Site-tmp-Verzeichnis (Performance).
# Bewusst deaktiviert, weil uid/gid der Site nach einem Import
# abweichen koennen und das tmpfs dann falsch gemountet waere.
# Bei einer frisch angelegten Site ist uid/gid=1000 korrekt:
# ---------------------------------------------------------------
# tmpfs:
# - /opt/omd/sites/${CMK_SITE_ID:-cmk}/tmp:uid=1000,gid=1000
# -------------------------------------------------------------------
# NGINX Proxy Manager - ebenfalls Host-Netzwerk
# Port 80 = HTTP + Let's-Encrypt HTTP-01 Challenge
# Port 443 = HTTPS
# Port 81 = Admin-Oberflaeche (unbedingt per Firewall einschraenken!)
# -------------------------------------------------------------------
nginx-proxy-manager:
image: ${NPM_IMAGE:-docker.io/jc21/nginx-proxy-manager:2}
container_name: ${NPM_CONTAINER_NAME:-nginx-proxy-manager}
network_mode: host
restart: unless-stopped
environment:
DISABLE_IPV6: ${NPM_DISABLE_IPV6:-true}
TZ: ${TZ:-Europe/Berlin}
volumes:
- ${NPM_DATA_DIR:-./data/npm/data}:/data:Z
- ${NPM_LE_DIR:-./data/npm/letsencrypt}:/etc/letsencrypt:Z
depends_on:
- checkmk