-
Notifications
You must be signed in to change notification settings - Fork 0
Troubleshooting
Paco5687 edited this page Jul 13, 2026
·
1 revision
-
Is the log path right and readable? Check
paths.access_log(or yourlog_sourcesentries). secwatch must be able to read the file. The dashboard's Log sources card shows a live/idle dot and a line count per source — an idle source with 0 lines usually means a wrong path or a permissions problem. -
Right format? A
traefikparser won't read annginxlog. Use Scan for logs (it sniffs the format for you) or setlog_source.typecorrectly. - Edge-silence alert firing? That means the log stopped advancing — the proxy is down, or access logging was turned off.
-
Check the actuator.
ban.actuator: noneonly alerts.nftables/nginxneed root.traefikneedsproxy.bans_filepointing at a directory Traefik loads. -
Traefik + HTTPS: secwatch writes both a
weband awebsecure(TLS) ban router — if you templated your own, remember a Traefik router is TLS or non-TLS, so you need one of each. -
Shared-edge exemption: IPs in
ban.exempt_nets(e.g. Cloudflare) are never banned by design — banning one would block every visitor behind that edge.
- Widen
network.trusted_netsto include the host, and/or unban it from the dashboard. Keep trusted nets narrow otherwise (see Detection and Bans). - If internal false-positives are the issue, ensure
autoban_private: false(the default) so LAN anomalies alert without auto-banning.
- The password is stored only as a hash — if you've lost it, re-run
python -m secwatch.install(or regenerateauth.password_hash). - Too many failed logins triggers a short lockout per source IP; wait it out.
- Behind a proxy that should bypass login? Confirm the proxy's source is in
auth.trust_proxy_from.
- CVE scanning needs Docker reachable by secwatch. Without it, scanning idles.
- The first scan runs after a startup delay; give it a few minutes.
- Verify
llm.base_urlis reachable from the secwatch host and themodelname exists on that endpoint. For remote APIs, set the API key (SECWATCH_LLM_API_KEY). It's optional — disable withllm.enabled: false.
- Restart secwatch (
systemctl restart secwatch). YAML changes are read at start. Exception: log sources added from the dashboard apply live, no restart.
-
Logs:
journalctl -u secwatch -f(or--userfor a user unit). -
Health:
curl http://localhost:PORT/api/healthreports the self-check (database, disk, KEV freshness, ban actuator, edge liveness). - Still stuck? Open an issue — include your format/actuator and a redacted sample log line. Please don't post third-party exploit details.