Documentation : https://docs.bunkerweb.io/1.6.10~rc4/
Docker tags :
- All-in-one :
bunkerity/bunkerweb-all-in-one:1.6.10-rc4orghcr.io/bunkerity/bunkerweb-all-in-one:1.6.10-rc4 - BunkerWeb :
bunkerity/bunkerweb:1.6.10-rc4orghcr.io/bunkerity/bunkerweb:1.6.10-rc4 - Scheduler :
bunkerity/bunkerweb-scheduler:1.6.10-rc4orghcr.io/bunkerity/bunkerweb-scheduler:1.6.10-rc4 - Autoconf :
bunkerity/bunkerweb-autoconf:1.6.10-rc4orghcr.io/bunkerity/bunkerweb-autoconf:1.6.10-rc4 - UI :
bunkerity/bunkerweb-ui:1.6.10-rc4orghcr.io/bunkerity/bunkerweb-ui:1.6.10-rc4 - API :
bunkerity/bunkerweb-api:1.6.10-rc4orghcr.io/bunkerity/bunkerweb-api:1.6.10-rc4
Linux packages : https://packagecloud.io/app/bunkerity/bunkerweb/search?q=1.6.10~rc4&filter=all&dist=
Changelog :
- [SECURITY] Harden AIO log wrapper: strip C0/C1 control chars from service output to prevent terminal injection in
docker logs, disable pathname expansion aroundHIDE_SERVICE_LOGSword splitting, and reject..path-traversal segments inLOG_FILE_PATHvalidation. - [SECURITY] Harden the AIO
logstream.shnginx/ModSecurity log forwarder with the same C0/DEL control-character strip asservice-log-wrapper.sh, so attacker-controlledaccess.log/error.log/modsec_audit.logcontent cannot inject ANSI/CSI/OSC escape sequences intodocker logsoutput. - [SECURITY]
errors: honorDENY_HTTP_STATUS=444on/bwerror*handlers — close the connection instead of serving the branded BunkerWeb error page. (Fixes #3448) - [BUGFIX] Throttle repeated Redis-failure logs in
metrics,sessions, andbadbehaviortimer hooks: errors of the same kind now log once then recap with a count at 60s window boundaries instead of flooding the error log on every tick. - [BUGFIX] Add multisite
SESSIONS_DOMAINsetting (default empty) that emits aDomainattribute on the session cookie per server, allowing antibot/challenge state to be shared across sibling subdomains of the same registrable domain. (Fixes #3415) - [BUGFIX] Web UI: launch
tmp-gunicornwithenv -u LOG_FILE_PATHso the bootstrap UI falls back to its owntmp-ui.loginstead of colliding with the main UI'sui.log. - [BUGFIX] Fix
securitytxtRFC 9116 compliance: populate the defaultCanonical:URL (washttps:///.well-known/security.txt), emitExpires:as UTC with a trailingZ, rename the field toAcknowledgments:, and cache the auto-generated expiry per server so the served file is byte-stable across requests. - [BUGFIX] Fix
DATABASE_URIdriver injection corrupting hostnames when the host matches the scheme name (e.g.postgresql://u:p@postgresql:5432/db). Use SQLAlchemy'smake_url+URL.set(drivername=...)instead ofstr.replaceso only the scheme is rewritten. (Fixes #3438) - [BUGFIX]
badbehavior: don't increment the counter for already-banned IPs. Log phase fast-paths onctx.bw.is_banned; timer phase re-checksis_banned()authoritatively (Redis reachable) before callingincrease(). (Fixes #3448) - [BUGFIX] Add
REVERSE_PROXY_MODSECURITYmultisite setting (defaultyes) that emitsmodsecurity off;in the per-URL reverse-proxylocationblock when set tono, working around the ModSecurity-nginx connector's full-body buffering that causes OOM on large uploads. (Fixes #3154) - [FEATURE] Let's Encrypt: new
LETS_ENCRYPT_MAX_LOG_BACKUPSglobal setting (default50) caps certbot's own log rotation via--max-log-backups, preventing the default 1000-file pile-up in every integration mode. - [ALL-IN-ONE] Python services (UI, API, scheduler, autoconf) now log to the container's stdout/stderr only.
service-log-wrapper.shprefixes each line with[SERVICE], strips control characters, and honorsHIDE_SERVICE_LOGS; no on-disk files are written. Retention is managed by the container logging driver (docker logs,journald, ...). - [UI] Fix "Blocked Requests by Country" map: an off-by-one in
getColor()plus an HSL-ramp clip to#000collapsed every populated country to the same color. - [UI] Add import/export for custom configurations, with an opt-in
.zipbundle that lets a service export include its attached custom configurations and re-import them in one shot. - [AUTOCONF] Fix Kubernetes ingress rules being silently dropped and never recovering when a backend Service isn't visible to a GET at apply time (apiserver watch-vs-GET race seen on AKS). A background worker retries missing backends with exponential backoff and re-triggers the apply once they appear.
- [AUTOCONF] Relax the empty
SERVER_NAMEguard inDatabase.save_configforautoconf: if every existing service is autoconf/scheduler-owned, treat the empty list as a legitimate full-teardown and clear the services instead of aborting. Mixed-ownership DBs still abort. - [AUTOCONF] Add
AUTOCONF_DISABLE_CLEANUP(defaultno): convert services removed from the orchestrator to draft instead of deleting them, and let the Web UI delete drafted autoconf services. - [CONTRIBUTION] Thank you @harshadkhetpal for your contribution regarding exception handling in the
autoconfentrypoint. (#3421) - [CONTRIBUTION] Thank you @Simonmiz for your contribution regarding the
Germantranslation of the web UI. (#3422) - [CONTRIBUTION] Thank you @daemon-byte for your contribution adding the Cap.js self-hosted proof-of-work antibot mode. (#3454)