- [FEATURE] Implement IP whitelisting checks in badbehavior module to avoid banning whitelisted IPs
- [FEATURE] Enhance default server configuration: when IP is whitelisted, serve the "nothing to see here" page even if the default server is deactivated.
- [BUGFIX] Fix default rate limit for POST /auth endpoint with API service
- [BUGFIX] Fix instant ban when using bad behavior with redis if the ban time is set to 0 (permanent ban)
- [BUGFIX] Fix "no memory" errors on metrics
- [LINUX] Enhance Easy Install script with manager and worker mode configurations
- [UI] Enhance bad behavior logging and UI actions with additional fields and filtering capabilities
- [UI] Optimize the reports page export functionality for large datasets by implementing server-side processing to handle data exports in manageable chunks, reducing memory usage and improving performance.
- [CONTRIBUTION] Thank you @Marvo2011 for your contribution to the
Let's Encryptplugin by helping the implementation of the newPowerdnsDNS provider
- [BUGFIX] Fix
Let's Encryptwildcard certificate serving when usingwildcardmode in multisite setups and the root domain is a part of theSERVER_NAMEsetting of the service. - [BUGFIX] Fix duplicated id error with ModSecurity rules when two services have the
USE_UIsetting enabled and theUSE_MODSECURITY_GLOBAL_CRSsetting enabled as well. - [BUGFIX] Ensure the
Limitplugin ignores global rules whenUSE_LIMIT_REQis disabled globally so service-specific configs do not get throttled unintentionally. - [BUGFIX] Ensure HTTP/3 works with the HTTP3 plugin by adding conditional reuseport to QUIC listen directives on the default HTTPS server.
- [FEATURE] Start monitoring
405and400http status codes in the requests to be able to see them in the reports page. - [FEATURE] Refactored
Auth Basicauthentication implementation to enhance security and maintainability by switching password hashing to bcrypt. - [UI] Update DataTable initialization to automatically enable state saving for improved user experience.
- [LINUX] Support RHEL 9.7 instead of 9.6
- [LINUX] Support RHEL 10.1 instead of 10.0
- [DOCS] Add live status updates link to README and documentation in multiple languages.
- [DOCS] Fix PDF generation to generate it in english.
- [DOCS] Add documentation about how to setup BunkerWeb as a sidecar in Kubernetes.
- [BUGFIX] Update logrotate config to use the right chown when creating the folders/files.
- [FEATURE] Refactor
Let's Encryptmail handling: validate the configured email and warn if missing/invalid. Use normal registration when valid; otherwise add --register-unsafely-without-email to Certbot and log that choice. - [FEATURE] Add
DuckDNSas a DNS provider in theletsencryptplugin - [FEATURE] Add
AUTH_BASIC_ROUNDSsetting to theauthbasicplugin to configure password hashing strength (default: 656000, range: 1000-999999999). - [FEATURE] Add new
APItemplate to easily protect the API service using BunkerWeb. - [FEATURE] Add new
ANTIBOT_IGNORE_COUNTRYandANTIBOT_ONLY_COUNTRYto theAntibotplugin for country-based challenge prompting/bypassing. - [FEATURE] Add new
mtlsplugin for mutual TLS client certificate authentication, allowing services to require and verify client certificates against trusted CA bundles with configurable verification modes, chain depth control, and optional header forwarding for downstream authorization. - [AUTOCONF] Implement event debouncing in Docker, Ingress, and Swarm controllers for improved configuration management
- [UI] Fix confirmation message not showing the right value when removing cache files on the file cache page.
- [UI] Fix filtering on the
Let's Encryptcustom page - [UI] Update CSS to fix truncated text in specific lang on the menu
- [MISC] Update regex for
MODSECURITY_REQ_BODY_NO_FILES_LIMITsetting to support human readable values. - [MISC] Update default value for Permissions-Policy header to include additional features (
private-state-token-issuanceandprivate-state-token-redemption). - [DEPS] Update coreruleset-v4 version to v4.20.0
- [DEPS] Updated luajit2 version to v2.1-20251030
- [DEPS] Updated lua-resty-core version to v0.1.32
- [DEPS] Updated lua-nginx-module version to v0.10.29
- [DEPS] Updated stream-lua-nginx-module version to v0.0.17
- [DEPS] Update lua-resty-openssl version to v1.7.0
- [BUGFIX] Update BunkerWeb integration to use dedicated CrowdSec collection so that CrowdSec now works with the log format used by BunkerWeb.
- [FEATURE] Enhance plugin update process with per-plugin commit option and improved error handling
- [FEATURE] Add retry operation in case of memory failure for metrics linked to the
METRICS_MEMORY_MAX_RETRIES. - [FEATURE] Refactor wildcard certificate handling in certbot and letsencrypt plugin to improve reliability, performance and user experience
- [FEATURE] Allow edition of API settings in the web UI and of UI settings from the API
- [UI] Add DB-IP attribution in the web UI reports page footer
- [UI] Add
RAWmode when editing/creating templates - [UI] Enhanced the raw configuration editor with disabled settings highlighting and improved UI elements.
- [UI] Implemented Ctrl+S / Command+S shortcuts for saving RAW global config / services / custom configurations.
- [UI] Refactor threading to use a shared ThreadPoolExecutor for configuration tasks across routes, preventing gradual RAM growth over time
- [UI] Fix UX issue when a flash message was too big we couldn't remove it.
- [ALL-IN-ONE] Add Redis data directory creation in entrypoint script to fix redis not being able to start
- [ALL-IN-ONE] Update CrowdSec version to 1.7.3
- [API] fix API authorization to correctly handle root path prefixes in Biscuit guards
- [AUTOCONF] Allow ConfigMap of type "settings" to be applied to services easier.
- [AUTOCONF] Add the possibility to ignore services with a specific annotations when using the Kubernetes integration
- [DOCS] Add documentation for persistent data storage in the all-in-one image
- [DOCS] Add database compatibility matrix.
- [DEPS] Updated lua-cjson version to v2.1.0.15
- [DEPS] Update Mbed TLS version to v3.6.5
- [BUGFIX] Fix wildcard certification handling when not using the MULTISITE mode in
Let's Encryptplugin - [BUGFIX] Fix suffix handling in
Databasemodule when dealing with template settings to ensure proper management of settings without suffixes - [FEATURE] Add the possibility use HTTPS with BunkerWeb's internal API
- [FEATURE] Add reason data for bad behavior bans/reports
- [FEATURE] Add session retention configuration via the
DATABASE_MAX_SESSION_AGE_DAYSsetting in theDatabaseplugin and automatic cleanup job to purge old UI user sessions from the database - [API] Introduce a dedicated control‑plane service exposing a REST API to programmatically manage BunkerWeb: list/register instances, trigger reload/stop, and manage bans, plugins, jobs, and configurations.
- [UI] Tweak the bad behavior details to look nice in the report page
- [UI] Prevent renaming of template-based custom configs in update and edit functions for consistency
- [UI] Fix template config not being editable in service easy mode
- [UI] Introduce a
Templatesmanagement page to create, edit, clone and delete service templates. - [UI] Add new
Templatecolumn in the services page to display the template a service is based on (if any) and allow filtering by template. - [MISC] Update default value for Permissions-Policy header to include additional features and remove the deprecated ones
- [DOCS] Add multi-language support to the documentation, including French, German, Spanish and Chinese (Mandarin) translations.
- [DOCS] Add documentation about the possibility to extend bwcli via plugins commands
- [DOCS] Add Docker logging best practices to advanced documentation
- [DEPS] Updated luajit2 version to v2.1-20250826
- [DEPS] Update coreruleset-v4 version to v4.19.0
- [CONTRIBUTION] Thank you Arakmar for your contribution regarding the
Let's Encryptplugin. - [CONTRIBUTION] Thank you tomkolp for your contribution regarding the
Polishtranslation of the web UI.
- [BUGFIX] Fix lua session handling when using redis
- [BUGFIX] Fix ctx error at startup with
DNSBLplugin - [FEATURE] Introduce optional API token authentication to bolster security for BunkerWeb API calls, allowing users to enable token-based access control for enhanced protection against unauthorized requests
- [FEATURE] Add the possibility to ignore IPs in
DNSBLplugin - [LINUX] Improve nginx stop and reload handling in BunkerWeb service to use the pid file instead of the
pgrepcommand - [UI] Fix incorrect key used when viewing service details
- [UI] Fix 403 when changing IP address
- [UI] Add the possibility to quickly ban IP addresses from the reports page
- [UI] Fix date sorting in bans and reports pages
- [UI] Add ipaddr.js library for robust IP address validation
- [MISC] Update new
reloadinghealth status for BunkerWeb when NGINX is reloading and handle it in it's healthcheck file - [MISC] Automatically minify UI CSS files in Images/Packages build process
- [MISC] Add LRU eviction fallback to avoid no memory errors
- [DEPS] Update lua-resty-openssl version to v1.6.4
- [BUGFIX] Enhance database backup and restore functionality with improved compatibility and options
- [FEATURE] Add support for new reCAPTCHA version in
Antibotplugin - [ALL-IN-ONE] Update CrowdSec version to 1.7.0
- [ALL-IN-ONE] Add support for disabling specific CrowdSec parsers
- [UI] Fix occasional rate limiting when using the web UI by increasing the base limit in its template
- [UI] Fix status code filtering in reports page
- [UI] Fix IPs charts in home page to accurately reflect data
- [MISC] Automatically minify loading, errors and antibot HTML files in Images/Packages build process
- [DEPS] Update lua-resty-session version to v4.1.4
- [DEPS] Update lua-resty-openssl version to v1.6.3
- [DEPS] Update coreruleset-v4 version to v4.18.0
- [SECURITY] Enforce restrictive umask across scripts and configurations for improved security
- [FEATURE] Enhance update-check job to utilize cached GitHub release data and improve error handling
- [BUGFIX] Update default algorithm for Let's Encrypt's
RFC2136DNS provider from HMAC-SHA512 to HMAC-MD5 - [BUGFIX] Fix issue with loading environment variables in the
robotstxtplugin - [LINUX] Add upgrade capability to the easy-install script for seamless in-place updates
- [LINUX] Fix logrotation of certbot logs, they know gets automatically deleted after 7 days
- [UI] Always display all multiple settings to avoid confusion
- [UI] Update step navigation buttons to use visually-hidden class for better accessibility
- [UI] Fixed an issue where certain settings were reset when editing a service based on a template
- [UI] Fixed an issue where non-template custom configurations were removed when editing a service using a template
- [UI] Add Free Trial promotion card to pro.html for non-pro users
- [UI] Add Force update button on PRO page to force the download of PRO plugins without checking for updates.
- [SECURITY] Fix open-redirection vulnerability in the Web UI regarding the
nextparameter in the loading process (CVE-2025-8066). - [FEATURE] Enhance
ModSecurityplugin to support human-readable size values for request body limits (requests without files) - [BUGFIX] Fix limit zones for HTTP/3 connections in
limitconn.confto ensure proper connection limiting for HTTP/3 requests. - [LINUX] Support RHEL 10.0
- [LINUX] Support Debian 13 (Trixie)
- [BUGFIX] Fix connection error shenanigans regarding the
Let's Encryptplugin when generating wildcard domains by adding the--expandflag to the certbot command. - [BUGFIX] Fix errors with
PostgreSQLdatabase, ensuring that suffixes are stored as integers for consistency. - [FEATURE] Enhance
Redirectplugin to support multiple source/destination paths - [FEATURE] Enhance
AntibotCAPTCHA functionality with customizable character set via theANTIBOT_CAPTCHA_ALPHABETsetting, allowing users to define a custom alphabet for CAPTCHA generation. - [UI] Always display the selected service and selected type when editing/creating a custom configuration
- [UI] Add global configuration fetching functionality to easy mode
- [UI] Fix metrics retrieval in the web UI to ensure that metrics are correctly displayed and updated
- [UI] Fix 500 error with TMP-UI fallback
- [LINUX] Add installation type to the post-install script to allow users to choose among
all-in-one(Full installation),manager(Scheduler and UI),worker(BunkerWeb only),scheduler(Scheduler only), andui(UI only) installation types. - [ALL-IN-ONE] In entrypoint script, create redis directory if it does not exist to avoid issues with Redis not starting properly.
- [DEPS] Update coreruleset-v4 version to v4.17.1
- [CONTRIBUTION] Thank you Arakmar for your contribution regarding the web UI's
reportspage.
- [BUGFIX] Fix HTTP/3 not working on default server as the
reuseportdirective was missing in thedefault-server-http.conffile. - [UI] Fix missing settings when cloning a service in the web UI
- [FEATURE] Add the possibility to add headers and a footers to the
robots.txtfile using theROBOTSTXT_HEADERandROBOTSTXT_FOOTERsettings. (Can be Base64 encoded) - [FEATURE] Add
domainoffensive.deas a DNS provider in theletsencryptplugin - [FEATURE] Add
Dynuas a DNS provider in theletsencryptplugin - [FEATURE] Add a reason when a request is rate-limited in the
Rate Limitingplugin, allowing users to understand why their request was blocked. - [UI] De-duplicate metrics about requests on the home page to avoid counting the same request multiple times
- [UI] Enhance plugin filtering to avoid two plugins being displayed at the same time when filtering by name
- [UI] Enhance keywords search in the settings UI to make it more intuitive and user-friendly
- [DEPS] Update lua-resty-session version to v4.1.3
- [DEPS] Update lua-resty-redis version to v0.33
- [CONTRIBUTION] Thank you Michal-Koeckeis-Fresel for your contribution to the
Let's Encryptplugin. - [CONTRIBUTION] Thank you killmasta93 for your contribution regarding the integrations examples.
- [BUGFIX] Fix errors with the
Custom SSL certificatejob when a lot of environment variables are set in the scheduler. - [BUGFIX] Fix shenanigans regarding external/PRO plugins in Linux integration.
- [FEATURE] Update Laurent Minne's blacklist URL to the new one: https://github.com/duggytuxy/Data-Shield_IPv4_Blocklist
- [UI] Add PRO activation step in the setup wizard to allow users to activate the PRO version during the initial setup.
- [UI] Simplify configuration step in setup wizard by adding a new
Advanced settingssection to allow users to configure advanced settings likeSERVER_NAME, and theLet's Encryptplugin. - [UI] Add a new alias to the
TOTP_SECRETSenvironment variable:TOTP_ENCRYPTION_KEYSto make more sense in the context of the TOTP feature. - [UI] Add a force recheck PRO plugins button in the web UI to allow users to force a recheck of the PRO plugins status.
- [LINUX] Add CrowdSec automatic installation/configuration in the easy-install script for Linux distributions.
- [ALL-IN-ONE] Update CrowdSec to version v1.6.11.
- [BUGFIX] Update scheduler environment variables handling to avoid issues when there are too many environment variables set.
- [BUGFIX] Fix
Let's Encryptcredential files being removed upon reload of the scheduler creating issues with the certificate renewal. - [BUGFIX] Change
BAD_BEHAVIOR_BAN_SCOPEsetting context frommultisitetoglobal. - [BUGFIX] Update template data handling to use template_data instead of template when updating external plugins.
- [BUGFIX] Fix unban functionality to correctly handle global bans in the web UI.
- [FEATURE] Add
BunnyNetas a DNS provider in theletsencryptplugin - [FEATURE] Add new
robotstxtplugin to manage the robots.txt file from settings and serve it - [UI] Fix shenanigans when fetching the latest version in the web UI.
- [UI] Fix the fact that the "global" choice wasn't categorized as is in the web UI when editing a custom configuration.
- [UI] Fix multivalue toggle button functionality and transition effects
- [UI] Enhance ModSecurity Reporting: Add Anomaly Score Handling
- [UI] Improve multiple setting handling in plugin settings template for better UI interaction (always show the first group, hide others by default)
- [DOCS] Update error handling documentation to clarify custom error page placement and ROOT_FOLDER settings.
- [MISC] Enhance plugin command execution with error handling and available commands listing
- [MISC] Streamline ban management by utilizing utility functions for adding and removing bans
- [MISC] Reorder session data retrieval in antibot access method for improved clarity and flow
- [LINUX] Drop support of Fedora 40
- [DEPS] Updated NGINX version to 1.28.0 for Fedora integration now that it is available in the repositories.
- [SECURITY] Introduce ModSecurity exclusion rules targeting the password input upon login, preventing false-positive blocks on valid complex passwords while preserving strict overall request inspection.
- [SECURITY] Add new ModSecurity exclusion rule to prevent false positives on the
/instances/newendpoint, specifically for thehostnameargument, ensuring that legitimate requests are not blocked while maintaining security. - [FEATURE] Refactor download scripts to canonicalize and deduplicate URLs before fetching and implement smarter cache management for improved efficiency
- [FEATURE] Implement Redis-backed metrics storage and optimize retrieval workflows for faster, more reliable performance
- [FEATURE] Add support for custom Let's Encrypt profiles and log profile changes during renewal
- [ALL-IN-ONE] Update CrowdSec to version v1.6.9
- [UI] Add "Go Back" button functionality in unauthorized page
- [UI] Improve dynamic translation handling and update chart rendering on theme and language changes
- [UI] Add an optional /healthcheck endpoint to the web UI for health monitoring, which can be enabled via the
ENABLE_HEALTHCHECKsetting (default isno) - [UI] Enhance log file handling and display Let's Encrypt logs
- [DOCS] Add documentation about Valkey support alongside Redis for data persistence and caching in BunkerWeb
- [MISC] Enhance logging to differentiate between allowed and denied access based on whitelist status
- [DEPS] Update coreruleset-v4 version to v4.16.0
- [DEPS] Update Mbed TLS version to v3.6.4
- [DEPS] Update Ace editor version to 1.43.1
- [DEPS] Update i18next version to v25.3.0
- [DEPS] Update i18next browser languageDetector extension version to v8.2.0
- [DEPS] Update DOMPurify version to 3.2.6
- [DEPS] Update ApexCharts.js version to v4.7.0
- [BUGFIX] Add a conditional
proxy_hide_headerrule for theUpgradeheader to preserve WebSocket connections in theReverse Proxyplugin, preventing issues with WebSocket connections when theREVERSE_PROXY_HIDE_HEADERSsetting is used. - [BUGFIX] Correct the Logs page copy-to-clipboard button so it reliably copies selected log entries.
- [BUGFIX] Fix issues with database backup when using MySQL and MariaDB if the database's size is larger than 1GB, ensuring that the backup process can handle larger databases without errors.
- [FEATURE] Introduce a new
numbersetting type with built-in numeric validation and enhanced rendering in the web UI. - [FEATURE] Introduce a new
multivaluesetting type with customizable separator and validation, enhancing user experience for multi-value inputs in the web UI. - [MISC] Switch the
Bad Behaviorplugin to use the new numericBAD_BEHAVIOR_BAN_TIMEsetting by updating the permanent ban value from-1to0. - [CONTRIBUTION] Thank you @Michal-Koeckeis-Fresel for the optimizations regarding the web UI fonts and geoip data loading, which significantly improves the performance of the web UI and the new dhparam file to respect the latest security standards.
- [BUGFIX] Ensure template defaults settings are correctly retrieved by jobs and templates.
- [BUGFIX] No longer completely delete all PRO plugins data upon PRO deactivation, allowing for easier reactivation without losing data.
- [BUGFIX] Enhance cache robustness by using dict.get() for lookups to avoid KeyError exceptions during cache operations.
- [SECURITY] Make sure the files/dirs in /usr/share/bunkerweb have the appropriate permissions to prevent unauthorized access to sensitive files on Linux integration
- [BUGFIX] Ensure jobs correctly retrieve multisite settings when a service uses its default value while the global setting is overridden, preventing configuration mismatches.
- [FEATURE] Add new
LETS_ENCRYPT_PASSTHROUGHsetting to theLet's Encryptplugin to allow passing through the Let's Encrypt challenge requests to the upstream server (default isno) - [UI] Fix i18n shenanigans in services page and in dataTables
- [UI] Fix plugins delete button not working
- [LINUX] Make sure that the NGINX service is disabled every time in the post-install script to avoid issues with the NGINX service being started when it shouldn't be
- [SECURITY] Refactor permissions in BunkerWeb files to ensure that only the necessary files are readable/writable/executable by the user running the service, enhancing security and preventing unauthorized access to sensitive files.
- [FEATURE] Introduce
multiselectsetting type, enabling users to choose multiple options from a configurable list - [FEATURE] Add new
BLACKLIST_COMMUNITY_LISTSsetting to theblacklistplugin, allowing users to choose which community blocklists to use for blacklisting - [FEATURE] Add new
REVERSE_PROXY_HIDE_HEADERSsetting to theReverse Proxyplugin, allowing users to specify a list of HTTP headers to hide from clients when received from the proxied resource (values for proxy_hide_header directive). - [MISC] Greatly improve scheduler's performance by optimizing the way it handles environment variables and settings, reducing the number of database queries and improving overall efficiency
- [MISC] Optimize variable loading during the init phase to improve startup performance
- [DEPS] Update coreruleset-v4 version to v4.15.0
- [DEPS] Update lua-resty-session version to 4.1.2
- [DEPS] Update LuaJIT version to v2.1-20250529
- [CONTRIBUTION] Thank you @Ablablab for your contribution to the
Headersplugin - [CONTRIBUTION] Thank you @sachin-vcs for your contribution to the
Let's Encryptplugin by helping the implementation of the newNjallaDNS provider
- [BUGFIX] Refactor CLI command handling to support additional arguments
- [DOCS] Update the documentation about the
all-in-oneimage to include the new features and improvements, also move it to its own section - [FEATURE] Add request ID to error pages, logs and display it in UI reports for easier tracking of issues
- [FEATURE] Add support for Docker secrets in all services
- [FEATURE] Add more data to ModSecurity reports
- [FEATURE] Add new
LETS_ENCRYPT_MAX_RETRIESsetting to theLet's Encryptplugin to configure how many times certificate generation should be retried with Let's Encrypt (default is 0, meaning no retries) - [ALL-IN-ONE] Fully integrate CrowdSec in the all-in-one image
- [ALL-IN-ONE] Fully integrate Redis in the all-in-one image (activated by default)
- [UI] Add clear notifications feature to both UI and backend for improved notification management
- [UI] Improve plugin navigation by displaying plugins as a vertical list on the left side of the card, replacing the dropdown combobox
- [UI] Display a small "enabled/disabled" icon next to each plugin name in the plugin sidebar and menu to indicate whether the plugin is active (e.g., show if Reverse Proxy is enabled)
- [UI] Update QR code generation to use PilImage and output JPEG format for improved compatibility
- [UI] Add a modal to update ban durations, with support for localization
- [UI] Add system memory usage monitoring to the home page dashboard for real-time insights
- [UI] Add a more robust system when showing reports and bans data to avoid potential XSS vulnerabilities
- [UI] Refactor the data display on the report page for a more user-friendly experience
- [UI] Add quick actions for bans back
- [UI] Enhance reset button visibility and tooltip handling across various settings templates
- [UI] Add the possibility to delete cache files
- [MISC] Refactor template rendering for improved performance and efficiency
- [LINUX] Provide an interactive installer script for BunkerWeb that guides users through setup options
- [DEPS] Updated NGINX version to 1.28.0 (except for Fedora as it is not yet available)
- [CONTRIBUTION] Thank you @lenglet-k for your contribution to the Ingress controller
- [CONTRIBUTION] Thank you @kovacs-andras for your contribution to the PRO urls in the documentation
- [CONTRIBUTION] Thank you @mevenG for your contribution to the README file
- [BUGFIX] Fix draft services deletion when editing the global config in the web UI
- [BUGFIX] Enhance the
Let's Encryptplugin's Cloudflare Provider with default values and validation for credentials to avoid having to set all of them all the time (api_tokenoremailandapi_key) - [BUGFIX] Remove settings form input sanitization as it was creating issues when saving settings in the web UI
- [BUGFIX] Exclude the RFC2136 DNS provider from the base64 encoding validation for credential items in the
letsencryptplugin to prevent issues with thesecretfield being detected as base64 encoded - [BUGFIX] Avoid redirecting clients when they match an ignore list item in
antibotplugin - [BUGFIX] Avoid always trying to regenerate a Let's Encrypt certificate that was using the staging production over and over at every restart
- [FEATURE] Add the possibility to choose a profile when generating certificates with Let's Encrypt using the
LETS_ENCRYPT_PROFILEsetting (classic(default),tlsserverfor server-only validation, andshortlivedfor reduced 7-day validity) to provide flexibility in certificate configuration based on security requirements - [FEATURE] Add the possibility to declare custom certificates and keys data as plaintext as well as base64-encoded data in the
customcertplugin using theCUSTOM_SSL_CERT_DATAandCUSTOM_SSL_KEY_DATAsettings - [FEATURE] Add
IONOSas a DNS provider in theletsencryptplugin - [FEATURE] Add
REVERSE_PROXY_UNDERSCORES_IN_HEADERSsetting to control if underscores in headers should be allowed or not in theReverse Proxyplugin (default isno) - [FEATURE] Add
LETS_ENCRYPT_CUSTOM_PROFILEsetting to allow setting a custom profile for theLet's Encryptplugin - [FEATURE] Add
LETS_ENCRYPT_DISABLE_PUBLIC_SUFFIXESsetting to allow disabling the public suffixes check in theLet's Encryptplugin (default isyes) - [FEATURE] Add permanent ban feature to
badbehaviorplugin, web UI and bwcli - [UI] Fix shenanigans when editing a service in easy mode
- [UI] Fix false positive with the newer CRS version (v4.13.0) on the web UI when fetching fonts
- [UI] Add reset functionality to settings with UI updates for input, checkbox, and select elements
- [UI] Fix LEDNS credential handling in setup wizard and reset button visibility in settings templates
- [UI] Update time formatting in requests chart to use 12-hour format in home page
- [UI] Introduce multi‑language support in the web UI:
ar,bn,en,es,fr,hi,pt,ru,ur,zh,de,it— covering the world’s top 10 and Europe’s top 5 languages. - [UI] Refactor TOTP Pretty key generation to avoid separating the parts with a
-character (this was causing issues with some QR code readers) - [UI] Add the possibility to manually delete Let's Encrypt certificates in the web UI
- [UI] Refactor bans management to process the data on the serverSide like done with the reports
- [UI] Update apexcharts.js to version 4.6.0
- [UI] Update ace editor to version 1.40.1
- [UI] Update DOMPurify to version 3.2.5
- [MISC] Add algorithm normalization for self-signed certificate generation to avoid regenerating the certificate if the algorithm is already the right one but the setting is not set to the same value
- [MISC] Refactor the way we fetch the entire config from the database to avoid issues with default values and multiple settings in the lua code
- [MISC] Add new container security using docker scout in CI/CD pipeline
- [MISC] Add warning for RHEL users regarding external database client installation and remove dependency on
mysqlandpostgresqlpackages in the RHEL fpm file (it was causing issues whenmariadbwas installed) - [AUTOCONF] (Re) Remove possible infinite loop in Kubernetes integration
- [UI] Integrate Biscuit authentication and key management
- [DEPS] Update coreruleset-v4 version to v4.14.0
- [DEPS] Update lua-resty-openssl version to v1.6.1
- [DEPS] Update lua-resty-session version to v4.1.1
- [LINUX] Support Fedora 42
- [CONTRIBUTION] Thank you @nimro27 for your contribution to the Ingress controller (#2141 and #2143)
- [CONTRIBUTION] Thank you @TomVivant for your contribution to the
letsencryptplugin (#2149) - [CONTRIBUTION] Thank you @wiseweb-works for your contribution to the
web UIby adding the Turkish language (#2204) - [CONTRIBUTION] Thank you @HongyiHank for your contribution to the
web UIby adding the Traditional Chinese language and double checking the Simplified Chinese language (#2226)
- [BUGFIX] Fix database migration issues when upgrading from older versions to v1.6.1-rc1 with a PostgreSQL database
- [BUGFIX] Fix shenanigans with templates in the web UI when editing/creating a service using the easy mode
- [BUGFIX] Improve database table existence checks and error handling in scripts to avoid errors when the LANG is not en_US.UTF-8
- [BUGFIX] Fix
Countryplugin regex to avoid false positives and deduplicate entries in the lua code - [BUGFIX] Fix
Let's Encryptclear old certificates logic to avoid deleting the wrong certificates - [DOCS] Enhance documentation about
all-in-oneimage - [DOCS] Refactor the settings documentation to make it more consistent and easier to read, it is now renamed to
Features - [FEATURE] Enhance
SSLplugin configuration with customizable cipher levelsmodern,intermediate, andoldfor better control over SSL/TLS settings and the ability to set a custom cipher list - [FEATURE] Add the possibility to ignore
URI,IP,reverse DNS,ASN, andUser-Agentin theAntibotplugin - [FEATURE] Add the possibility to configure the algorithm used when generating the
self-signedcertificate in theSelf-signed certificateplugin (default isec-prime256v1) - [FEATURE] Add
Infomaniakas a DNS provider in theletsencryptplugin - [MISC] Add the possibility to use the less secure
dns_cloudflare_emailanddns_cloudflare_api_keycredentials in theletsencryptplugin for Cloudflare DNS provider - [MISC] Update regex in the
Self-signed certificateplugin for subject validation so we don't have to always start with/CN= - [MISC] Update regex in the
Security.txtplugin to support both HTTP and HTTPS URLs and add an helper function to convert HTTP URLs to HTTPS - [MISC] Update regex in the
SSLplugin to support older HTTPS protocols - [MISC] Make the default certificate more secure by using the
secp384r1curve and thesha384hash algorithm instead of thesecp256r1curve and thesha256hash algorithm - [AUTOCONF] Remove possible infinite loop in Kubernetes integration
- [UI] The temporary web UI will now accept X-Forwarded-For headers to allow the use of a reverse proxy in front of it
- [UI] Persist DataTable page length in localStorage for consistent user experience.
- [UI] Fix 2FA setup page QR code not being scannable when using the dark mode
- [UI] Update latest stable release only if available to avoid unnecessary updates prompting
- [UI] Fix correct key retrieval for
Redismetrics - [UI] Enhance report data formatting and error handling in reports module
- [UI] Templates are now listed in an appropriate order in the web UI when creating a new service in easy mode (
low->medium->high->custom) - [UI] Refactor easy mode to improve the user experience and make it more intuitive
- [ALL-IN-ONE] Enhance supervisord configuration to ensure proper startup and shutdown of all services in the all-in-one image
- [ALL-IN-ONE] Improve logging mechanism in the all-in-one image to ensure that logs are properly captured and displayed
- [LINUX] Fix NGINX service not being disabled correctly in the post-install script
- [DEPS] Add lua-upstream-nginx-module
- [DEPS] Update lua-resty-redis version to v0.32
- [DEPS] Update ngx_devel_kit version to v0.3.4
- [DEPS] Update mbedtls version to v3.6.3
- [BUGFIX] Enhance Alembic configuration to support database URIs args
- [BUGFIX] Made
SERVER_NAMEsetting's regex more permissive (removed the duplication check) - [BUGFIX] Add selective table support in
Backupplugin to avoid issues when restoring the database - [DOCS] Document how to use BunkerWeb with and existing Ingress controller in Kubernetes
- [DOCS] Add documentation about new
all-in-oneimage for BunkerWeb in the Docker section of the Integrations page - [DOCS] Edit documentation about thew
User ManagerPRO plugin - [FEATURE] Add a new
all-in-oneimage for BunkerWeb that includes all the services in one image (BunkerWeb, Scheduler, Autoconf, and UI) - [FEATURE] Add
CrowdSecas a core plugin - [MISC] Improve update check output formatting for better readability
- [MISC] Enhance
Let's EncryptDNS credential handling to support base64-encoded values, while also refining credential item processing to handle escape sequences and improve data integrity. - [UI] Enhance ban handling with improved validation and informative responses for ban scope and service
- [UI] Improve plugin page template handling logic
- [UI] Add a failover message reporting
- [UI] Prevent interference with newsletter form checkbox click handler
- [BUGFIX] Fix issue where Redis Server returns a
NOPERMerror, ensuring proper handling and preventing 500 errors in the web UI - [FEATURE] Enhance ban management with service-specific options and UI improvements
- [FEATURE] Add
BAD_BEHAVIOR_BAN_SCOPEsetting to control the scope of the ban when using theBad Behaviorplugin (default isservice) - before the bans were global - [FEATURE] Add verbose logging option for certbot commands based on log level (when set to
DEBUG) - [FEATURE] Enhance
bwclirendering and added support for new service-specific ban options - [AUTOCONF] Add missing
redisdependency - [MISC] improve Redis data handling and error logging in CLI and routes
- [DEPS] Updated coreruleset-v4 version to v4.12.0
- [BUGFIX] Fix shenanigans with settings' plugin_id when updating the config
- [BUGFIX] Fix rare error where "python3" is not found in docker images
- [BUGFIX] Fix jobs runs excess cleanup method in Database
- [FEATURE] Add
PROXY_BUFFER_SIZEandPROXY_BUFFERSsettings to control the proxy buffer size and the number of buffers inmultisitemode - [UI] Introduced a visual label in the UI to clearly mark service settings that were cloned from the original.
- [UI] Added support for custom plugins: developers can now create hooks and blueprints to override existing functionalities, not just a plugin page.
- [DEPS] Updated ModSecurity version to v3.0.14
- [BUGFIX] Fix ModSecurity false positive on the web UI when the
UI_HOSTsetting contains an IP address - [BUGFIX] Fix ModSecurity false positive when the web UI
SERVER_NAMEis set to an IP address - [BUGFIX] Fix PRO activation not working in the web UI
- [BUGFIX] Fix log extraction was not working in the web UI when specific conditions were met (invalid UTF-8 characters)
- [BUGFIX] Fix database migration logic to handle
devandtestingversions - [BUGFIX] Fix web UI waiting for temporary web UI to stop indefinitely in some cases
- [FEATURE] Add
deSECDNS provider support inletsencryptplugin - [UI] Enhance UX here and there
- [UI] Add an instance hostname validation in the
instancespage when adding a new instance - [UI] It is now possible to edit services created with the
autoconfmethod - [UI] It is now possible to change the theme even if the database is in read-only mode
- [UI] Added an auto-hide functionality to informative messages in the UI
- [MISC] Update regex for
SERVER_NAMEto improve accuracy and avoid issues - [MISC] Revamped DNS credential validation to minimize configuration errors and enhance overall reliability.
- [BUGFIX] Fix CRS plugins not being included correctly in ModSecurity configuration
- [FEATURE] Add mCaptcha antibot mode
- [FEATURE] Add
USE_MODSECURITY_GLOBAL_CRSsetting to ModSecurity plugin to allow using the global CRS instead of the service CRS, which is useful to accelerate the configuration generation when you have a lot of services - [AUTOCONF] Increase retry limit and improve stability of Kubernetes watch stream
- [UI] Add caching for GitHub buttons to improve performance
- [UI] Fix shenanigans with multiples
- [DEPS] Updated NGINX version to 1.26.3
- [DEPS] Updated lua-resty-openssl version to 1.5.2
- [BUGFIX] Fix shenanigans with the configuration being wiped after a restart
- [BUGFIX] Fix shenanigans with cache files being deleted for no reason
- [BUGFIX] Refactor condition checks in Database class to avoid default value check when a multiple has a suffix so that it still saves important values
- [DOCKER] Update Dockerfiles to change user home directories and set shell to nologin for autoconf, scheduler, and ui users
- [DEPS] Updated coreruleset-v4 version to v4.11.0
- [FEATURE] Update BunkerNet's logic to send reports in bulk instead of one by one
- [AUTOCONF] Add the possibility to add/override settings via ConfigMap in Kubernetes using the
bunkerweb.io/CONFIG_TYPE=settingsannotation - [UI] Add support page for easy logs and configuration sharing while anonymizing sensitive data
- [LINUX] Support Fedora 41
- [BUGFIX] Whitelisting a client no longer bypasses https redirect settings as the
sslplugin is now executed before thewhitelistplugin - [UI] Fixed condition when validating the setup wizard form when a custom certificate is used
- [FEATURE] Add extra validation of certificates in
customcertplugin - [FEATURE] Introduce new
SSLplugin to manage SSL/TLS settings without tweaking themiscplugin - [FEATURE] Add
streamsupport inKubernetesintegration - [FEATURE] Renamed the
MODSECURITY_CRS_PLUGIN_URLSsetting toMODSECURITY_CRS_PLUGINSto make it more consistent as the setting now accepts plugin names directly as well as URLs and automatically downloads them [FEATURE] Addplugin_listcommand tobwclifor listing available plugins and their commands - [DOCS] Added Swarm deprecated notice in the documentation
- [DEPS] Added Brotli v1.1.0 dependency for ngx_brotli
- [DEPS] Updated headers-more-nginx-module version to v0.37
- [DEPS] Updated libinjection to latest commit on main branch
- [DEPS] Updated libmaxminddb version to v1.12.2
- [DEPS] Updated luajit2 version to v2.1-20250117
- [DEPS] Updated lua-nginx-module version to v0.10.28
- [DEPS] Updated lua-resty-core version to v0.1.31
- [DEPS] Updated lua-resty-dns version to v0.23
- [DEPS] Updated lua-resty-redis version to v0.31
- [DEPS] Updated ngx_brotli to latest commit on master branch
- [DEPS] Updated stream-lua-nginx-module version to v0.0.16
- [BUGFIX] Increase string length for service_id and id columns in database models to avoid issues with long service names
- [BUGFIX] Fix shenanigans with setup wizard when a reverse proxy was already configured
- [LINUX] Support Fedora 40 back and temporarily put aside Fedora 41 (there are issues when building the images)
- [UI] Add
CHECK_PRIVATE_IPconfiguration to manage session IP address changes for private networks - [UI] Implement
ALWAYS_REMEMBERfunctionality for session persistence in login - [UI] Add temporary UI service to show errors that occurred if any while web UI was starting up
- [FEATURE] Update regex for cookie flags validation to allow additional attributes
- [FEATURE] Add health check endpoint and integrate it into the scheduler for instance status monitoring
- [FEATURE] Add country tracking to bans data
- [FEATURE] Refactored the way the database migrations are handled to make it more reliable and faster using alembic
- [FEATURE] Add configurable limit for SecRequestBodyNoFilesLimit in ModSecurity via the
MODSECURITY_REQ_BODY_NO_FILES_LIMITsetting - [FEATURE] Add multi-user support in
Auth basicplugin - [FEATURE] Add support for TCP toggle listening in server-stream configuration (now UDP doesn't replace TCP when activated)
- [FEATURE] Made
LISTEN_STREAM_PORTandLISTEN_STREAM_PORT_SSLsettings multiples to allow listening on multiple ports - [DEPRECATION] Remove
X-XSS-Protectionheader from theheaderplugin as it is deprecated - [DEPS] Updated coreruleset-v4 version to v4.10.0
- [DEPS] Updated libmaxminddb version to v1.12.1
- [FEATURE] Add support for the Coreruleset plugins via the USE_MODSECURITY_CRS_PLUGINS and the MODSECURITY_CRS_PLUGIN_URLS settings (it automatically downloads and installs the plugins like with BunkerWeb's external plugins). plugins can also be added manually via custom configuration files
- [FEATURE] Add X_DNS_PREFETCH_CONTROL setting to control the DNS prefetching behavior via the X-DNS-Prefetch-Control header (default is off)
- [FEATURE] Add new
securitytxtplugin to manage the security.txt file from settings and serve it - [FEATURE] Add new
REVERSE_PROXY_PASS_REQUEST_BODYsetting to control if the request body should be passed to the upstream server (default is yes) - [FEATURE] Jobs now have an history which the size can be controlled via the
DATABASE_MAX_JOBS_RUNSsetting (default is 10000) and it will be possible to see it in the web UI in a future release - [FEATURE] Add support for HTTP/3 connections limiting via the
HTTP3_CONNECTIONS_LIMITsetting (default is 100) in thelimitplugin - [FEATURE] Add new templating feature to allow to quickly override the default values of settings and custom configurations. You can also precise steps to follow in the UI to help the user configure services.
- [FEATURE] Optimized the way the scheduler sends the configuration to the instances to make it faster and more reliable using a ThreadPoolExecutor
- [FEATURE] Add the possibility to set a custom timezone for every service via the
TZenvironment variable (will apply to the logs and all date fields stored in the database). If not set, it will use the local timezone of the server. - [FEATURE] Add the possibility to run plugins job in async mode to avoid running them in order in the scheduler by setting the
asynckey totruein the plugin job configuration (default isfalse) - [FEATURE] Add Let's Encrypt DNS challenges support !
- [FEATURE] Add new
REMOTE_PHP_PORTsetting to control the port used by the remote PHP feature (default is 9000) - [SCHEDULER] Refactor the scheduler to use the
BUNKERWEB_INSTANCES(previously known asOVERRIDE_INSTANCES) environment variable instead of an integration specific system - [AUTOCONF] Add new
NAMESPACESenvironment variable to allow setting the namespaces to watch for the autoconf feature which makes it possible to use multiple autoconf instances in the same cluster while keeping the configuration separated - [AUTOCONF] Add new
USE_KUBERNETES_FQDNenvironment variable to allow using the full qualified domain name of the services in Kubernetes instead of the ip address for the hostname of instances (default is yes) - [LINUX] Support Fedora 41 and drop support of Fedora 40
- [UI] Start refactoring the UI to make it more modular and easier to maintain
- [UI] Add a
remember mefeature to the login page so that the user can stay logged in for a longer period of time (expires after 31 days) - [UI] Add new
TOTP_SECRETSsetting to encrypt the TOTP secrets in the database (if not set, we generate a random amount of secrets via passlib.totp) - ⚠ We highly recommend setting this setting to a custom value to prevent the secrets from being erased when the volumes are deleted - [UI] Start adding roles and permissions to the UI to allow different users to have different permissions in a multi-user environment for the near future
- [UI] Made 2FA feature more user-friendly and added recovery codes in case of lost access to the 2FA device
- [UI] Refactored the way we handle logs in the UI to make it so that it no longer relies on Integration specific logics and instead always reads the files present in the
/var/log/bunkerwebfolder - [DOCS] Updated docs for all new features and changes
- [MISC] Review security headers in the
headersplugin to improve security - [MISC] Updated context of
realip'sUSE_PROXY_PROTOCOLsetting toglobalas it was always applied globally even if set only on a service - [DEPS] Updated lua-resty-core version to v0.1.30
- [DEPS] Updated lua-resty-lrucache version to v0.15
- [DEPS] Updated LuaJIT version to v2.1-20241113
- [DEPS] Updated Mbed TLS version to v3.6.2
- [DEPS] Updated coreruleset-v4 version to v4.9.0
- [SECURITY] Fix CVE-2024-53254
- [UI] Fix issues in several pages because of a wrong key being used to fetch the data
- [BUGFIX] Fix INTERCEPTED_ERROR_CODES to allow empty value
- [UI] Fix missing settings when a service is published online
- [UI] Fix instances always down in instances page
- [AUTOCONF] Fix BW env vars not retrieved
- [AUTOCONF] Fix deadlock on k8s events when there is no ingress
- [LINUX] Increase default worker dict size to avoid crash on RPI
- [MISC] Add WORKERLOCK_MEMORY_SIZE setting for worker dict size
- [MISC] Add API_TIMEOUT and API_READ_TIMEOUT settings to control API timeouts
- [DEPS] Updated coreruleset-v4 version to v4.8.0
- [DEPS] Updated coreruleset-v3 version to v3.3.7
- [UI] Fix setup wizard bug related to certificate
- [UI] Fix bug when adding more than 3 reverse proxies URLs
- [UI] Fix wrong type for REVERSE_PROXY_SSL_SNI_NAME setting
- [BUGFIX] Add HTTP3 specific modsec rule in web UI to avoid false positives
- [BUGFIX] Fix missing scheduler logs in Linux integration
- [BUGFIX] Add missing REPORT HTTP method to ALLOWED_METHODS setting
- [DEPS] Updated NGINX version to v1.26.2
- [DEPS] Updated LuaJIT version to v2.1-20240815
- [DEPS] Updated libmaxminddb version to v1.11.0
- [DEPS] Updated lua-cjson to latest commit for the version v2.1.0.14
- [DEPS] Updated lua-nginx-module version to v0.10.27
- [DEPS] Updated lua-resty-core version to v0.1.29
- [DEPS] Updated lua-resty-lrucache version to v0.14
- [DEPS] Updated lua-resty-openssl version to v1.5.1
- [DEPS] Updated lua-resty-signal version to v0.04
- [DEPS] Updated lua-resty-string version to v0.16
- [DEPS] Updated stream-lua-nginx-module version to v0.0.15
- [DEPS] Updated coreruleset-v4 version to v4.6.0
- [DEPS] Updated coreruleset-v3 version to v3.3.6
- [DEPS] Updated ModSecurity version to v3.0.13
- [DEPS] Start managing Mbed TLS as a dependency for ModSecurity (v3.6.1)
- [BUGFIX] Fix compatibility issues with mysql 8.4+ version and the
backupplugin by adding themariadb-connector-cdependency to the scheduler Dockerfile (on alpine) - [BUGFIX] Fix potential issues with multiple settings in helpers.load_variables when multiple settings have the same suffix (the issue is only present in future external plugins)
- [BUGFIX] Fix issues with kubernetes integration when were setting a global multisite setting it was not applied to the services
- [FEATURE] Add REVERSE_PROXY_SSL_SNI and REVERSE_PROXY_SSL_SNI_NAME to support SNI-based upstreams
- [UI] Update web UI setup wizard to handle when a reverse proxy already exists but no admin user is configured
- [UI] Fix issues with multiple settings on the global_config not being able to be deleted in specific cases
- [AUTOCONF] Fix issues with globally set settings overridden by default values not being saved correctly in database
- [LINUX] Update Linux repository to repo.bunkerweb.io
- [SECURITY] Update security headers in default pages and error pages for improved security
- [DEPS] Updated LuaJIT version to v2.1-20240626
- [DEPS] Updated coreruleset-v4 version to v4.5.0
- [LINUX] Support Fedora 40 and drop support of Fedora 39
- [BUGFIX] Fix potential errors when upgrading from a previous version
- [BUGFIX] Fix rare bug on the web UI when editing the SERVER_NAME setting of a service
- [BUGFIX] Fix potential race conditions between the autoconf and the scheduler waiting for each other indefinitely
- [BUGFIX] Fix Let's Encrypt certificate renewal when a certificate date changes by forcing the renewal
- [BUGFIX] Fix issues with k8s integration and the save_config.py script
- [FEATURE] Add nightly build of the OWASP coreruleset that are automatically downloaded and updated
- [FEATURE] Enhance security on error pages, default server page and loading page by adding a custom
Content-Security-Policyheader with nonces and removing theServerheader - [FEATURE] Add new DATABASE_URI_READONLY setting to allow setting up a fallback read-only database URI in case the main database URI is not available
- [FEATURE] Add automatic fallback to either read-only on the primary database or to the read-only database URI when the main database URI is not available and automatically switch back to the main database URI when it becomes available again
- [FEATURE] Add experimental support of HTTP/3 (QUIC)
- [FEATURE] Optimize the way the scheduler handles jobs and the way the jobs are executed
- [FEATURE] Optimize the way the cache files are being refreshed from the database
- [FEATURE] Add failover logic in case the NGINX configuration is not valid to fallback to the previous configuration and log the error to prevent the service from being stopped
- [UI] Force HTTPS on setup wizard
- [UI] Fallback to self-signed certificate when UI is installed with setup wizard and let's encrypt is not used
- [UI] Force HTTPS even if UI is installed in advanced mode
- [UI] Add OVERRIDE_ADMIN_CREDS environment variable to allow overriding the default admin credentials even if an admin user already exists
- [UI] Optimize the way the UI handles the requests and the responses
- [AUTOCONF] Refactor Autoconf config parsing and saving logic so that it doesn't override the scheduler or UI config every time
- [MISC] Update logger format and datefmt for better readability
- [DEPS] Updated NGINX version to v1.26.1
- [DEPS] Updated stream-lua-nginx-module version to the latest commit to incorporate the latest changes and fixes for NGINX v1.26
- [DEPS] Updated coreruleset-v4 version to v4.3.0
- [DEPS] Updated lua-resty-openssl version to v1.4.0
- [LINUX] Support Ubuntu 24.04 (Noble)
- [LINUX] Support RHEL 9.4 instead of 9.3
- [LINUX] Support hot reload with systemctl reload
- [BUGFIX] Fix rare error when the cache is not properly initialized and jobs are executed
- [BUGFIX] Fix bug when downloading new mmdb files
- [BUGFIX] Remove potential false positives with ModSecurity on the jobs page of the web UI
- [BUGFIX] Fix bwcli not working with Redis sentinel
- [BUGFIX] Fix potential issues when removing the bunkerweb Linux package
- [BUGFIX] Fix bug when antibot is enabled and User-Agent or IP address has changed
- [FEATURE] Add backup plugin to backup and restore easily the database
- [FEATURE] Add LETS_ENCRYPT_CLEAR_OLD_CERTS setting to control if old certificates should be removed when generating Let's Encrypt certificates (default is no)
- [FEATURE] Add DISABLE_DEFAULT_SERVER_STRICT_SNI setting to allow/block requests when SNI is unknown or unset (default is no)
- [UI] General : fix tooltip crop because of overflow
- [UI] General : fix select setting crop because of overflow and check if select is out of viewport to determine visible position
- [UI] General : show logs on UI when pre rendering issue
- [UI] General : Improve UI performance by using multiple workers for the web server and reducing the number of times we prompt a loading page
- [UI] General : handle word breaks on dynamic text content
- [UI] General : fix overflow issue with tables on Safari
- [UI] General : fix static resources issue with firefox leading to loop requests
- [UI] Global config : fix script error while fragment relate to a missing plugin
- [UI] Global config / services page : filtering settings now open plugin select to highlight remaining plugin
- [UI] Global config / services page : add combobox on plugin select open to search a plugin quick
- [UI] Global config / services page : add order for settings to always respect the order defined in the plugin
- [UI] Services page : show any invalid setting value on setting modal and disabled save if case
- [UI] Reporting page : fix missing data and add new ones
- [UI] Account page : keep license key form even if pro register to easy update
- [UI] Wizard : Add the possibility to still configure reverse proxy even if an admin user already exists
- [AUTOCONF] Speedup autoconf process when we have multiple events in short period of time
- [DOCUMENTATION] Add upgrade procedure for 1.5.7+
- [DOCUMENTATION] Rename Migrating section to Upgrading
- [MISC] Drop support of ansible and vagrant integrations
- [MISC] Support custom bwcli commands using plugins
- [MISC] Add Docker labels in autoconf, bw, scheduler, and ui Dockerfiles
- [DEPS] Update Python base Docker image to version 3.12.3-alpine3.19
- [DEPS] Updated LuaJIT version to v2.1-20240314
- [DEPS] Updated lua-resty-openssl version to 1.3.1
- [DEPS] Updated coreruleset-v4 version to v4.2.0
- [LINUX] Support RHEL 9.3
- [BUGFIX] Fix issues with the antibot feature (#866, #870)
- [BUGFIX] Fix Bad behavior whitelist check in access phase
- [BUGFIX] Fix ModSecurity FP on antibot page
- [BUGFIX] Fix Whitelist core plugin missing a check for empty server_name in multisite mode
- [BUGFIX] Fix Templator missing some common configs
- [BUGFIX] Database update with external plugins reupload
- [BUGFIX] UI delete or edit multiple setting
- [LINUX] Add logrotate support for the logs
- [UI] New : add bans management page in the web UI
- [UI] New : add blocked requests page in the web UI
- [UI] New : some core plugins pages in the web UI
- [UI] General : enhance the Content-Security-Policy header in the web UI
- [UI] General : dark mode enhancement
- [UI] General : add visual feedback when filtering is matching nothing
- [UI] General : blog news working and add dynamic banner news
- [UI] Global config page : Add multisite edit, add context filter
- [UI] Global config / Service page : remove tabs for select and enhance filtering (plugin name, multiple settings and context now includes)
- [UI] Service page : add the possibility to clone a service in the web UI
- [UI] Service page : add the possibility to set a service as draft in the web UI
- [UI] Service page : add services filter when at least 4 services
- [UI] Configs page : add path filtering related to config presence, remove service when config is root only
- [UI] Pro license : add home card, show pro plugins on menu and plugins page, resume in account page, alert in case issue with license usage
- [UI] Log page : enhance UX
- [FEATURE] Add setting REDIS_SSL_VERIFY to activate/disable the SSL certificate verification when using Redis
- [FEATURE] Add Redis Sentinel fallback to master automatically if no slaves are available
- [FEATURE] Add Redis Sentinel support for bwcli
- [FEATURE] Add new Metrics core plugin that will allow metrics collection and retrieval of internal metrics
- [FEATURE] Add setting DATABASE_LOG_LEVEL to control SQLAlchemy loggers separately from the main one
- [FEATURE] Add whitelist check for the default-server as well
- [FEATURE] Add the possibility to choose between the coreruleset v3 and v4 that will be used by ModSecurity (default is v3)
- [FEATURE] Add the TIMERS_LOG_LEVEL setting to control the log level of the lua timers
- [FEATURE] Add pro version management to core plugins, the scheduler and the web UI
- [FEATURE] Add REVERSE_PROXY_CUSTOM_HOST setting to set a custom Host header when using reverse proxy
- [MISC] Add a better custom certificate cache handling
- [MISC] Updated Linux base images in Dockerfiles
- [MISC] Add recommended dialects to databases string
- [MISC] Refine the data sent in the anonymous reporting feature and move the setting and the job to the "jobs" plugin
- [MISC] BunkerWeb will now load the default loading page even on 404 errors when generating the configuration
- [MISC] Update database schema to support the new pro version and optimize it
- [MISC] Refactor SSL/TLS logics to make it more consistent
- [MISC] Use ECDSA key instead of RSA for selfsigned/default/fallback certificates
- [MISC] Refactor certbot-new job to optimize the certbot requests
- [MISC] Refactor jobs utils to make it more consistent
- [MISC] Review jobs and utils to make it more consistent and better in general
- [MISC] Change BunkerWeb base Docker image to nginx:1.24.0-alpine-slim
- [DOCUMENTATION] Update web UI's setup wizard instructions in the documentation
- [DOCUMENTATION] Update plugins documentation to reflect the new plugin system
- [DOCUMENTATION] Update ModSecurity documentation to reflect the new changes in the Security Tuning section
- [DOCUMENTATION] Add pro version documentation
- [DEPS] Updated stream-lua-nginx-module to v0.0.14
- [DEPS] Updated lua-nginx-module version to v0.10.26
- [DEPS] Updated libmaxminddb version to v1.9.1
- [DEPS] Updated lua-resty-core to v0.1.28
- [DEPS] Updated zlib version to v1.3.1
- [DEPS] Updated ModSecurity version to v3.0.12
- [DEPS] Updated coreruleset version to v3.3.5
- [DEPS] Added coreruleset version v4.1.0
- [DEPS] Updated lua-resty-mlcache version to v2.7.0
- [DEPS] Updated lua-resty-openssl version to v1.2.1
- [DEPS] Updated lua-resty-http version to v0.17.2
- [BUGFIX] Fix issues with the database when upgrading from one version to a newer one
- [BUGFIX] Fix ModSecurity-nginx to make it work with brotli
- [BUGFIX] Remove certbot renew delay causing errors on k8s
- [BUGFIX] Fix missing custom modsec files when BW instances change
- [BUGFIX] Fix inconsistency on config changes when using Redis
- [BUGFIX] Fix web UI not working when using / URL
- [FEATURE] Add Anonymous reporting feature
- [FEATURE] Add support for fallback Referrer-Policies
- [FEATURE] Add 2FA support to web UI
- [FEATURE] Add username and password management to web UI
- [FEATURE] Add setting REVERSE_PROXY_INCLUDES to manually add "include" directives in the reverse proxies
- [FEATURE] Add support for Redis Sentinel
- [FEATURE] Add support for tls in Ingress definition
- [MISC] Fallback to default HTTPS certificate to prevent errors
- [MISC] Various internal improvements in LUA code
- [MISC] Check nginx configuration before reload
- [MISC] Updated Python Docker image to 3.12.1-alpine3.18 in Dockerfiles
- [DEPS] Updated ModSecurity to v3.0.11
- [UI] Add an optional setup wizard for the web UI
- [BUGFIX] Fix issues with the Linux integration and external databases
- [BUGFIX] Fix scheduler trying to connect to Docker socket in k8s and swarm
- [LINUX] Support Debian 12, Fedora 39 and RHEL 8.9
- [DOCKER] Handle start and stop event of BunkerWeb with the scheduler
- [MISC] Refactor database session handling to make it more stable with SQLite
- [MISC] Add conditional block for open file cache in nginx config
- [MISC] Updated core dependencies
- [MISC] Updated python dependencies
- [MISC] Updated Python Docker image to 3.12.0-alpine3.18 in Dockerfiles
- [BUGFIX] Fix BunkerWeb not loading his own settings after a docker restart
- [BUGFIX] Fix Custom configs not following the service name after an update on the UI
- [BUGFIX] Fix UI clearing configs folder at startup
- [BUGFIX] Fix Database not clearing old services when not using multisite
- [BUGFIX] Fix UI using the wrong database when generating the new config when using an external database
- [BUGFIX] Small fixes on linux paths creating unnecessary folders
- [BUGFIX] Fix ACME renewal fails on redirection enabled Service
- [BUGFIX] Fix errors when using a server name with multiple values in web UI
- [BUGFIX] Fix error when deleting a service that have custom configs on web UI
- [BUGFIX] Fix rare bug where database is locked
- [MISC] Updated core dependencies
- [MISC] Updated self-signed job to regenerate the cert if the subject or the expiration date has changed
- [MISC] Jobs that download files from urls will now remove old cached files if urls are empty
- [MISC] Replaced gevent with gthread in UI for security reasons
- [MISC] Add HTML sanitization when injecting code in pages in the UI
- [MISC] Optimize the way the UI handles services creation and edition
- [MISC] Optimize certbot renew script to renew all domains in one command
- [MISC] Use capability instead of sudo in Linux
- [SECURITY] Init work on OpenSSF best practices
- [BUGFIX] Fix UI fetching only default values from the database (fixes no trash button too)
- [BUGFIX] Fix infinite loop when using autoconf
- [BUGFIX] Fix BunkerWeb fails to start after reboot on Fedora and Rhel
- [BUGFIX] Fix logs page not working in UI on Linux integrations
- [BUGFIX] Fix settings regex that had issues in general and with the UI
- [BUGFIX] Fix scheduler error with external plugins when reloading
- [BUGFIX] Fix permissions with folders in linux integrations
- [MISC] Push Docker images to GitHub packages (ghcr.io repository)
- [MISC] Improved CI/CD
- [MISC] Updated python dependencies
- [MISC] Updated Python Docker image to 3.11.5-alpine in Dockerfiles
- [MISC] Add support for ModSecurity JSON LogFormat
- [MISC] Updated OWASP coreruleset to 3.3.5
- [BUGFIX] New version checker in logs displays "404 not found"
- [BUGFIX] New version checker in UI
- [BUGFIX] Only get the right keys from plugin.json files when importing plugins
- [BUGFIX] Remove external resources for Google fonts in UI
- [BUGFIX] Support multiple plugin uploads in one zip when using the UI
- [BUGFIX] Variable being ignored instead of saved in the database when value is empty
- [BUGFIX] ALLOWED_METHODS regex working with LOCK/UNLOCK methods
- [BUGFIX] Custom certificate bug after the refactoring
- [BUGFIX] Wrong variables in header phase (fix CORS feature too)
- [BUGFIX] UI not working in Ubuntu (python zope module)
- [BUGFIX] Patch ModSecurity to run it after LUA code (should fix whitelist problems)
- [BUGFIX] Custom configurations from env were not being deleted properly
- [BUGFIX] Missing concepts image not displayed in the documentation
- [BUGFIX] Scheduler not picking up new instances IPs in autoconf modes
- [BUGFIX] Autoconf deadlock in k8s
- [BUGFIX] Missing HTTP and HTTPS ports for temp nginx
- [BUGFIX] Infinite loop when sessions is not valid
- [BUGFIX] Missing valid LE certificates in edge cases
- [BUGFIX] Wrong service namespace in k8s
- [BUGFIX] DNS_RESOLVERS regex not accepting hostnames
- [PERFORMANCE] Reduce CPU and RAM usage of scheduler
- [PERFORMANCE] Cache ngx.ctx instead of loading it each time
- [PERFORMANCE] Use per-worker LRU cache for common RO LUA values
- [FEATURE] Add Turnstile antibot mode
- [FEATURE] Add more CORS headers
- [FEATURE] Add KEEP_UPSTREAM_HEADERS to preserve headers when using reverse proxy
- [FEATURE] Add the possibility to download the different lists and plugins from a local file (like the blacklist)
- [FEATURE] External plugins can now be downloaded from a tar.gz and tar.xz file as well as zip
- [FEATURE] Add X-Forwarded-Prefix header when using reverse proxy
- [FEATURE] Add REDIRECT_TO_STATUS_CODE to choose status code 301 or 302 when redirecting
- [DOCUMENTATION] Add timezone information
- [DOCUMENTATION] Add timezone informat
- [MISC] Add LOG_LEVEL=warning for docker socket proxy in docs, examples and boilerplates
- [MISC] Temp remove VMWare provider for Vagrant integration
- [MISC] Remove X-Script-Name header and ABSOLUTE_URI variable when using UI
- [MISC] Move logs to /var/log/bunkerweb folder
- [MISC] Reduce "Got an error reading communication packets" warnings in mariadb/mysql
- Refactoring of almost all the components of the project
- Dedicated scheduler service to manage jobs and configuration
- Store configuration in a database backend
- Improved web UI and make it working with all integrations
- Improved internal LUA code
- Improved internal cache of BW
- Add Redis support when using clustered integrations
- Add RHEL integration
- Add Vagrant integration
- Init support of generic TCP/UDP (stream)
- Init support of IPv6
- Improved CI/CD : UI tests, core tests and release automation
- Reduce Docker images size
- Fix and improved core plugins : antibot, cors, dnsbl, ...
- Use PCRE regex instead of LUA patterns
- Connectivity tests at startup/reload with logging
- Refactoring of almost all the components of the project
- Dedicated scheduler service to manage jobs and configuration
- Store configuration in a database backend
- Improved web UI and make it working with all integrations
- Improved internal LUA code
- Improved internal cache of BW
- Add Redis support when using clustered integrations
- Add RHEL integration
- Add Vagrant integration
- Init support of generic TCP/UDP (stream)
- Init support of IPv6
- Improved CI/CD : UI tests, core tests and release automation
- Reduce Docker images size
- Fix and improved core plugins : antibot, cors, dnsbl, ...
- Use PCRE regex instead of LUA patterns
- Connectivity tests at startup/reload with logging
- Fix UI bug related to multiple settings
- Increase check reload interval in UI to avoid rate limit
- Fix Let's Encrypt error when using auth basic
- Fix wrong setting name in realip job (again)
- Fix blog posts retrieval in the UI
- Fix missing logs for UI
- Fix error log if BunkerNet ip list is empty
- Updated python dependencies
- Gunicorn will now show the logs in the console for the UI
- BunkerNet job will now create the ip list file at the beginning of the job to avoid errors
- Fix DISABLE_DEFAULT_SERVER=yes not working with HTTPS (again)
- Fix wrong setting name in realip job
- Fix whitelisting not working with modsecurity
- Fix error in the UI when a service have multiple domains
- Fix bwcli bans command
- Fix documentation about Linux Fedora install
- Fix DISABLE_DEFAULT_SERVER=yes not working with HTTPS
- Add INTERCEPTED_ERROR_CODES setting
- Fix bwcli syntax error
- Fix UI not working using Linux integration
- Fix missing openssl dep in autoconf
- Fix typo in selfsigned job
- Fix k8s controller not watching the events when there is an exception
- Fix python dependencies bug in CentOS and Fedora
- Fix incorrect log when reloading nginx using Linux integration
- Fix UI dev mode, production mode is now the default
- Fix wrong exposed port in the UI container
- Fix endless loading in the UI
- Fix *CUSTOM_CONF* dissapear when jobs are executed
- Fix various typos in documentation
- Fix warning about StartLimitIntervalSec directive when using Linux
- Fix incorrect log when issuing certbot renew
- Fix certbot renew error when using Linux or Docker integration
- Add greylist core feature
- Add BLACKLIST_IGNORE_* settings
- Add automatic change of SecRequestBodyLimit modsec directive based on MAX_CLIENT_SIZE setting
- Add MODSECURITY_SEC_RULE_ENGINE and MODSECURITY_SEC_AUDIT_LOG_PARTS settings
- Add manual ban and get bans to the API/CLI
- Add Brawdunoir community example
- Improve core plugins order and add documentation about it
- Improve overall documentation
- Improve CI/CD
- Fix various documentation errors/typos and add various enhancements
- Fix ui.env not read when using Linux integration
- Fix wrong variables.env path when using Linux integration
- Fix missing default server when TEMP_NGINX=yes
- Fix check if BunkerNet is activated on default server
- Fix request crash when mmdb lookup fails
- Fix bad behavior trigger when request is whitelisted
- Fix bad behavior not triggered when request is on default server
- Fix BW overriding config when config is already present
- Add Ansible integration in beta
- Add *CUSTOM_CONF* setting to automatically add custom config files from setting value
- Add DENY_HTTP_STATUS setting to choose standard 403 error page (default) or 444 to close connection when access is denied
- Add CORS (Cross-Origin Resource Sharing) core plugin
- Add documentation about Docker in rootless mode and podman
- Improve automatic tests setup
- Migrate CI/CD infrastructure to another provider
- Fix "too old resource version" exceptions when using k8s integration
- Fix missing bwcli command with Linux integration
- Fix various bugs with jobs scheduler when using autoconf/swarm/k8s
- Fix bwcli unban command when using Linux integration
- Fix permissions check when filename has a space
- Fix static config (SERVER_NAME not empty) support when using autoconf/swarm/k8s
- Fix config files overwrite when using Docker autoconf
- Add EXTERNAL_PLUGIN_URLS setting to automatically download and install external plugins
- Add log_default() plugin hook
- Add various certbot-dns examples
- Add mattermost example
- Add radarr example
- Add Discord and Slack to list of official plugins
- Force NGINX version dependencies in Linux packages DEB/RPM
- Fix sending local IPs to BunkerNet when DISABLE_DEFAULT_SERVER=yes
- Fix certbot bug when AUTOCONF_MODE=yes
- Fix certbot bug when MULTISITE=no
- Add reverse proxy timeouts settings
- Add auth_request settings
- Add authentik and authelia examples
- Prebuilt Docker images for arm64 and armv7
- Improve documentation for Linux integration
- Various fixes in the documentation
- Project renamed to BunkerWeb
- Internal architecture fully revised with a modular approach
- Improved CI/CD with automatic tests for multiple integrations
- Plugin improvement
- Volume improvement for container-based integrations
- Web UI improvement with various new features
- Web tool to generate settings from a user-friendly UI
- Linux packages
- Various bug fixes
- Use API instead of a shared folder for Swarm and Kubernetes integrations
- Beta integration of distributed bad IPs database through a remote API
- Improvement of the request limiting feature : hour/day rate and multiple URL support
- Various bug fixes related to antibot feature
- Init support of Arch Linux
- Fix Moodle example
- Fix ROOT_FOLDER bug in serve-files.conf when using the UI
- Update default values for PERMISSIONS_POLICY and FEATURE_POLICY
- Disable COUNTRY ban if IP is local
- Use ModSecurity v3.0.4 instead of v3.0.5 to fix memory leak
- Fix ignored variables to control jobs
- Fix bug when LISTEN_HTTP=no and MULTISITE=yes
- Add CUSTOM_HEADER variable
- Add REVERSE_PROXY_BUFFERING variable
- Add REVERSE_PROXY_KEEPALIVE variable
- Fix documentation for modsec and modsec-crs special folders
- Kubernetes integration in beta
- Linux integration in beta
- autoconf refactoring
- jobs refactoring
- UI refactoring
- UI security : login/password authentication and CRSF protection
- various dependencies updates
- move CrowdSec as an external plugin
- Authelia support
- improve various regexes
- add INJECT_BODY variable
- add WORKER_PROCESSES variable
- add USE_LETS_ENCRYPT_STAGING variable
- add LOCAL_PHP and LOCAL_PHP_PATH variables
- add REDIRECT_TO variable
- Fix broken links in README
- Fix regex for EMAIL_LETS_ENCRYPT
- Fix regex for REMOTE_PHP and REMOTE_PHP_PATH
- Fix regex for SELF_SIGNED_*
- Fix various bugs related to web UI
- Fix bug in autoconf (missing instances parameter to reload function)
- Remove old .env files when generating a new configuration
- Add custom robots.txt and sitemap to RTD
- Fix missing GeoIP DB bug when using BLACKLIST/WHITELIST_COUNTRY
- Add underscore "_" to allowed chars for CUSTOM_HTTPS_CERT/KEY
- Fix bug when using automatic self-signed certificate
- Build and push images from GitHub actions instead of Docker Hub autobuild
- Display the reason when generator is ignoring a variable
- Various bug fixes related to certbot and jobs
- Split jobs into pre and post jobs
- Add HEALTHCHECK to image
- Fix race condition when using autoconf without Swarm by checking healthy state
- Bump modsecurity-nginx to v1.0.2
- Community chat with bridged platforms
- Move from "ghetto-style" shell scripts to generic jinja2 templating
- Init work on a basic plugins system
- Move ClamAV to external plugin
- Reduce image size by removing unnecessary dependencies
- Fix CrowdSec example
- Change some global variables to multisite
- Add LOG_LEVEL environment variable
- Read-only container support
- Improved antibot javascript with a basic proof of work
- Update nginx to 1.20.1
- Support of docker-socket-proxy with web UI
- Add certbot-cloudflare example
- Disable DNSBL checks when IP is local
- Performance improvement : move some nginx security checks to LUA and external blacklist parsing enhancement
- Init work on official documentation on readthedocs
- Fix default value for CONTENT_SECURITY_POLICY to allow file downloads
- Add ROOT_SITE_SUBFOLDER environment variable