- Removed separate html volume, use /var/www as single web root
- Moved html/ content into www/html/
- Updated default.conf root to /var/www/html
- Allows organizing multiple sites under /var/www (html, mon_site, etc.)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Runtipi copies app data/ contents to APP_DATA_DIR/data/, not APP_DATA_DIR/.
Without the data/ prefix, Docker creates empty directories instead of
using the actual config files, causing nginx to crash on startup.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- internalPort: 80 (number) -> "80" (string) to match Runtipi schema
- Added missing source field required for app discovery
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- id: nginx-custom -> nginx (must match folder name for Runtipi discovery)
- tipiVersion: 1 -> tipi_version: 2 (correct key name and version)
- Removed min_tipi_version and $schema fields
- Service name: nginx-custom -> nginx
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Extract agent-template.conf and default/agent.conf from official
wazuh/wazuh-manager:4.14.1 image and store them in scripts/templates/.
The init-manager.sh script now copies these files instead of creating
them inline, ensuring consistency with official Wazuh configuration.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
When /var/ossec/etc/shared is mounted as an empty volume, create the
required agent-template.conf and default/agent.conf files automatically.
This fixes group creation errors after fresh deployments.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add manager-shared volume to mount /var/ossec/etc/shared for Wazuh
manager, ensuring agent groups are persisted across container restarts.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Removed step 5 (manual restart via Runtipi interface) from the indexer
password change procedure. In Runtipi, clicking "Mettre à jour" already
restarts the application automatically, making the manual restart step
redundant.
Renumbered subsequent steps:
- Old step 6 → New step 5 (securityadmin.sh)
- Old step 7 → New step 6 (Update env vars)
- Old step 8 → New step 7 (Test passwords)
This simplifies the procedure and avoids confusion for users.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Changed the API password test command to use localhost:55000 instead
of VOTRE_IP:55000 for better clarity since the command is executed
from the server itself via SSH.
This is more consistent with other local testing commands.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Docker exec does not interpret wildcards (*) in container names.
Replaced all `docker exec -it wazuh-runtipi_*-container-name` commands
with `docker exec -it $(docker ps --filter "name=container" --format "{{.Names}}")`.
This ensures the commands work correctly on all systems.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Merged update and restart steps into one since they're done
together in Runtipi interface (Update then Restart button).
Renumbered step 5 to step 4 (verification).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Removed the "one-liner" docker exec approach and kept only
the manual method (entering the container).
This is simpler and easier to follow:
1. Enter container
2. View current config with cat
3. Replace password with sed
4. Verify with grep
5. Exit
User preference: keep it straightforward with one clear method
instead of multiple alternatives.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
The actual wazuh.yml file has passwords WITHOUT quotes:
password: MyS3cr37P450r.*-
But the sed command was searching FOR quotes:
password: "MyS3cr37P450r.*-"
This caused the sed command to not match and not replace anything.
Fixed by removing quotes from the sed pattern to match the actual
YAML format used by Wazuh.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
The dashboard container doesn't have vi or nano installed.
Replaced manual editing instructions with automated sed command.
Changes:
- Added one-liner sed command to replace password directly
- Added verification command to check the change
- Kept manual alternative for troubleshooting
- Escaped special characters in regex (. and *)
This makes the password change procedure much simpler and
doesn't require installing additional tools in the container.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
According to official Wazuh documentation, changing the API password
requires updating BOTH:
1. The wazuh.yml file in the dashboard container
2. The API_PASSWORD environment variable
Previous documentation only mentioned step 2, which is incomplete.
Added:
- Step to edit /usr/share/wazuh-dashboard/data/wazuh/config/wazuh.yml
- Warning that this file is not in a persistent volume
- Link to official documentation
- vi editor instructions for YAML modification
Fixes incomplete API password change procedure.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Port 9200 is not exposed to the host (security by design).
Updated all OpenSearch API test commands to use docker exec
from within Wazuh containers instead of direct host access.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add concise testing commands after password change procedure:
- Test admin via Dashboard and API
- Test kibanaserver via API
- Security test to verify old passwords no longer work
Simple, clear, and actionable for users.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add special handling in log display loop to exclude indexer-init
when matching indexer container. Without this fix, grep matches
both wazuh-indexer and wazuh-indexer-init when service=indexer,
causing indexer-init logs to display twice.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>