Rocky container: Unterschied zwischen den Versionen
| Zeile 1: | Zeile 1: | ||
| + | = Installation = | ||
| + | === DATEN === | ||
| + | {| class="wikitable" style="background-color: #f2f2f2;" | ||
| + | ! Parameter !! Wert !! Erläuterung | ||
| + | |- | ||
| + | | '''VM Name || container || Name der VM | ||
| + | |- | ||
| + | | '''Disk''' || 20GB || Vorgabe übernehmen | ||
| + | |- | ||
| + | | '''CPU''' || 4 Cores || Kerne | ||
| + | |- | ||
| + | | '''Ram''' || 4 GB || Speicher | ||
| + | |- | ||
| + | | '''Netzwerk (NIC)''' || DMZ|| Interface-Zuweisung in VirtualBox | ||
| + | |- | ||
| + | | '''Admin''' || root || Passwort: radler | ||
| + | |- | ||
| + | | '''User''' || kit || Passwort: kit | ||
| + | |- | ||
| + | | '''IP''' || 10.88.2XX.39/24 || Statische IP | ||
| + | |- | ||
| + | | '''CIDR''' || 24 || Classless Inter-Domain Routing Präfixlänge | ||
| + | |- | ||
| + | | '''GW''' || 10.88.2XX.1 || GATEWAY | ||
| + | |- | ||
| + | | '''NS''' || 10.88.2XX.21 || Resolver | ||
| + | |- | ||
| + | | '''FQDN''' || container.it2XX.int || Fully Qualified Domain Name | ||
| + | |- | ||
| + | | '''DOM''' || it2XX.int|| Domain Name | ||
| + | |} | ||
| + | {{Vorlage:Rocky Setup}} | ||
| + | |||
== Monitoring mit Uptime Kuma und Caddy (container.it2XX.int) == | == Monitoring mit Uptime Kuma und Caddy (container.it2XX.int) == | ||
Version vom 4. Juli 2026, 16:20 Uhr
Installation
DATEN
| Parameter | Wert | Erläuterung |
|---|---|---|
| VM Name | container | Name der VM |
| Disk | 20GB | Vorgabe übernehmen |
| CPU | 4 Cores | Kerne |
| Ram | 4 GB | Speicher |
| Netzwerk (NIC) | DMZ | Interface-Zuweisung in VirtualBox |
| Admin | root | Passwort: radler |
| User | kit | Passwort: kit |
| IP | 10.88.2XX.39/24 | Statische IP |
| CIDR | 24 | Classless Inter-Domain Routing Präfixlänge |
| GW | 10.88.2XX.1 | GATEWAY |
| NS | 10.88.2XX.21 | Resolver |
| FQDN | container.it2XX.int | Fully Qualified Domain Name |
| DOM | it2XX.int | Domain Name |
Hostname
- hostnamectl hostname FQDN
Netzwerk
- nmcli con mod enp0s3 ipv4.addresses IP/CIDR
- nmcli con mod enp0s3 ipv4.gateway GW
- nmcli con mod enp0s3 ipv4.dns NS
- nmcli con mod enp0s3 ipv4.method manual
- nmcli con mod enp0s3 connection.autoconnect yes
- nmcli con up enp0s3
Nameserver & Suchdomain
Der DNS wird bereits über nmcli gesetzt. Suchdomain ergänzen:
- nmcli con mod enp0s3 ipv4.dns-search DOM
- nmcli con up enp0s3
Tools die wir haben wollen
- dnf install vim sudo git curl tcpdump nmap wget epel-release policycoreutils-python-utils tar
Kit Stamm-CA ziehen und in das System einbauen
- wget https://web.samogo.de/certs/ca.crt
- cp ca.crt /etc/pki/ca-trust/source/anchors/
- update-ca-trust extract
Zertifikat und Key holen
- wget -nv -O /tmp/own.int.tgz https://web.samogo.de/certs/it2XX.int.tgz
- tar -C /tmp -xvzf /tmp/own.int.tgz
- mv /tmp/fullchain.pem /etc/ssl/own.crt
- mv /tmp/privkey.pem /etc/ssl/own.key
Monitoring mit Uptime Kuma und Caddy (container.it2XX.int)
Als Ausblick nach der klassischen Systemadministration wird auf der Maschine container.it2XX.int ein kleines Container-Setup gezeigt: Uptime Kuma als Monitoring-Tool, davor Caddy als Reverse Proxy. Beide laufen als Podman-Container, verwaltet über podman-compose.
Was ist Podman
Podman ist eine Container-Engine, kompatibel zur Docker-CLI, aber ohne zentralen Root-Daemon.
- Wichtigste Unterschiede zu Docker
- Daemonless: Docker braucht einen dauerhaft laufenden Root-Daemon
(dockerd). Fällt er aus oder wird kompromittiert, sind alle Container betroffen. Podman startet Container als direkte Kindprozesse ohne zentralen Daemon.
- Rootless by Default: Podman-Container laufen standardmäßig ohne
Root-Rechte. Ein Escape aus dem Container landet nicht automatisch bei Root auf dem Host.
- Systemd-Integration: Podman-Container lassen sich nativ als
systemd-Units verwalten (Quadlets), passt gut in RHEL/Rocky-Abläufe.
- Merksatz
Docker = ein Daemon regiert alle Container (meist als Root) | Podman = jeder Container ein eigener Prozess, standardmäßig ohne Root-Rechte
podman-compose installieren
- Pip-Paket installieren (EPEL-Version ist teils veraltet)
- dnf install -y python3-pip
- pip3 install podman-compose
Vorbereitung: Zertifikate
Die Zertifikate liegen bereits vor unter:
/etc/ssl/own.crt/etc/ssl/own.key
Caddyfile
- Caddyfile im Projektverzeichnis anlegen (z. B. /opt/monitoring/Caddyfile)
kuma.it2XX.int {
tls /etc/ssl/own.crt /etc/ssl/own.key
reverse_proxy uptime-kuma:3001
}
compose.yaml
- Im selben Verzeichnis wie die Caddyfile anlegen
version: "3"
services:
uptime-kuma:
image: docker.io/louislam/uptime-kuma:1
container_name: uptime-kuma
volumes:
- uptime-kuma-data:/app/data
networks:
- monitoring
caddy:
image: docker.io/library/caddy:2
container_name: caddy
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:Z
- /etc/ssl/own.crt:/etc/ssl/own.crt:Z
- /etc/ssl/own.key:/etc/ssl/own.key:Z
- caddy-data:/data
networks:
- monitoring
depends_on:
- uptime-kuma
volumes:
uptime-kuma-data:
caddy-data:
networks:
monitoring:
- Hinweis SELinux
Das :Z an den Bind-Mounts (Caddyfile, Zertifikate) ist auf
Rocky notwendig, damit Caddy trotz aktivem SELinux Lesezugriff über den
passenden Kontext erhält. Bei benannten Volumes (uptime-kuma-data,
caddy-data) ist das nicht nötig, das übernimmt Podman selbst.
Starten und Stoppen
- Stack starten
- cd /opt/monitoring
- podman-compose up -d
- Status prüfen
- podman-compose ps
- Stack stoppen
- podman-compose down
Test
- Aufruf im Browser
https://kuma.it2XX.int
Beim ersten Aufruf fragt Uptime Kuma nach Anlegen eines Admin-Accounts. Danach lassen sich Monitore für ns, www, ldap, client und fw anlegen (Ping, TCP-Port, HTTP) und der Status live auf dem Dashboard verfolgen.
Merksatz
podman-compose = ein YAML-File statt mehrerer podman-run-Befehle | Rest bleibt gleich: rootless, daemonless, systemd-nahe Verwaltung möglich.