fail2ban only expands glob logpath at startup, so proxy-host-2_access.log and later files are never monitored until a manual reload. Adds logwatch.sh (supervisord-managed) that polls /nginx-logs every 30s and runs fail2ban-client reload whenever a new proxy-host-*_access.log is detected. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
68 lines
2.3 KiB
Plaintext
68 lines
2.3 KiB
Plaintext
# ── supervisord configuration for F2B Control Center ─────────────────────────
|
|
# Manages two processes inside the container:
|
|
# 1. fail2ban — the banning daemon (starts first)
|
|
# 2. dashboard — the Node.js web interface
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
|
|
[supervisord]
|
|
nodaemon=true
|
|
logfile=/dev/null
|
|
logfile_maxbytes=0
|
|
pidfile=/var/run/supervisord.pid
|
|
loglevel=info
|
|
|
|
[unix_http_server]
|
|
file=/var/run/supervisor.sock
|
|
chmod=0700
|
|
|
|
[supervisorctl]
|
|
serverurl=unix:///var/run/supervisor.sock
|
|
|
|
[rpcinterface:supervisor]
|
|
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
|
|
|
|
# ── fail2ban ──────────────────────────────────────────────────────────────────
|
|
[program:fail2ban]
|
|
command=/usr/bin/fail2ban-server -xf start
|
|
autostart=true
|
|
autorestart=true
|
|
startretries=3
|
|
startsecs=3
|
|
stopwaitsecs=10
|
|
# -x: remove stale socket before starting
|
|
# -f: run in foreground (required for supervisor)
|
|
stdout_logfile=/dev/stdout
|
|
stdout_logfile_maxbytes=0
|
|
stderr_logfile=/dev/stderr
|
|
stderr_logfile_maxbytes=0
|
|
priority=10
|
|
|
|
# ── log watcher ───────────────────────────────────────────────────────────────
|
|
[program:logwatch]
|
|
command=/logwatch.sh
|
|
autostart=true
|
|
autorestart=true
|
|
startretries=3
|
|
startsecs=5
|
|
stdout_logfile=/dev/stdout
|
|
stdout_logfile_maxbytes=0
|
|
stderr_logfile=/dev/stderr
|
|
stderr_logfile_maxbytes=0
|
|
priority=15
|
|
|
|
# ── dashboard ─────────────────────────────────────────────────────────────────
|
|
[program:dashboard]
|
|
command=/usr/local/bin/node /app/server.js
|
|
directory=/app
|
|
autostart=true
|
|
autorestart=true
|
|
startretries=5
|
|
startsecs=3
|
|
stopwaitsecs=10
|
|
stdout_logfile=/dev/stdout
|
|
stdout_logfile_maxbytes=0
|
|
stderr_logfile=/dev/stderr
|
|
stderr_logfile_maxbytes=0
|
|
priority=20
|
|
environment=NODE_ENV="production"
|