# Wazuh App Copyright (C) 2017, Wazuh Inc. (License GPLv2) services: wazuh.master: image: wazuh/wazuh-manager:5.0.0 hostname: wazuh.master container_name: multi-node-wazuh.master restart: always depends_on: wazuh1.indexer: condition: service_healthy healthcheck: test: [ "CMD-SHELL", "curl -k -s -o /dev/null https://localhost:55000 || exit 1" ] interval: 15s timeout: 5s retries: 5 ulimits: memlock: soft: -1 hard: -1 nofile: soft: 655360 hard: 655360 ports: - "1515:1515" - "514:514/udp" - "55000:55000" environment: - WAZUH_INDEXER_HOSTS=wazuh1.indexer:9200,wazuh2.indexer:9200,wazuh3.indexer:9200 - WAZUH_NODE_NAME=master - WAZUH_NODE_TYPE=master - WAZUH_CLUSTER_BIND_ADDR=0.0.0.0 - WAZUH_CLUSTER_NODES=wazuh.master - INDEXER_USERNAME=admin - INDEXER_PASSWORD=admin volumes: - master-wazuh-api-configuration:/var/wazuh-manager/api/configuration - master-wazuh-etc:/var/wazuh-manager/etc - master-wazuh-logs:/var/wazuh-manager/logs - master-wazuh-queue:/var/wazuh-manager/queue - master-wazuh-var-multigroups:/var/wazuh-manager/var/multigroups - ./config/root-ca/certs/root-ca.pem:/var/wazuh-manager/etc/certs/root-ca.pem - ./config/wazuh_master/certs/wazuh.master.pem:/var/wazuh-manager/etc/certs/manager.pem - ./config/wazuh_master/certs/wazuh.master-key.pem:/var/wazuh-manager/etc/certs/manager-key.pem wazuh.worker: image: wazuh/wazuh-manager:5.0.0 hostname: wazuh.worker container_name: multi-node-wazuh.worker restart: always healthcheck: test: [ "CMD-SHELL", "timeout 2 bash -c ' /bin/sh -c " echo 'Waiting for wazuh1.indexer...'; sleep 5; until getent hosts wazuh1.indexer; do sleep 2; done; /entrypoint.sh opensearch" depends_on: - wazuh1.indexer environment: - OPENSEARCH_JAVA_OPTS=-Xms1g -Xmx1g - bootstrap.memory_lock=true - network.host=0.0.0.0 - node.name=wazuh2.indexer - cluster.initial_cluster_manager_nodes=wazuh1.indexer,wazuh2.indexer,wazuh3.indexer - discovery.seed_hosts=wazuh1.indexer,wazuh2.indexer,wazuh3.indexer - node.max_local_storage_nodes=3 - plugins.security.allow_default_init_securityindex=true - NODES_DN=CN=wazuh1.indexer,OU=Wazuh,O=Wazuh,L=California,C=US;CN=wazuh2.indexer,OU=Wazuh,O=Wazuh,L=California,C=US;CN=wazuh3.indexer,OU=Wazuh,O=Wazuh,L=California,C=US ulimits: memlock: soft: -1 hard: -1 nofile: soft: 65536 hard: 65536 healthcheck: test: [ "CMD-SHELL", "curl -fks https://localhost:9200/_plugins/_security/health | grep -q '\"status\":\"UP\"'" ] interval: 30s timeout: 10s retries: 5 start_period: 60s volumes: - wazuh-indexer-data-2:/var/lib/wazuh-indexer - ./config/root-ca/certs/root-ca.pem:/usr/share/wazuh-indexer/config/certs/root-ca.pem - ./config/wazuh2_indexer/certs/wazuh2.indexer-key.pem:/usr/share/wazuh-indexer/config/certs/indexer-key.pem - ./config/wazuh2_indexer/certs/wazuh2.indexer.pem:/usr/share/wazuh-indexer/config/certs/indexer.pem wazuh3.indexer: image: wazuh/wazuh-indexer:5.0.0 hostname: wazuh3.indexer container_name: multi-node-wazuh3.indexer restart: always entrypoint: > /bin/sh -c " echo 'Waiting for wazuh1.indexer...'; sleep 5;until getent hosts wazuh1.indexer; do sleep 2; done; /entrypoint.sh opensearch" depends_on: - wazuh1.indexer environment: - OPENSEARCH_JAVA_OPTS=-Xms1g -Xmx1g - bootstrap.memory_lock=true - network.host=0.0.0.0 - node.name=wazuh3.indexer - cluster.initial_cluster_manager_nodes=wazuh1.indexer,wazuh2.indexer,wazuh3.indexer - discovery.seed_hosts=wazuh1.indexer,wazuh2.indexer,wazuh3.indexer - node.max_local_storage_nodes=3 - plugins.security.allow_default_init_securityindex=true - NODES_DN=CN=wazuh1.indexer,OU=Wazuh,O=Wazuh,L=California,C=US;CN=wazuh2.indexer,OU=Wazuh,O=Wazuh,L=California,C=US;CN=wazuh3.indexer,OU=Wazuh,O=Wazuh,L=California,C=US ulimits: memlock: soft: -1 hard: -1 nofile: soft: 65536 hard: 65536 healthcheck: test: [ "CMD-SHELL", "curl -fks https://localhost:9200/_plugins/_security/health | grep -q '\"status\":\"UP\"'" ] interval: 30s timeout: 10s retries: 5 start_period: 60s volumes: - wazuh-indexer-data-3:/var/lib/wazuh-indexer - ./config/root-ca/certs/root-ca.pem:/usr/share/wazuh-indexer/config/certs/root-ca.pem - ./config/wazuh3_indexer/certs/wazuh3.indexer-key.pem:/usr/share/wazuh-indexer/config/certs/indexer-key.pem - ./config/wazuh3_indexer/certs/wazuh3.indexer.pem:/usr/share/wazuh-indexer/config/certs/indexer.pem wazuh.dashboard: image: wazuh/wazuh-dashboard:5.0.0 hostname: wazuh.dashboard container_name: multi-node-wazuh.dashboard restart: always healthcheck: test: [ "CMD", "curl", "-k", "-s", "-o", "/dev/null", "https://localhost:5601/login" ] interval: 30s timeout: 10s retries: 3 start_period: 30s ports: - 443:5601 environment: - SERVER_PORT=5601 - SERVER_HOST=0.0.0.0 - OPENSEARCH_HOSTS=["https://wazuh1.indexer:9200","https://wazuh2.indexer:9200","https://wazuh3.indexer:9200"] - INDEXER_USERNAME=admin - INDEXER_PASSWORD=admin - WAZUH_API_URL=https://wazuh.master - DASHBOARD_USERNAME=kibanaserver - DASHBOARD_PASSWORD=kibanaserver - SERVER_SSL_CERTIFICATE=/usr/share/wazuh-dashboard/config/certs/wazuh-dashboard.pem - SERVER_SSL_KEY=/usr/share/wazuh-dashboard/config/certs/wazuh-dashboard-key.pem - OPENSEARCH_SSL_CERTIFICATE_AUTHORITIES=/usr/share/wazuh-dashboard/config/certs/root-ca.pem volumes: - ./config/wazuh_dashboard/certs/wazuh.dashboard.pem:/usr/share/wazuh-dashboard/config/certs/wazuh-dashboard.pem - ./config/wazuh_dashboard/certs/wazuh.dashboard-key.pem:/usr/share/wazuh-dashboard/config/certs/wazuh-dashboard-key.pem - ./config/root-ca/certs/root-ca.pem:/usr/share/wazuh-dashboard/config/certs/root-ca.pem - wazuh-dashboard-config:/usr/share/wazuh-dashboard/config - wazuh-dashboard-custom:/usr/share/wazuh-dashboard/plugins/wazuh/public/assets/custom depends_on: wazuh1.indexer: condition: service_healthy wazuh.master: condition: service_healthy nginx: image: nginx:stable hostname: nginx container_name: multi-node-nginx restart: always ports: - "1514:1514" depends_on: - wazuh.master - wazuh.worker - wazuh.dashboard volumes: - ./config/nginx/nginx.conf:/etc/nginx/nginx.conf:ro volumes: master-wazuh-api-configuration: master-wazuh-etc: master-wazuh-logs: master-wazuh-queue: master-wazuh-var-multigroups: worker-wazuh-api-configuration: worker-wazuh-etc: worker-wazuh-logs: worker-wazuh-queue: worker-wazuh-var-multigroups: wazuh-indexer-data-1: wazuh-indexer-data-2: wazuh-indexer-data-3: wazuh-dashboard-config: wazuh-dashboard-custom: