- The JWT secret used to sign the authentication tokens is now stored in the database and read from there on every
boot, improving both the user sessions and the
API tokens, as they are signed with
the same secret. Users are no longer logged out when the app restarts or when they hit a different instance, and the
API tokens are no longer invalidated by a reboot when no custom JWT secret was in use.
- Upgrading is transparent: if
NGINX_IGNITION_SECURITY_JWT_SECRETwas set before, keep it. Its value is stored in the database on the first boot after the upgrade and your current secret keeps working, so there's no need to change anything on your side. - The environment variable is now optional and only used on the first boot, to provide your own custom secret. When omitted, a secure random secret is generated and stored. Once the database holds a secret, the stored one is always used and the environment variable is ignored, with a warning logged when it differs from the stored value.
- Upgrading is transparent: if
- The embedded SQLite database now waits for a lock held by another connection instead of immediately failing with a
database is lockederror, fixing intermittent write failures under concurrent access. The wait is 5 seconds by default and can be changed through theNGINX_IGNITION_DATABASE_SQLITE_BUSY_TIMEOUT_MSenvironment variable. PostgreSQL is unaffected. - New and updated screenshots, help videos and feature overview
- Added support for 4 new DNS providers for Let's Encrypt certificates: DNSMint, FENO, Myra and Webglobe
- Updated Go to 1.27.2 and other internal dependencies
- New project logo
- Users can now create and revoke their own API tokens from the account settings modal, in the new "API Tokens" tab.
Each token has a unique name, an optional expiration date, and can be used to authenticate against the API instead of
using a username and password. Permissions granted to the token are the same as the user who owns it.
- Users will be logged out after the update from a previous version, as the access tokens issued before it are no longer accepted since the claims changed slightly.
- Operations reserved for interactive sessions can't be performed with an API token, and are answered with
403 Forbidden: managing API tokens, logging out, changing the owner's profile or password, and reading, enabling, activating or disabling two-factor authentication. Reading the owner's profile withGET /api/users/currentis still allowed. - The new API tokens documentation page describes how to create, use and revoke tokens.
- Fix for a path traversal vulnerability in host VPN names that allowed a low-privilege user to leak the VPN drivers'
generated credentials (thanks @Tan-JunWei
for the report!)
- Note: Host VPN names must now use only lowercase letters, numbers, underscores and hyphens, start with a letter, and be at most 63 characters long.
- The example Docker Compose file is now clearly marked as an example, and warns about the placeholder database password and JWT secret values that must be replaced before deployment (thanks @28Hus for the suggestion)
- Other minor fixes and improvements
- Nginx configuration files are now tested against the nginx binary before being applied. When the test fails, the start/reload is aborted and the current configuration is kept untouched, so an invalid configuration can no longer break the whole instance on reload.
- Values rendered into the nginx configuration files are now escaped, and stream addresses and access list realms are
now validated more strictly against their expected formats, preventing nginx configuration directive injection (thanks
@manus-use for the report!)
- Note: Stream addresses must now be a valid IP address or hostname (Unix socket paths must start with "/"), and access list realms can no longer contain control characters.
- New security policy
- Improvement of the internal code organization
- Code and development dependencies upgrades
- Improved CI dependency and Docker build caching
- Security fixes and improvements
- Fix for an unauthenticated denial-of-service scenario caused by processing large
Accept-Languageheaders (thanks @kemrec for the report!)
- Fix for the scenario where the wrong permission could be used to validate an API request (thanks @manus-pi for the report!)
- Host routes now support the selection of the upstream protocol (HTTP/1.0, HTTP/1.1 or gRPC), enabling proxy and integration routes to connect to gRPC and gRPCs upstream servers. Nginx gRPC module is included by default in the Ignition's official Docker image.
- Updated Go to 1.27.1 and other internal dependencies
- Security updates and fixes
- Added support for the NexDNS DNS provider for Let's Encrypt certificates
- Upgrade of the nginx version from 1.31.3 to 1.31.4 (mainline) on the official Docker image
- Security fixes and updates
- Updated Go to 1.27.0 and other internal dependencies
- Simplification of the Go backend codebase into a single root module with a cmd + internal folder layout
- Upgrade of the nginx version from 1.31.2 to 1.31.3 (mainline)
- Added support for the Openprovider DNS provider for Let's Encrypt certificates
- Security updates and fixes
- Added support for 2 new DNS providers for Let's Encrypt certificates: OpusDNS and Poweradmin
- Ability to skip DNS propagation checks while issuing a Let's Encrypt certificate
- Security updates and fixes
- Other minor fixes and improvements
- Fix for the scenario where multiple admin users could be created during the onboarding flow under a race condition (thanks @tikket1 for the report!)
- Upgrade of the nginx version from 1.31.1 to 1.31.2 (mainline)
- Other minor fixes and improvements
- Home page was remade from scratch and is now an dashboard with a nginx ignition overview: nginx status and uptime, resource counts, expiring certificates, recent error logs, and a traffic summary. The feature tour with help videos moved to a dedicated Help page, accessible from the question-mark icon in the header menu.
- Fixed the double scrollbar issue on the logs page after the UI overhaul
- Development workflow improvements
- Other minor improvements and bug fixes
- Security fixes (thanks @tonghuaroot for the report!)
- Users can now update their own name and username from the account settings modal in the shell header.
- Improved Docker image build times by caching nginx module compilation in CI (BuildKit layer cache + ccache).
- Minor improvements, visual tweaks and bug fixes.
- Optimization of the Docker image to use the latest nginx mainline version while reducing its size and layers.
- Added support for 2 new DNS providers for Let's Encrypt challenges: Connbyte and Dynadot.
- Removed the StackPath DNS provider as it shut down in 2024.
- Other minor improvements and bug fixes.
- General UI improvements, including a visual overhaul and a new compact menu mode
- Other minor improvements and bug fixes
- Added support for SSL certificates managed by external tools (like Certbot) by reading the certificate, key, and chain files from the filesystem.
- Updated the Let's Encrypt integration from Lego v4 to v5.0.4, adding support for 26 new DNS providers for Let's Encrypt challenges: Abion, Curanet, DanDomain, Dinahosting, 51DNS, DNScale, dns.la, DNS.services, EUserv, Fornex, Gehirn, Gname, HostUp, Katapult, NederHost, Ngenix, omg.lol, PointDNS, Rage4, ScanNet, Tele3, Veesp, Wannafind, Webnames.ru, Xinnet, and Zilore.
- Removed support for DNS challenge providers that Lego no longer ships: BrandIT, CloudXNS, DNSPod, classic IIJ DNS, IWantMyName, and Webnames. Certificates using these integrations must be switched to another DNS provider before they can renew. IIJ DNS Platform Service (IIJ DPF) remains supported.
- Updated Go to 1.26.3 and other internal dependencies.
- Other minor improvements and bug fixes.
- Minor fixes and improvements
- Improved the Code Editor for static response routes by replacing the outdated Codeium Editor with CodeMirror 6.
- Removed Codeium API Key configuration because the previous API Key option for Codeium (now Windsurf) is no longer used.
- Added support for 4 new DNS providers for Let's Encrypt challenges: Netnod, 1cloud.ru, Online.net, and UCloud.
- General UI improvements and tweaks.
- Other minor improvements and bug fixes.
- Security fixes and updates
- Security fixes and updates
- Security fixes and updates (thanks @alp1n3-dev for the report!)
- Integration routes now support HTTPS upstream servers (with the option to ignore certificate errors)
- Added support for 10 new DNS providers for Let's Encrypt challenges: Artfiles, BlueCat v2, Czechia, DDNSS, DNS Exit, EuroDNS, Excedo, LeaseWeb, NameSurfer, and Todaynic
- Development pipeline and workflow improvements
- Security and other minor fixes and improvements
- NetBird VPNs are now supported alongside Tailscale, allowing you to expose any host as a peer/subdomain in your private networks.
- Tailscale integration has been improved and no longer requires HTTPS certificate support to be enabled on the Tailnet coordinator server.
- Improved initial UI page load times.
- Improved feedback on the login and onboarding pages when a field is filled out incorrectly.
- TrueNAS integration now supports the new WebSocket-based APIs. Existing integrations will continue to use the deprecated REST APIs, but can be migrated by editing the integration and disabling the legacy switch.
- Fixed an issue where the Stats page would break if statistics were newly enabled and no data was available yet.
- Improved Docker image configuration, which now reports which paths should be made persistent using a volume.
- Improved automatic downloads of GeoIP databases (used when stats are enabled), which could previously fail in some scenarios with an unexpected EOF error.
- Other minor improvements and bug fixes.
- Nginx Ignition now supports Two-Factor Authentication (2FA)
- New onboarding page, reworked for a better experience
- Performance optimizations, security updates, and other minor fixes and improvements
- Nginx Ignition now has integrated traffic statistics
- Real-time insights into server performance
- Metrics for request rates, response times, and bandwidth
- Traffic breakdown by host, domain, and upstream servers
- Improvements for the multi-language support
- Corrected the Hindi translation
- Added French and German translations
- Removed Western Punjabi due to Right-to-Left compatibility issues
- Dependencies and security updates
- Other minor improvements and fixes
- Minor fixes and improvements for the logs and tables
- Minor fixes and improvements for the logs and tables
- Dependencies and security updates
- Improvements to the Logs page, including a new text viewer and search capabilities with support for viewing surrounding lines of a search match.
- Improvements to Ignition's Tables
- Tables now support customizable settings via a new options menu. You can configure the default page size for all tables and/or configure the app to remember the last page size used (globally or on a per-table basis).
- Tables can now persist your search terms and selected page number within the same session. This allows you to return to the exact page and/or filtered results after viewing a row's details.
- Other minor improvements and bug fixes.
- On host routes of the type integration, Nginx Ignition now allows the customization of the base URI on the target service
- Fix for the SSL certificate import feature failing when the certification chain file ends with an empty line (thanks @dpaessler for the bug report)
- Nginx Ignition now supports multiple languages: Brazilian Portuguese, English, Chinese (Simplified), Hindi, Spanish,
Vietnamese, Russian, Bengali, Japanese, and Punjabi.
- This is currently a beta feature. If you find any translation issues or have suggestions for improvements, please feel free to raise an issue.
- If you'd like to see a new language added, please [start a discussion](https://github.com/lucasdillmann/nginx- ignition/discussions).
- General UI/UX improvements, including an updated login screen.
- Security updates.
- Other minor improvements and bug fixes.
- Nginx Ignition is now available for Windows (amd64 and arm64). A ZIP file is available for download below; usage instructions are included within the archive.
- Updated the README file to be less technical and more concise.
- Added support for 19 new DNS providers for Let's Encrypt challenges: AlibabaCloud ESA, Alwaysdata, Anexia CloudDNS, Beget.com, 35.com, EdgeCenter, Gigahost.no, Gravity, Hostinger, Hosting.nl, Ionos Cloud, ISPConfig 3, ISPConfig 3 DDNS, JD Cloud, Neodigit, Octenium, United Domains, Virtualname, and webnames.ca.
- Other minor improvements and bugfixes.
- Fixed an issue in the systemd service file that prevented Ignition from starting when installed via Linux packages (.deb, .rpm, etc; thanks DustPhyte for the report)
- Improvement of the SSL certificates UI
- Added the ability to customize the index file (e.g, index.html) when using static files host routes
- Internal code quality improvements
- Other minor improvements and bug fixes
- Native support for the nginx content caching
- Optimization of the ignition's performance and memory usage
- Other minor improvements and bug fixes
- Minor fixes and improvements for the Docker Swarm integration
- Native Docker integration now supports Swarm clusters. When Swarm mode is enabled in the integration settings, Ignition will look for deployed services and their host/ingress port bindings instead of the underlying containers (thanks @Kegelcizer for the suggestion!).
- Also in the Docker integration, Ignition now offers the option to use the container name as the identifier instead of the container ID. For containers managed by third-party tools or those that are constantly recreated, this option prevents the integration from failing to locate the container after a recreation.
- Improved application stability and consistency.
- Other minor bug fixes and improvements.
- Docker integration now shows and allows the selection of ports exposed in the container (previously limited to ports exposed on the host; thanks @Kegelcizer for the suggestion!)
- On the hosts list page, domain names are now links that open in a new tab (thanks @Kegelcizer for the suggestion!)
- Other minor improvements and bug fixes.
- The restriction to either use
rootornginxas the nginx runtime user was removed. Now, the settings page allows to inform any user as the runtime user. - Fix for the
nginx-ignition.propertiesfile where a wrong key was used for the nginx binary path (thanks @maslke for catching and sharing the problem!)
- The settings page was updated to include new, advanced configuration properties (such as customizable buffer sizes and the ability to input custom nginx configuration directives), enabling fine-tuning for specific use cases.
- Minor improvements and bug fixes.
- nginx ignition now includes health check endpoints to enable automated monitoring of application status. Refer to this documentation page for details on how to configure or disable them.
- Added a new docker-compose.yml file with a suggested deployment configuration for nginx ignition alongside a PostgreSQL database with health checks enabled.
- Other minor improvements and bug fixes.
- Security fixes and updates
- Fix for the database backups not including the ignition's users data
- The upload of a custom SSL certificate (issued by a third-party) now allows it to be pasted as PEM-encoded text as an alternative to the previously available PEM file selection (thanks @Volt-hf for the suggestion)
- Other minor improvements and bug fixes
- nginx ignition now has a native integration with the Tailscale (Tailnet) network, enabling a simplified way of exposing your hosts on your VPNs for remote access. Support for more networks are coming soon.
- Security updates and fixes
- Other minor improvements and bug fixes
- Support for multiple Docker and TrueNAS integrations/hosts (previously limited to one of each; thanks Th3Smok3y for the suggestion)
- Fix for the database migrations failing when using PostgreSQL (thanks @smokey007 for the bug report)
- Other minor improvements and bug fixes
- Security fixes and updates
- nginx ignition can now be installed on Debian, Ubuntu, Arch Linux, Red Hat, Rocky Linux, Alpine Linux, OpenWrt, and other distributions using native packages (.deb, .rpm, .apk, etc.). Download links for amd64 and arm64 are available below.
- The nginx Stream, Lua, and JS modules are now optional. nginx ignition can detect if they are available, display a warning in the UI if they are not, and still start the nginx server. By making them optional, ignition can be installed on a wider range of Linux distributions.
- Static response routes now support large response payloads, which could previously cause the nginx server to fail to start.
- Other minor improvements and bug fixes.
- Added support for 153 more DNS providers for the Let's Encrypt certificate challenges, bringing the total to 157 providers (such as AWS Route 53, Azure, Google Cloud, DigitalOcean, Vercel, cPanel, DirectAdmin, and many more)
- Other minor fixes and improvements
- nginx ignition can now be executed directly on Linux (amd64/arm64) and macOS (arm64) without Docker. ZIP files for download are available below (installation instructions included) with more options (like .deb, .rpm and alike) coming soon.
- Other minor fixes and improvements
- Improved support for streams. Now nginx ignition is able to configure domain-based routing using the SNI (Server Name Indication) from the TLS protocol, forwarding a request to a custom set of backing servers using the requested domain name as the qualifier. Support for weights and circuit breakers is also now available.
- Other minor improvements and bugfixes
- Minor fixes and improvements for the new backup and export features (released on the 2.13.0 version)
- New option to download a copy of the ignition's database, enabling simpler backups for disaster recoveries
- New option to export the nginx configuration files that the ignition generates, allowing them to be reviewed and even used into a standalone nginx deployment
- Minor bugfixes and improvements
- Internal project structure and code improvements
- Improvements for the static files support. Now is possible to customize if the directory listing should be enabled or not.
- Other minor improvements and UI tweaks
- Fix for Let's Encrypt SSL certificates not being issued when using Cloudflare DNS (where the TTL wasn't being set)
- Automatic retry of the nginx server startup in the ignition startup, improving the scenario where third-party dependencies (like the TrueNAS integration) are being initialized alongside ignition and may not be ready yet
- Dependencies and security updates
- Dependencies update and other minor fixes
- Improvement of the login and onboarding pages
- Fix for the log being returned with the lines in the reverse order
- Other minor fixes and improvements
- Fix for host copy action not working as expected
- User permissions and access control improvements
- Minor fixes and improvements
- New dark mode theme
- Minor fixes and improvements
- New "Directory" host route type able to serve static files with directory listing
- Minor improvements and bug fixes
- Support for nginx's streams, enabling the proxy of raw TCP, UDP and Unix sockets
- Improvement of the feedback for when a new version is available
- Minor improvements and bug fixes
- New settings option for the nginx's runtime user
- Minor improvements and bug fixes
- Dependencies and security updates
- Fix for the password reset procedure not working after the codebase migration to Golang
- Dependencies and security updates
- Better feedbacks and details when the nginx fails to start, stop or reload
- Better UI error handling
- Other minor improvements and bugfixes
- Fix for the browser caching definitions
- Security and dependencies updates
- Minor internal improvements
- UI/UX improvements
- New code editor with AI code completion (powered by Codium) for the host route's static responses and JavaScript/Lua source code (free with no API key required, but can be informed if you have one; check the configuration docs for more details)
- Improvement of the internal context management
- Improvement of the memory management settings
- Minor bugfixes and improvements
- Minor improvements of the memory management
- Fixes the scenario where a host couldn't be deleted
- Fixes the scenario where the nginx wasn't able to start when using a static response with a body that contained a double quote
- UI performance improvements
- Code and development dependencies upgrades
- Minor bugfixes
- Minor improvements and bugfixes
- Fixes the scenario where a host couldn't be updated if it contains any static response route with no custom headers
- Fixes the SSL certificates that couldn't be issued if the domain name contains a wildcard
- Fixes the enable/disable toggle not working in the host's list page
- Other minor improvements
Major rewrite of the application code, migrating from Kotlin to Go. This release is more an internal one that prepares the project for its future iterations, also consuming way less memory and CPU but still keeping all of its features.
Some minor and simple breaking changes were introduced, please check this migration guide for more details. Original source code in Kotlin is available at [this public archive repository](https://github.com/lucasdillmann/legacy-nginx- ignition) (or in the git commit history).
- Minor improvements and fixes
- Option to disable a host's route without the need to remove it
- New troubleshooting documentation with instructions like how to reset a password
- Upgrade of the project's dependencies (React, Gradle and other libs/SDKs)
- General optimizations, simplifications and improvements (like the replacement of the Ktor framework by the Java's native HTTP server)
- Other minor improvements and bugfixes
- Support for JavaScript and Lua code as route handlers
- Other minor improvements and bugfixes
- Fix for the H2 database migrations failing while creating the access lists' new tables and constraints
- Other minor improvements and bugfixes
- Improvement of the host's routes settings with new configuration options
- Access lists for easy control of who can access what by using source IP address checks and/or username/password authentication
- Other minor improvements and bugfixes
- New home page, featuring a quick start guide and some useful information
- Native Docker integration
- Improvement of the login flow and feedback for when the session expires
- Better error handling and feedback through empty state pages
- Possibility to reset the settings to the default values
- Other minor improvements and bug fixes
- New settings page for the nginx server with definition for the maximum body/upload size, timeouts, server tokens, log level and more
- Support for automatic (scheduled) log rotation
- Support for global bindings (port listeners) with the possibility to override them in each host
- UX improvements and other minor fixes
- Support for Azure DNS, Google Cloud DNS and Cloudflare DNS as DNS challenge providers for the Let's Encrypt SSL certificates
- Support for TrueNAS integrations where the apps are exposed in an address other than the TrueNAS console/API
- Improvement of the application startup times
- UX improvements and other minor fixes
- Native integration with TrueNAS Scale
- Other minor improvements and bugfixes
Initial release with the initial set of features
- Multiple nginx virtual hosts, each one with its customized set of domain, routes and bindings (port listeners)
- Each host route can act as a proxy, redirection or reply with a static response
- SSL certificates (Let's Encrypt, self-signed or bring your custom one) with automatic renew (when applicable)
- Server and virtual hosts access and error logs
- Multiple users with role-based access control (RBAC)