0 Für mein Homelab betreibe ich Wazuh als Docker-Stack auf Unraid. Die drei zentralen Container heißen Manager, Indexer und Dashboard. Die folgende Anleitung nutzt das offizielle Single-Node-Projekt und Wazuh 4.14.8. Auf Ubuntu mit Docker Engine und dem Compose-Plugin ist der Ablauf nahezu derselbe; Speicherpfade und die dauerhafte Host-Konfiguration unterscheiden sich. Das Ziel ist eine erreichbare Installation mit eigenen Passwörtern und persistenten Daten. Das später gezeigte Dashboard entsteht erst im Dashboard-Teil der Serie. Wazuh im Homelab, die Serie:Was ist Wazuh?Installation mit Docker (dieser Artikel)Linux-Agenten installieren (erscheint in Kürze)SCA und CIS-Prüfungen (erscheint in Kürze)Dashboard erstellen (erscheint in Kürze)Telegram-Benachrichtigungen (erscheint in Kürze)UniFi per Syslog (erscheint in Kürze)Schwachstellen bewerten (erscheint in Kürze)Updates und Backups (erscheint in Kürze) Ressourcen und Vorbereitung Für den Single-Node-Docker-Stack nennt Wazuh mindestens vier CPU-Kerne, acht GB RAM am Docker-Host und 50 GB Speicher. Bei längerer Aufbewahrung und vielen Logs wächst der Platzbedarf. Auf einem Unraid-Host müssen die anderen Container zusätzlich in die Planung eingehen. Docker-Voraussetzungen Prüfe zunächst: docker version docker compose version git --version Auf einer Ubuntu-VM installierst du fehlendes Git mit sudo apt install git. Für Docker findest du die Grundlage im Docker-Ratgeber. Auf Unraid brauchst du zusätzlich eine funktionsfähige Compose-Installation; die normale Docker-Vorlagenansicht startet keine Compose-Datei automatisch. Wazuh benötigt einen ausreichend hohen Wert für vm.max_map_count: sudo sysctl -w vm.max_map_count=262144 Auf Ubuntu wird er beispielsweise mit einer Datei unter /etc/sysctl.d/ dauerhaft: echo 'vm.max_map_count=262144' | sudo tee /etc/sysctl.d/99-wazuh.conf sudo sysctl --system Unraid arbeitet anders: Eine normale Änderung unter /etc ist dort kein verlässlicher dauerhafter Speicherort. Setze den Wert über deinen bestehenden Startmechanismus und prüfe ihn nach einem Host-Neustart erneut. Die benötigte Kernel-Einstellung ist im offiziellen Docker-Leitfaden beschrieben. Projekt mit einer festen Version holen Wähle einen persistenten Projektpfad. Unter Ubuntu ist zum Beispiel /opt/wazuh geeignet. Unter Unraid verwende ich für die Projektdateien einen Appdata-Pfad; die großen Indexdaten liegen auf einem ausdrücklich zugeordneten Datenträger. git clone --branch v4.14.8 --depth 1 \ https://github.com/wazuh/wazuh-docker.git wazuh-docker cd wazuh-docker/single-node Nimm für Manager, Indexer und Dashboard dieselbe Version. Der offizielle Compose-Stand für diese Anleitung ist v4.14.8 im Wazuh-Repository. Damit ist später nachvollziehbar, welche Ausgangsdatei du verändert hast. Ports vor dem ersten Start begrenzen Die Originaldatei veröffentlicht mehrere Ports auf allen Host-Adressen. Für meine Installation beschränke ich die Verwaltung auf ein privates Netz beziehungsweise das VPN. Passe die vorhandenen ports-Blöcke an; füge keinen zweiten Block derselben Art daneben ein. Komponente Hostbindung im Beispiel Zweck Manager 192.168.50.10:1514:1514 Agentendaten, TCP Manager 192.168.50.10:1515:1515 Agentenregistrierung, TCP Manager 127.0.0.1:55000:55000 Manager-API vom Host aus Indexer 127.0.0.1:9200:9200 Indexer-API vom Host aus Dashboard 192.168.50.10:5601:5601 Browserzugriff, HTTPS 192.168.50.10 ist eine Beispieladresse. Sie muss als lokale Adresse auf deinem Docker-Host existieren. Der interne Verkehr zwischen den Containern bleibt über das Compose-Netz möglich. Wer die APIs über VPN von einem anderen Rechner benötigt, bindet sie gezielt an die VPN-Adresse und setzt passende Zugriffsregeln. Den Syslog-Port 514/UDP lasse ich zunächst unveröffentlicht. Er kommt erst mit der UniFi-Anbindung hinzu. Bei Docker sollte man außerdem tatsächlich von einem zweiten Rechner prüfen, welche veröffentlichten Ports erreichbar sind; eine oberflächliche UFW-Kontrolle allein reicht dafür nicht. Eigene Passwörter vor dem produktiven Einsatz Es gibt mehrere Konten: den Indexer-Admin, den Dashboard-Dienst kibanaserver und das Manager-API-Konto wazuh-wui. Ein Passwortwechsel nur im Browser aktualisiert nicht automatisch alle abhängigen Dienste. Für eine frische Installation lege ich die Passwörter vor dem ersten Start fest: Für admin und kibanaserver jeweils einen eigenen Hash erzeugen. Die Hashes in config/wazuh_indexer/internal_users.yml eintragen. Die zugehörigen Klartextwerte in den passenden Umgebungsvariablen der Compose-Datei aktualisieren. API_PASSWORD in den Manager- und Dashboard-Einstellungen identisch auf ein eigenes API-Passwort setzen. Den Hashgenerator startest du interaktiv, damit das Passwort nicht als Argument in der Befehlszeile steht: docker run --rm -ti wazuh/wazuh-indexer:4.14.8 \ bash /usr/share/wazuh-indexer/plugins/opensearch-security/tools/hash.sh Bei einem bereits laufenden Indexer müssen geänderte Benutzer zusätzlich in dessen Sicherheitskonfiguration angewendet werden. Dafür enthält die offizielle Anleitung zum Passwortwechsel den versionsbezogenen Ablauf. Die Initialisierung einer frischen Installation und die Rotation einer bestehenden Installation sind zwei verschiedene Situationen. Die Projektdateien enthalten danach Geheimnisse. Halte sie außerhalb öffentlicher Repositories und beschränke ihre Dateirechte. Auch ein exportiertes Backup dieser Dateien ist vertraulich. Zertifikate erzeugen und Container starten docker compose -f generate-indexer-certs.yml run --rm generator docker compose config --quiet docker compose up -d docker compose ps Der Generator erstellt die Zertifikate für die interne Kommunikation. Öffne anschließend im Beispiel https://192.168.50.10:5601 und melde dich als admin mit deinem eigenen Passwort an. Für einen normalen Browserzugriff solltest du die verwendete Zertifikatskette vertrauenswürdig einrichten oder ein passendes Zertifikat einsetzen. Die internen Zertifikate ersetzt das nicht automatisch. Unraid und die persistenten Daten Ein Projektordner unter Appdata bedeutet noch nicht, dass alle Docker-Volumes dort liegen. Die Originaldatei verwendet benannte Volumes. Prüfe deren tatsächliche Mounts: docker compose config --volumes docker inspect "$(docker compose ps -q wazuh.indexer)" \ --format '{{json .Mounts}}' Plane Indexer-Daten, Manager-Daten und Backups getrennt. Bei mir liegen die aktiven Wazuh-Daten auf einem eigenen Datenträger, die lokalen Backups auf dem Unraid-Array. Ein Backup auf demselben Server hilft gegen einzelne Fehler, aber noch nicht gegen den Verlust des gesamten Servers. Niemals eine laufende Indexer-Datenbank als gewöhnliche Dateikopie für ein konsistentes Backup behandeln; dafür gibt es Snapshots. Wenn das Dashboard noch nicht bereit ist Die Meldung Wazuh dashboard server is not ready yet kann während des Starts erscheinen. Bleibt sie bestehen, prüfe zunächst die abhängigen Container: docker compose logs --tail=100 wazuh.indexer docker compose logs --tail=100 wazuh.dashboard Typische Ursachen sind ein nicht gestarteter Indexer, zu wenig Speicher, falsche Zugangsdaten oder ein Zertifikatsproblem. Logs können sensible Angaben enthalten; poste sie nicht ungeprüft vollständig. Wenn alle drei Container laufen und die Anmeldung funktioniert, folgt der erste Linux-Agent. Erst seine Verbindung und ein überprüftes Ereignis zeigen, dass die Datenstrecke funktioniert. Vorheriger Beitrag FIDA AutoBrake Rollleine im Test: Bremst wie ein Sicherheitsgurt – aber hält sie einen 40-kg-Hund? You may also like Zabbix installieren auf Ubuntu: Server, PostgreSQL, nginx und HTTPS in einer Stunde Oktober 26, 2026 Was ist Wazuh? Das Open-Source-SIEM im Homelab und wie es Zabbix ergänzt Oktober 25, 2026 Ist der Weiße Schäferhund intelligent? Meine Hündin hat nachts an der Wohnungstür... Oktober 24, 2026 Zabbix vs. Uptime Kuma vs. Checkmk: Welches Monitoring passt ins Homelab? Oktober 23, 2026 Überwachungskamera mit Akku und Daueraufnahme: Was AOV kann – und was die... Oktober 22, 2026 Blutohr beim Hund: Helis Geschichte, Behandlung und was ich heute anders machen... Oktober 21, 2026 Hinterlasse einen Kommentar Cancel Reply Save my name, email, and website in this browser for the next time I comment.