There’s no hard-coded cap on RBAC users in Wazuh, but very large numbers of internal users/role mappings (hundreds → thousands) can slow certain synchronous API calls the Dashboard relies on (user listing, role/role-mapping checks, CDB/whitelist lookups, etc.). When those calls exceed the Dashboard’s request timeout, you see the “Timeout of 20000ms exceeded” error.
You can solve this in two complementary ways: (1) increase the Dashboard request timeout (quick and reversible), and (2) reduce the load/latency that causes the timeout (longer-term).
Why this happens
The Dashboard makes synchronous calls to the Wazuh API and the indexer. Large internal lists or a slow backend cause those calls to take longer than the Dashboard’s configured timeout, triggering the 20000ms error.
Increase the Dashboard request timeout. Edit the dashboard config file (packaged path shown below) and set timeout: 100000 (milliseconds):
If you run the dashboard in Docker, persist this file outside the container and bind-mount it:
mkdir -p ~/wazuh-dashboard-config
# create/edit ~/wazuh-dashboard-config/wazuh.yml (put the config above)
chmod 644 ~/wazuh-dashboard-config/wazuh.yml
Add the mount (example docker-compose snippet — match your actual service name):
services:
wazuh-dashboard:
image: wazuh/wazuh-dashboard:4.10.0
volumes:
- ./wazuh-dashboard-config/wazuh.yml:/usr/share/wazuh-dashboard/data/wazuh/config/wazuh.yml:ro
Recreate the container:
docker compose up -d --force-recreate wazuh.dashboard
Notes:
Use :ro to avoid accidental in-container writes (remove if you intentionally want container writes).
Keep the file readable (e.g., chmod 644).