{ "schemaVersion": 2, "services": [ { "name": "wazuh-certs", "image": "wazuh/wazuh-certs-generator:0.0.3", "hostname": "wazuh-certs-generator", "entrypoint": [ "sh", "/scripts/init-certs.sh" ], "environment": { "CERT_TOOL_VERSION": "4.14" }, "volumes": [ { "hostPath": "${APP_DATA_DIR}/data/config", "containerPath": "/config" }, { "hostPath": "${APP_DATA_DIR}/data/config/wazuh_ssl_certs", "containerPath": "/certificates" }, { "hostPath": "${APP_DATA_DIR}/data/indexer-data", "containerPath": "/indexer-data" }, { "hostPath": "${APP_DATA_DIR}/data/manager-api", "containerPath": "/manager-api" }, { "hostPath": "${APP_DATA_DIR}/data/manager-logs", "containerPath": "/manager-logs" }, { "hostPath": "${APP_DATA_DIR}/data/manager-queue", "containerPath": "/manager-queue" }, { "hostPath": "${APP_DATA_DIR}/data/manager-shared", "containerPath": "/manager-shared" }, { "hostPath": "${APP_DATA_DIR}/data/dashboard-config", "containerPath": "/dashboard-config" }, { "hostPath": "${APP_DATA_DIR}/data/indexer-security", "containerPath": "/indexer-security" }, { "hostPath": "${APP_DATA_DIR}/data/scripts", "containerPath": "/scripts" } ], "healthCheck": { "test": "test -f /certificates/root-ca.pem", "interval": "5s", "timeout": "5s", "retries": 10 } }, { "name": "wazuh-indexer", "image": "wazuh/wazuh-indexer:4.14.1", "hostname": "wazuh.indexer", "user": "1000:1000", "depends_on": { "wazuh-certs": { "condition": "service_healthy" } }, "environment": { "OPENSEARCH_JAVA_OPTS": "-Xms1g -Xmx1g -Dlog4j2.formatMsgNoLookups=true", "DISABLE_INSTALL_DEMO_CONFIG": "true", "bootstrap.memory_lock": "true", "network.host": "wazuh.indexer", "node.name": "wazuh.indexer", "cluster.initial_cluster_manager_nodes": "wazuh.indexer", "node.max_local_storage_nodes": "1", "plugins.security.allow_default_init_securityindex": "true", "NODES_DN": "CN=wazuh.indexer,OU=Wazuh,O=Wazuh,L=California,C=US", "plugins.security.ssl.http.clientauth_mode": "OPTIONAL" }, "ulimits": { "memlock": { "soft": -1, "hard": -1 }, "nofile": { "soft": 65536, "hard": 65536 } }, "deploy": { "resources": { "limits": { "cpus": "1.0", "memory": "2G" }, "reservations": { "cpus": "0.5", "memory": "1G", "devices": [] } } }, "volumes": [ { "hostPath": "${APP_DATA_DIR}/data/indexer-data", "containerPath": "/var/lib/wazuh-indexer" }, { "hostPath": "${APP_DATA_DIR}/data/config/wazuh_ssl_certs", "containerPath": "/usr/share/wazuh-indexer/config/certs" }, { "hostPath": "${APP_DATA_DIR}/data/indexer-security", "containerPath": "/usr/share/wazuh-indexer/opensearch-security" } ], "healthCheck": { "test": "curl -ks https://wazuh.indexer:9200 -u ${INDEXER_USERNAME:-admin}:${INDEXER_PASSWORD:-admin}", "interval": "10s", "timeout": "5s", "retries": 15, "startPeriod": "120s" } }, { "name": "wazuh-indexer-init", "image": "wazuh/wazuh-indexer:4.14.1", "hostname": "wazuh-indexer-init", "depends_on": { "wazuh-indexer": { "condition": "service_healthy" } }, "entrypoint": [ "bash", "/scripts/init-indexer-init.sh" ], "volumes": [ { "hostPath": "${APP_DATA_DIR}/data/config/wazuh_ssl_certs", "containerPath": "/usr/share/wazuh-indexer/config/certs" }, { "hostPath": "${APP_DATA_DIR}/data/indexer-security", "containerPath": "/mnt/host-security" }, { "hostPath": "${APP_DATA_DIR}/data/scripts", "containerPath": "/scripts" } ], "healthCheck": { "test": "test -f /mnt/host-security/.init-complete", "interval": "5s", "timeout": "5s", "retries": 60, "startPeriod": "120s" } }, { "name": "wazuh-manager", "image": "wazuh/wazuh-manager:4.14.1", "hostname": "wazuh.manager", "entrypoint": [ "bash", "/scripts/init-manager.sh" ], "depends_on": { "wazuh-indexer-init": { "condition": "service_healthy" } }, "environment": { "WAZUH_INDEXER_HOSTS": "wazuh.indexer:9200", "WAZUH_NODE_NAME": "manager", "WAZUH_NODE_TYPE": "master", "WAZUH_CLUSTER_NODES": "wazuh.manager", "WAZUH_CLUSTER_BIND_ADDR": "wazuh.manager", "INDEXER_URL": "https://wazuh.indexer:9200", "INDEXER_USERNAME": "${INDEXER_USERNAME:-admin}", "INDEXER_PASSWORD": "${INDEXER_PASSWORD:-admin}", "FILEBEAT_SSL_VERIFICATION_MODE": "full", "SSL_CERTIFICATE_AUTHORITIES": "/var/ossec/etc/certs/root-ca.pem", "SSL_CERTIFICATE": "/var/ossec/etc/certs/server.pem", "SSL_KEY": "/var/ossec/etc/certs/server-key.pem", "API_USERNAME": "wazuh-wui", "API_PASSWORD": "${API_PASSWORD:-MyS3cr37P450r.*-}" }, "ulimits": { "memlock": { "soft": -1, "hard": -1 }, "nofile": { "soft": 655360, "hard": 655360 } }, "deploy": { "resources": { "limits": { "cpus": "2.0", "memory": "2G" }, "reservations": { "cpus": "1.0", "memory": "1G", "devices": [] } } }, "addPorts": [ { "containerPort": 1514, "hostPort": 1514, "tcp": true }, { "containerPort": 1515, "hostPort": 1515, "tcp": true }, { "containerPort": 514, "hostPort": 514, "udp": true }, { "containerPort": 55000, "hostPort": 55000, "tcp": true } ], "volumes": [ { "hostPath": "${APP_DATA_DIR}/data/manager-api", "containerPath": "/var/ossec/api/configuration" }, { "hostPath": "${APP_DATA_DIR}/data/manager-etc", "containerPath": "/var/ossec/etc/custom" }, { "hostPath": "${APP_DATA_DIR}/data/manager-logs", "containerPath": "/var/ossec/logs" }, { "hostPath": "${APP_DATA_DIR}/data/manager-queue", "containerPath": "/var/ossec/queue" }, { "hostPath": "${APP_DATA_DIR}/data/config/wazuh_ssl_certs", "containerPath": "/var/ossec/etc/certs" }, { "hostPath": "${APP_DATA_DIR}/data/manager-shared", "containerPath": "/var/ossec/etc/shared" }, { "hostPath": "${APP_DATA_DIR}/data/scripts", "containerPath": "/scripts" } ], "healthCheck": { "test": "/var/ossec/bin/wazuh-control status | grep -E 'wazuh-db is running|wazuh-analysisd is running|wazuh-remoted is running' | wc -l | grep -q 3", "interval": "30s", "timeout": "10s", "retries": 10, "startPeriod": "180s" } }, { "name": "wazuh-dashboard", "image": "wazuh/wazuh-dashboard:4.14.1", "hostname": "wazuh.dashboard", "entrypoint": [ "bash", "/scripts/init-dashboard.sh" ], "isMain": true, "internalPort": "5601", "depends_on": { "wazuh-indexer-init": { "condition": "service_healthy" }, "wazuh-manager": { "condition": "service_healthy" } }, "environment": { "SERVER_HOST": "0.0.0.0", "OPENSEARCH_HOSTS": "https://wazuh.indexer:9200", "SERVER_SSL_ENABLED": "true", "INDEXER_USERNAME": "${INDEXER_USERNAME:-admin}", "INDEXER_PASSWORD": "${INDEXER_PASSWORD:-admin}", "WAZUH_API_URL": "https://wazuh.manager", "DASHBOARD_USERNAME": "${DASHBOARD_USERNAME:-kibanaserver}", "DASHBOARD_PASSWORD": "${DASHBOARD_PASSWORD:-kibanaserver}", "API_USERNAME": "wazuh-wui", "API_PASSWORD": "${API_PASSWORD:-MyS3cr37P450r.*-}", "SERVER_SSL_CERTIFICATE": "/usr/share/wazuh-dashboard/config/certs/dashboard.pem", "SERVER_SSL_KEY": "/usr/share/wazuh-dashboard/config/certs/dashboard-key.pem", "OPENSEARCH_SSL_CERTIFICATE_AUTHORITIES": "/usr/share/wazuh-dashboard/config/certs/root-ca.pem" }, "volumes": [ { "hostPath": "${APP_DATA_DIR}/data/config/wazuh_ssl_certs", "containerPath": "/usr/share/wazuh-dashboard/config/certs" }, { "hostPath": "${APP_DATA_DIR}/data/dashboard-config", "containerPath": "/usr/share/wazuh-dashboard/config/custom" }, { "hostPath": "${APP_DATA_DIR}/data/dashboard-custom", "containerPath": "/usr/share/wazuh-dashboard/plugins/wazuh/public/assets/custom" }, { "hostPath": "${APP_DATA_DIR}/data/scripts", "containerPath": "/scripts" } ], "deploy": { "resources": { "limits": { "cpus": "0.4", "memory": "2G" }, "reservations": { "cpus": "0.2", "memory": "512M", "devices": [] } } }, "healthCheck": { "test": "curl -ks https://localhost:5601/app/wazuh -o /dev/null -w '%{http_code}' | grep -qE '302|200' || exit 1", "interval": "30s", "timeout": "10s", "retries": 15, "startPeriod": "240s" } } ] }