Wazuh SIEM на VPS: self-hosted мониторинг безопасности и XDR
Wazuh на VPS: Docker, агенты, FIM, vulnerability detection, Nginx, SSL и бэкапы. Open-source SIEM для VPS и homelab.
Краткий ответ: Wazuh — open-source SIEM/XDR: FIM, vulnerability detection, compliance. На VPS 4 GB+: Docker Compose + агенты на хостах + Nginx SSL.
Splunk — $$$, Datadog — SaaS pricing. Wazuh на вашем VPS + Tailscale — полный SOC stack без лицензий.
Wazuh vs Splunk vs ELK vs Security Onion
| Критерий | Wazuh | SaaS Leader | Alternative OSS | Enterprise |
|---|---|---|---|---|
| Self-hosted | Да | Нет | Да | Нет |
| Цена | Free (VPS) | $10+/user | Free | $$$ |
| RAM на VPS | 1–4 GB | N/A | 1 GB | N/A |
| API | REST | Pro | REST | Pro |
| Приватность | Полная | Cloud | Полная | Vendor |
Wazuh — оптимальный self-hosted выбор для мониторинга безопасности на VPS.
Архитектура production stack
Users / Agents
↓ HTTPS
Nginx + Let's Encrypt
↓
Wazuh container (port 443)
↓
Database + volumes
↓
Optional: [Authentik](/blog/authentik-sso-vps/) / [CrowdSec](/blog/crowdsec-zashchita-vps/)
Опционально: Authentik SSO, CrowdSec WAF, Tailscale private access.
Требования к VPS
| Сценарий | RAM | CPU | Диск |
|---|---|---|---|
| Личное использование | 1 GB | 1 vCPU | 10 GB SSD |
| Команда / small org | 2 GB | 2 vCPU | 20 GB SSD |
| Production + HA | 4 GB | 2 vCPU | 40 GB SSD |
Wazuh на Docker Compose — предсказуемое потребление ресурсов. Bottleneck чаще диск при media-heavy workloads.
Подготовка VPS
sudo apt update && sudo apt upgrade -y
sudo apt install -y docker.io docker-compose-plugin nginx certbot
sudo usermod -aG docker $USER
DNS: A запись siem.example.com → IP VPS. Firewall: nftables — 80, 443. Email alerts — Postfix.
Docker Compose (production)
services:
wazuh.manager:
image: wazuh/wazuh-manager:4.9.0
restart: unless-stopped
ports:
- "127.0.0.1:1514:1514"
- "127.0.0.1:1515:1515"
- "127.0.0.1:55000:55000"
volumes:
- wazuh_api:/var/ossec/api
- wazuh_logs:/var/ossec/logs
wazuh.dashboard:
image: wazuh/wazuh-dashboard:4.9.0
restart: unless-stopped
depends_on:
- wazuh.manager
ports:
- "127.0.0.1:5601:5601"
environment:
OPENSEARCH_HOSTS: https://wazuh.manager:9200
Первый запуск: docker compose up -d, затем https://siem.example.com.
Nginx reverse proxy
server {
listen 443 ssl http2;
server_name siem.example.com;
ssl_certificate /etc/letsencrypt/live/siem.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/siem.example.com/privkey.pem;
client_max_body_size 100M;
location / {
proxy_pass http://127.0.0.1:443;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
SSL: Let’s Encrypt certbot. Альтернатива — Caddy с auto-HTTPS.
Первоначальная настройка Wazuh
docker compose up -d- Откройте https://siem.example.com
- Создайте admin account
- Configure core settings
- Import/migrate existing data
- Test core workflow
Ключевые возможности Wazuh
| Функция | Описание |
|---|---|
| Core feature 1 | Primary Wazuh capability |
| Core feature 2 | Secondary workflow |
| Core feature 3 | Integration ready |
Полный контроль над мониторинга безопасности на VPS.
Расширенная конфигурация
| Параметр | Рекомендация |
|---|---|
| Memory | 2+ GB для production |
| Storage | SSD, monitor growth |
| Networking | Tailscale for admin |
Документируйте конфиг в Gitea.
Интеграции и workflows
| Интеграция | Применение |
|---|---|
| n8n | Automation |
| Gitea | GitOps deploy |
| Authentik | SSO login |
Единый VPS stack с Docker Compose.
API и автоматизация
curl -s https://siem.example.com/api/health
Связки:
- n8n — webhook automation
- Gitea — CI/CD deploy hooks
- Uptime Kuma — health checks
SSO и аутентификация
| Шаг | Действие |
|---|---|
| 1 | Authentik → OAuth2/OIDC provider |
| 2 | Configure OIDC client ID/secret в env |
| 3 | Redirect URI: https://siem.example.com/oauth/callback |
| 4 | Disable public registration |
Альтернатива — Tailscale mesh-only access без публичного exposure.
Backup и disaster recovery
| Что бэкапить | Как | Частота |
|---|---|---|
| wazuh data volume | tar/rsync | Daily |
| Database dump | pg_dump / mysqldump | Daily |
| docker-compose.yml + .env | git secret repo | On change |
#!/bin/bash
docker compose exec -T db pg_dump -U wazuh wazuh > /backup/wazuh-$(date +%F).sql
tar czf /backup/wazuh-data-$(date +%F).tar.gz ./data
Стратегия 3-2-1: local + Restic offsite. Тест restore на staging VPS раз в квартал.
Security hardening
| Пункт | Реализация |
|---|---|
| HTTPS only | Nginx redirect 80→443 |
| Strong auth | OIDC / local admin |
| Rate limiting | Nginx limit_req |
| CrowdSec | Bouncer на Nginx |
| Updates | docker compose pull monthly |
| Tailscale | Private admin access |
Не публикуйте Wazuh без аутентификации в production.
Мониторинг
- Uptime — Uptime Kuma ping
https://siem.example.com - Logs —
docker compose logs -f wazuh - Disk — alert при 80% usage
- DB — connection pool, slow queries
- ntfy — push alerts on downtime
Performance tuning
- Upgrade RAM при OOM или slow response
- PostgreSQL tuning:
shared_buffers,work_mem - Nginx gzip + cache static assets
- Redis cache layer если поддерживается
- Horizontal scale — второй VPS + load balancer (advanced)
Миграция с SaaS-альтернатив
| Источник | Метод |
|---|---|
| Cloud SaaS | Export data → import в Wazuh |
| Self-hosted legacy | Docker volume migration |
| Manual | API bulk import scripts |
Планируйте downtime window и verify data integrity после миграции.
Интеграция с экосистемой
| Сервис | Связка |
|---|---|
| Docker Compose | Unified VPS stack |
| Authentik | SSO для всех сервисов |
| Immich | Media complement |
| Gitea | Git + CI integration |
| CrowdSec | Shared security layer |
Единый VPS — Wazuh + Nginx + SSL + backup.
Troubleshooting
| Проблема | Решение |
|---|---|
| 502 Bad Gateway | Container down, docker compose ps |
| 413 Entity Too Large | Nginx client_max_body_size |
| DB connection error | Check credentials, healthcheck |
| Login loop | X-Forwarded-Proto header |
| SSO redirect fail | OIDC redirect URI exact match |
| Slow performance | Upgrade RAM, check DB indexes |
| SSL certificate error | Certbot renew |
| OOM killed | Increase RAM or reduce workers |
| Import fails | Check file encoding UTF-8 |
| API 401/403 | Token scope, CORS settings |
Связка с экосистемой Storm
- Reverse proxy — Nginx vs Caddy
- SSO — Authentik
- Защита — CrowdSec
- VPN — Tailscale
- Docker — Docker Compose patterns
- Backup — 3-2-1 rule
Итог
Wazuh на VPS — production-ready self-hosted решение для мониторинга безопасности. Setup за день, полный контроль данных.
VPS от 2 GB — StormNet Cloud. SSL — Let’s Encrypt. Backup — 3-2-1. Security — CrowdSec.
Рекомендуем прочитать
- CrowdSec на VPS: коллективная защита от атак
- OpenSearch на VPS: централизованные логи и полнотекстовый поиск
- Loki на VPS: централизованные логи с Grafana
- Fail2ban на VPS: защита от брутфорса SSH и веб-атак
- Как защитить VPS от взлома: чек-лист безопасности 2026
- Grafana и Prometheus на VPS: мониторинг сервера
Частые вопросы
Wazuh или ELK/OpenSearch для безопасности?
Wazuh — SIEM + IDS из коробки, агенты, compliance. OpenSearch — гибкий log search. Для security monitoring VPS — Wazuh.
Сколько RAM нужно Wazuh на VPS?
Минимум 4 GB для manager + indexer. 8 GB для production с несколькими агентами и retention.






