GeoServer Blog

GeoServer 3.0.0 Release

GeoServer 3.0.0 release is now available with downloads (bin, war, windows), along with docs and extensions.

This is a stable release of GeoServer 3.0.x series. GeoServer 3.0.0 is made in conjunction with GeoTools 35.0, and GeoWebCache 2.0.0.

Thanks to Andrea Aaime (GeoSolutions), Jody Garnett (GeoCat), and Peter Smythe (AfriGIS) for making this release.

Security Considerations

This release addresses security vulnerabilities and is an important upgrade for production systems.

  • GEOS-12043 CVE-2025-27511 JNDI Vulnerability in DB2 Store Connection
  • GEOS-11920 CVE-2025-58175 Server-Side Request Forgery (SSRF) Vulnerability in XML entity resolution
  • GEOS-11918 CVE-2025-52465 Arbitrary file write vulnerability in Master Password Dump Page
  • GEOS-11777 CVE-2024-45747 Server-Side Template Injection (SSTI) vulnerability in processing FreeMarker templates

The use of the CVE system allows the GeoServer team to reach a wider audience than blog posts.

See project security policy for more information on how security vulnerabilities are managed.

Welcome to GeoServer 3

We are overjoyed to share the initial release of GeoServer 3 with our community, this is the final stretch of a long road, a year of development, and a lot of planning and support to make it all happen. Thanks to all the organizations and individuals supporting GeoServer 3.

GeoServer 3

Straightforward upgrade

Special care has been taken to ensure a seamless upgrade from GeoServer 2.28.x:

  1. Important: We have made no changes to the GeoServer Data Directory.

  2. A few modules have migrated from core to extensions:

    The pure Java H2 database is no longer provided.

  3. The log file location setting is now managed using the GEOSERVER_LOG_LOCATION application property.

  4. The NetCDF index support has been simplified and is now self-contained. With this improvement, NetCDF no longer needs a database or local .idx files to operate.

    Instructions are provided for how to clean up these now unused files.

  5. The new OIDC plugin is now available as a full extension.

    This plugin takes over the responsibilities of the previously available Keycloak and OAuth2 plugins. For guidance on upgrading please see the detailed migration guide.

Please see the upgrade instructions for details.

Thanks to the GeoServer 3 Sponsors

GeoServer 3 would not exist without the organizations and individuals who supported the GeoServer 3 crowdfunding campaign. Their sponsorship made this work possible. We also want to share a final message to reflect over the campaign, its results, and thank again everyone that participate.

GeoServer 3 is supported by the following organisations:


Individual donations: Abhijit Gujar, Hennessy Becerra, Ivana Ivanova, John Bryant, Jason Horning, Jose Macchi, Peter Smythe, Sajjadul Islam, Sebastiano Meier, Stefan Overkamp.

New Context-Driven User Experience

GeoServer 3 features a new “context-driven” user experience, which we really hope you enjoy.

  • Search: Using the left hand side search field to find information. Autocomplete results are shown as you type, and results are listed in a tree which can be navigated below.

    User Interface Search

  • Context: Clicking on a search item establishes the context which is shown as breadcrumbs along the top of the page. A drop-down context menu provides quick access to actions that can be performed.

    User Interface Context Menu

  • Page: Page content adjusts to the current context. The welcome page adjusts to showing the layer tile and description, along with preview links, sample data downloads, metadata and data links configured.

    A really nice addition is the ability to filter the output formats to quickly find the link you are looking for.

    User Interface Welcome Layer Page

  • Feedback: Admins are provided additional context-menu commands, and per-layer feedback and shortcuts, making the application easier and faster to use.

    User Interface Feedback

  • Menu: The menu bar at the top of the page provides login on the right hand side, and access to the familiar GeoServer top-level navigation menus.

    User Interface Top Level Menus

For more information see the user guide.

Thanks to Stefano Bovio (GeoSolutions), Jody Garnett (GeoCat), and others for this major improvement.

New User Interface Responsive Design Theme

GeoServer now provides a responsive-design theme:

  • Navigation: Navigation is reduced to a hamburger menu when using a narrow width display.

    Responsive Theme: Menus

  • Forms: Forms have adopted a two-column layout adapting to page width.

    Responsive Theme: Form two-column layerout

  • Dark Mode: The login menu includes a much requested dark mode setting.

    Responsive Theme: Dark mode

Thanks to Stefano Bovio (GeoSolutions) for leading this frequently requested improvement, the entire GeoServer 3 team for implementing and checking, and testers at AfriGIS and GeoCat for verifying and updating screenshots.

New Layer Preview

A new full-screen layer preview is provided using the latest OpenLayers library.

New full screen layer preview

Thanks to Stefano Bovio (GeoSolutions) for the welcome improvement.

Updated Environment

GeoServer 3 requires Tomcat 11.0.x and Jetty 12.1 application servers. We are really pleased with this accomplishment after completing our transition to Spring Framework 7 and Jakarta EE Servlet API 6.1.

We have been extensively testing GeoServer 3 with Java 17 and Java 21, maintaining the same Java runtime baseline as GeoServer 2.28.x. Java 25 is subject to automated testing, but we are going to hold off recommending it until the user community has had an opportunity to try it out and report back.

If you are wondering about the compatibility between the Java web stack and GeoServer, here is a table showing the various supported options:

GeoServer Java Tomcat Jetty Java EE Jakarta EE
GeoServer 3.0 17, 21 Tomcat 11.0.x Jetty 12.1   Servlet API 6.1
Not supported   Tomcat 10.1.x Jetty 12.0   Servlet API 6.0
Not supported   Tomcat 10.0.x Jetty 11.0   Servlet API 5.0
GeoServer 2.28.x 17, 21 Tomcat 9.x   Servlet API 4  
GeoServer 2.28.x 17, 21   Jetty 9.4 Servlet API 3.1  

For more information see container considerations.

Thanks to the entire GeoServer 3 team and crowdfunding campaign for this major accomplishment, representing the completion of Milestone 3.

OAuth2 OpenID Connect Extension

The new OAuth2 OpenID Connect Security Integration (OIDC) plugin is now an official extension.

The transition to Spring Security 7 was one of the big tasks accomplished for GeoServer 3. This work includes the creation of a new OIDC plugin. The new plugin has taken over the responsibilities of previously available Keycloak and OAuth2 plugins.

For guidance on upgrading please see the detailed migration guide.

Thanks to Alessio Fabiani and others for this important improvement. Special thanks to everyone who provided feedback and testing during the 3.0-RC timeframe, your success has allowing this module to graduate to full extension for 3.0.0 release.

New Documentation

The long-awaited transition to Markdown documentation has finally arrived. Welcome to our new User Manual. The GeoServer 2.x documentation is available using the version switcher at the top of the page.

The new user manual

Please help out by fixing any remaining small issues or log an issue for Peter to address. The documentation guide has been updated with Markdown guidance complete with visual examples.

Thanks to Peter Smythe (AfriGIS) and Jody Garnett (GeoCat) for working on this activity which ended up being an incredible amount of work.

Pending Community Modules

The documentation contains a new heading for pending community modules that are seeking public use and support in order to graduate to an extension.

A pending community been declared ready for feedback by the development team responsible and is available for general download alongside each release. The user manual indicates what specific support is needed for the module to be ready for production as a full extension.

Release notes

New Feature:

  • GEOS-12063 GSIP-238 - GeoServer 3 UI / UX Refresh
  • GEOS-12132 GSIP 239 ‐ Promote OIDC Community Module to Extension

Improvement:

  • GEOS-11581 Set up leaner attribute transformations when attribute customization is enabled
  • GEOS-11886 Sort entries in all .properties files alphabetically
  • GEOS-11918 CVE-2025-52465 Arbitrary file write vulnerability in Master Password Dump Page
  • GEOS-12015 Switch tests using H2 to GeoPackage
  • GEOS-12023 Improve developer logging during catalog resources loading and WMS capabilities requests
  • GEOS-12024 Add Git branch name in GEOSERVER_NODE_OPTS
  • GEOS-12070 REST Support for CRSs
  • GEOS-12072 Remove deprecated REST endpoint on the DataStoreFileController
  • GEOS-12077 Remove H2/DB based index and binary index from CoverageMultidim/NetCDF stores
  • GEOS-12081 Update MapML.js ( custom element suite) to v0.17.0
  • GEOS-12082 CoverageStore - quick fail for incorrect files
  • GEOS-12083 Skip brute force login delays when checking for default administrator password
  • GEOS-12103 Reduce contention in concurrent requests

Bug:

  • GEOS-10509 WFS Request fails when XML POST body is larger than 8kB
  • GEOS-10877 [B/R Community Module] Restore Tasklet always fails on resources validation
  • GEOS-11777 CVE-2024-45747 Server-Side Template Injection (SSTI) vulnerability in processing FreeMarker templates
  • GEOS-11903 WPS does not respect raw response output selection when there are multiple outputs
  • GEOS-11916 Data directory migration performed on built-in default security configuration
  • GEOS-11920 CVE-2025-58175 Server-Side Request Forgery (SSRF) Vulnerability in XML entity resolution
  • GEOS-11926 ogcapi plugin makes WFS advertising an outputFormat which is actually unavailable
  • GEOS-11930 OGC-API extension breaks security REST API
  • GEOS-11942 ImagePPIO does not run any longer
  • GEOS-11964 Metadata Bulk Operations: wicket error
  • GEOS-11965 KMZ export incorrectly references remote icon URLs instead of embedding them in the KMZ archive
  • GEOS-11981 POST /security/authproviders 400: Unsupported className
  • GEOS-11988 Fix bug: preserve metaTilingThreads=0 in saneConfig()
  • GEOS-11999 The version of Jetty (12) no longer supports web.xml CORS configuration
  • GEOS-12043 CVE-2025-27511 JNDI Vulnerability in DB2 Store Connection
  • GEOS-12065 WMS Layer REST PUT always returns 500 due to Collections.emptySet() in getRemoteStyleInfos()
  • GEOS-12073 Remove log location configuration from Admin Console and REST API
  • GEOS-12084 TemplateController REST endpoints accept non-existent workspace, store, and resource names
  • GEOS-12085 LocalSettingsController does not validate workspace existence
  • GEOS-12092 DescribeFeatureType fails to render a single option restriction in JSON format
  • GEOS-12112 OIDC OAuth2 login principals should also expose GeoServer user properties
  • GEOS-12114 GeoServer fails to start on FIPS-enabled system due to unsupported SHA1PRNG SecureRandom
  • GEOS-12115 Jetty 12.1.9 is not parsing Windows working directory settings
  • GEOS-12118 ReprojectingFeatureCollection can fail with ClassCastException while inserting CompoundCurve via WFS-T

Task:

  • GEOS-11941 Clean up Java 17 javadoc warnings
  • GEOS-11987 ImageN 0.9.1 migration requires renaming of registryFile.jai to registryFile.imagen
  • GEOS-12004 Make WMS indepependent of WFS
  • GEOS-12005 Remove GeoServer H2 extension
  • GEOS-12006 GWC, removal of leftover H2 references
  • GEOS-12011 Move KML module to extension
  • GEOS-12016 Move WCS 1.1 module to extension
  • GEOS-12017 Move WCS 1.0 to extension
  • GEOS-12018 Switch GeoServer tests away from H2
  • GEOS-12019 Turn arcgrid and worldimage formats into plugins
  • GEOS-12025 Split WMS 1.1 and 1.3
  • GEOS-12040 Updating BouncyCatle libraries to LTS 2.73.10
  • GEOS-12041 Update Spring LDAP to 4.0.1
  • GEOS-12064 CSS: add documentation for localized @title and @abstract metadata
  • GEOS-12071 Remove the WPS remote module
  • GEOS-12110 Make use of XMLUtils for better integration with GeoTools.getEntityResolver()
  • GEOS-12136 IOTestUtils.createRandomDirectory() replacing mkdir call to more recent java.nio.files API
  • GEOS-12137 Update OSHI from 6.8.2 to 7.3.0

Sub-task:

For the complete list see 3.0.0 release notes.

Community Updates

Community module development:

  • GEOS-11904 OGC API Processes: add support for envelope input/output
  • GEOS-11905 OGC API processes status response lacks jobid and links to self
  • GEOS-11906 OGC API Processes: use correct error code for access to results when execution is not complete
  • GEOS-11907 OGC API Processes: support multiple raw responses
  • GEOS-11908 OGC API Processes page should be pageable
  • GEOS-11909 Add support for OGC API Echo process
  • GEOS-11915 OGC API Processes: improve support for binary input and output
  • GEOS-11972 GSIP 233 - Community Pending Release Profile
  • GEOS-11980 Add support for uploading a single parquet file to GeoServer via REST
  • GEOS-11983 GSR /query fails with HTTP 500 when where parameter is empty
  • GEOS-12000 Ignore DescribeFeatureType requests without typeName in Features Templating schemas override
  • GEOS-12002 hz-cluster: homepage pop-up fails
  • GEOS-12007 Add AWS credential chain authentication UI and documentation for GeoParquet
  • GEOS-12013 Support vector datasets ingestion in VectorMosaic via REST
  • GEOS-12044 STAC search endpoint should report invalid collection names as invalid parameters instead of internal errors
  • GEOS-12061 New Community Module for PNG-WIND output format for wind datasets
  • GEOS-12062 Add DuckDB datastore community extension (gs-duckdb)
  • GEOS-12069 Align the hazelcast version in hz-cluster to the rest of GeoServer
  • GEOS-12074 Remove activeMQ-broker community module
  • GEOS-12089 GWC sqlite community module breaks legend preview in style page
  • GEOS-12098 Rename JWT Header assembly so it is collected for nightly downloads
  • GEOS-12101 Workspace styles not persisted to disk after restore
  • GEOS-12119 Workspace-scoped OGC API Styles endpoint returns styles from other workspaces
  • GEOS-12129 Longitudinal profile positive altitude includes first elevation as ascent from zero

Community modules are shared as source code to encourage collaboration. If a topic being explored is of interest to you, please contact the module developer to offer assistance.

About GeoServer 3.0 Series

Additional information on GeoServer 3.0 series:

Release notes: ( 3.0.0 | 3.0-RC )

Read More

GeoServer 3 is here, from crowdfunding to release

GeoServer 3.0 is now generally available. This post is not a feature announcement, those have been written, and the release notes cover the details. This is something we get to do less often: closing the loop on a promise. The modernisation work the community funded is finished and shipping, and we want to account for what that funding set out to achieve and what it delivered.

The result is a platform brought back onto a current, supported foundation. The work reached across the wider ecosystem rather than GeoServer alone, and the scope the campaign promised has been covered.

The bet the community made

The case for GeoServer 3 was clear. Spring 5 was reaching the end of security support, and staying on a supported, modern Java platform meant moving to JDK 17. That upgrade was the trigger for much of what followed, because it could not happen in isolation: it cascaded into Spring 7, Jakarta, modern servlet containers, and updated libraries across the stack, and the ageing image-processing components had to be replaced along the way. None of this is the kind of work that wins a feature vote, yet all of it keeps GeoServer current and dependable for the years ahead. Our goal was to take this foundational work directly, in one coordinated effort across the whole ecosystem, rather than letting it pile up.

Funding it required a structure built on trust. The financial target was 550,000 €. Camptocamp, GeoCat, and GeoSolutions each contributed 50,000 €, and the consortium provided coordination, delivery capacity, and co-funding to move the project forward. That left a community funding goal of 400,000 €, pledged by sponsors, community members, and individual donors during a commitment phase, with funds collected only once the target was reached, so the work could begin fully funded rather than at risk of stalling partway. In May 2025 the campaign passed its goal, and the work began fully funded. GeoServer 3.0 is the moment it pays out.

What the funding delivered

GeoServer 3 set out to modernise the platform from the foundation up, and that is what this release delivers. The work was a coordinated programme rather than a single change, where a handful of major upgrades each set off a chain of smaller, necessary changes across the codebase. The items below are the headline changes that triggered much of the surrounding effort.

A modern Java foundation. The GeoServer ecosystem now runs on JDK 17 and Spring 7, the central upgrade that drove the rest of the work and brings GeoServer back onto a current, supported stack. That move cascaded into Jakarta, modern servlet containers, and a wide set of supporting libraries that all had to be carried forward together. The project worked through the dependency tree end to end, so the platform sits on a clean, maintainable base.

Modern raster processing. ImageN has replaced the legacy image-processing engine, putting raster processing on a modern foundation that is far easier to maintain going forward.

Reinforced security. Security and vulnerability management have been strengthened throughout, putting GeoServer on a stronger footing for the kinds of compliance and assurance its users increasingly need.

A refreshed administration experience and documentation. The administration interface has been rebuilt with a new context-driven design, and the documentation has been refreshed and updated alongside it.

Just as importantly, this was never only about GeoServer. The funded work carried across the ecosystem, and 3.0 ships together with GeoTools and GeoWebCache, with the integration work for GeoServer Cloud following on, making GeoServer well suited to cloud-native and containerised deployments. For most deployments the upgrade from 2.28.x is straightforward, with no changes required to the data directory. The migration guide provides the necessary instructions for the rest. The release candidate phase let organisations prove all of this in their own environments, and that feedback shaped the final release.

All of this scope was delivered and is available now in the GeoServer 3.0 release.

Thank you

GeoServer is critical infrastructure for countless organisations, and keeping a platform like that healthy depends on funding the unglamorous foundational work that rarely attracts attention on its own. That a community came together to back this effort, and saw it through to a successful delivery, is a meaningful example of how open source can sustain itself when its users choose to invest in it.

That investment had a lot of people behind it. Thank you to every organisation that pledged, every individual who donated, and everyone who tested, reported, reviewed, and contributed code: this release exists because you decided it should. Thank you also to the consortium teams at Camptocamp, GeoCat, and GeoSolutions, who carried it from a funding target to a shipped release.

GeoServer 3 is the foundation for everything the project does next. It is here because the community built it together.

GeoServer 3 is supported by the following organisations:


Individual donations: Abhijit Gujar, Hennessy Becerra, Ivana Ivanova, John Bryant, Jason Horning, Jose Macchi, Peter Smythe, Sajjadul Islam, Sebastiano Meier, Stefan Overkamp.

Read More

GeoServer 2.28.4 Release

GeoServer 2.28.4 release is now available with downloads (bin, war, windows), along with docs and extensions.

Please note, this is a stable release of GeoServer providing existing installations with minor updates and bug fixes, provided shortly before the GeoServer 3.0 release.
GeoServer 2.28.4 is made in conjunction with GeoTools 34.4, and GeoWebCache 1.28.4.

Also note that for the last few months we have been unable to provide a Windows Installer due to an expired certificate to sign Windows builds, but we are working on a resolution. Please bear with us, or offer to help, if it is important to you.

Thanks to Peter Smythe (AfriGIS) for making this release.

Security Considerations

This release addresses security vulnerabilities and is an important upgrade for production systems.

See project security policy for more information on how security vulnerabilities are managed.

Release notes

Improvement:

  • GEOS-12045 Allow disabling specific OGC service versions
  • GEOS-12105 DiskQuotaConfigPanel: expose JDBCConfiguration.schema in the UI
  • GEOS-12111 LDAP TLS pooled hostname

Bug:

  • GEOS-12092 DescribeFeatureType fails to render a single option restriction in JSON format
  • GEOS-12116 Workspace admin pager shows incorrect total count for security-filtered workspaces

For the complete list see 2.28.4 release notes.

Community Updates

Community module development:

  • GEOS-12098 Rename JWT Header assembly so it is collected for nightly downloads
  • GEOS-12101 Workspace styles not persisted to disk after restore

Community modules are shared as source code to encourage collaboration. If a topic being explored is of interest to you, please contact the module developer to offer assistance.

About GeoServer 2.28 Series

Additional information on GeoServer 2.28 series:

Release notes: ( 2.28.4 | 2.28.3 | 2.28.2 | 2.28.1 | 2.28.0 | 2.28-M0 )

Read More

GeoServer 3.0-RC, a crowdfunded success story

GeoServer 3.0-RC is now available, and with it we can celebrate something bigger than a release candidate.

This milestone is the concrete outcome of a successful community crowdfunding campaign.

When we launched the GeoServer 3 crowdfunding initiative in September 2024, the goal was ambitious. GeoServer needed more than incremental maintenance. It needed a full platform modernization, including a new generation user experience, a stronger security foundation, a modern Java stack, improved raster processing, and the engineering effort required to carry those changes across the broader GeoServer ecosystem.

That work is now visible in GeoServer 3.0-RC.

From campaign to release candidate

The GeoServer 3 crowdfunding effort set a total target of 550,000 €. Camptocamp, GeoCat, and GeoSolutions each committed 50,000 €, establishing a community funding goal of 400,000 €. In May 2025, the campaign surpassed that goal.

That achievement mattered because GeoServer 3 was never a small upgrade. It required coordinated investment in core platform work that is essential for users, but often difficult to fund through routine maintenance alone:

  • migration to a modern Spring and Jakarta based platform
  • alignment with JDK 17 and current deployment environments
  • replacement of aging raster processing components with ImageN
  • stronger security and vulnerability management
  • documentation updates and broad compatibility testing
  • user interface and usability improvements across the administration experience

The consortium of Camptocamp, GeoCat, and GeoSolutions provided coordination, delivery capacity, and co-funding. Sponsors, community members, and individual donors made it possible to move from planning into implementation.

What GeoServer 3.0-RC shows

With GeoServer 3.0-RC, the results of that investment are now ready for public testing.

This release candidate introduces a modernized platform with:

  • a new context-driven user experience
  • a responsive administration interface
  • a new full-screen layer preview
  • updated documentation in Markdown
  • support for modern servlet containers including Tomcat 11 and Jetty 12.1
  • a straightforward upgrade path from GeoServer 2.28.x, with no changes to the GeoServer data directory

GeoServer 3.0-RC is also released together with GeoTools 35-RC and GeoWebCache 2.0-RC, making this an important ecosystem milestone, not just a version bump.

GeoServer 3

Why this matters for open source sustainability

Crowdfunding is often discussed in theory as a way to support open source. GeoServer 3 offers a practical example of what that support can achieve.

This campaign did not fund a narrow feature request. It funded the kind of foundational work that keeps a critical open source project healthy: technical modernization, security upgrades, ecosystem testing, documentation improvements, and long-term maintainability.

That is exactly the kind of work communities depend on, and exactly the kind of work that is hardest to finance unless users and organizations step forward together.

GeoServer 3.0-RC proves that this model can work.

Help us finish strong

The arrival of GeoServer 3.0-RC is also a call for community testing.

We encourage everyone to try the release candidate in their own environment, especially for:

  • upgrade workflows from GeoServer 2.28.x
  • the new user interface and administration workflows
  • deployments on Tomcat 11 and Jetty 12
  • raster-heavy and tiling-heavy workloads
  • extension compatibility and operational edge cases

You can download GeoServer 3.0-RC from the release page, review the upgrade instructions, or quickly test the Docker image:

docker run -p 8080:8080 docker.osgeo.org/geoserver:3.0-RC

Please share your feedback on the GeoServer 3.0-RC discourse thread.

New full screen layer preview

Thank you

GeoServer 3.0-RC is an important technical milestone, but it is also a community milestone.

Thank you to the organisations, individual donors, developers, testers, and sponsors who helped make this happen. And thank you to the consortium teams at Camptocamp, GeoCat, and GeoSolutions for carrying the work from campaign to release candidate.

GeoServer 3.0-RC is here because the community decided this work was worth funding.

That is worth celebrating.

GeoServer 3 is supported by the following organisations:


Individual donations: Abhijit Gujar, Hennessy Becerra, Ivana Ivanova, John Bryant, Jason Horning, Jose Macchi, Peter Smythe, Sajjadul Islam, Sebastiano Meier, Stefan Overkamp.

Read More

GeoServer 3.0-RC Release

GeoServer 3.0-RC is now available, with downloads for ( bin, war ), along with docs and extensions. We are working with OSGeo for the windows installer download, and will update this post when it is available. Windows users are asked to test out the bin download while we wait. Release available as docker image docker.osgeo.org/geoserver:3.0-RC .

This is a release candidate intended for public review and feedback. GeoServer 3.0-RC is made in conjunction with GeoTools 35-RC, and GeoWebCache 2.0-RC.

Thanks to Jody Garnett (GeoCat), Andrea Aime (GeoSolutions), and Peter Smythe (AfriGIS) for making this release.

Please Test GeoServer 3.0-RC

We encourage everyone to try GeoServer 3.0-RC in their own environment, especially for upgrade workflows, the new user interface, and deployment on Tomcat 11 and Jetty 12. Real-world testing is the best way to catch regressions and compatibility issues before the final 3.0 release.

You may also quickly test the docker image using:

docker run -p 8080:8080 docker.osgeo.org/geoserver:3.0-RC

Please share your success, feedback, questions, and any issues you encounter on the user forum GeoServer 3.0-RC Release Candidate discourse thread.

GeoServer Cloud 3.0.0-RC

GeoServer Cloud 3.0.0-RC has also been released alongside this candidate. Cloud-native deployments can now try out GeoServer 3 in microservices form, see the v3.0.0-RC release notes for details.

To get started, follow the Kubernetes quickstart and share your feedback so we can iron out any remaining issues before the final 3.0.0 release.

Welcome to GeoServer 3

We are overjoyed to share this update with our community, this is the final stretch of a long road, a year of development, and a lot of planning and support to make it all happen.

There will be more technical details in the final release announcement - but for now we wish to say thank you.

GeoServer 3

Straightforward upgrade

We have taken great pains to make the upgrade process seamless from GeoServer 2.28.x.

  1. Important: We have made no changes to the GeoServer Data Directory.

    Download and try GeoServer 3.0-RC today!

  2. A few modules have migrated from core to extensions:

    The pure Java H2 database is no longer provided.

  3. The log file location setting is now managed using the GEOSERVER_LOG_LOCATION application property.

  4. The NetCDF index support has been simplified and is now self-contained. With this improvement, NetCDF no longer needs a database or local .idx files to operate.

    Instructions are provided for how to clean up these now unused files.

  5. The new OIDC plugin is available to take over the responsibilities of the previously available Keycloak and OAuth2 plugins.

Please see the upgrade instructions for details.

New Context-Driven User Experience

GeoServer 3 features a new “context-driven” user experience, which we really hope you enjoy.

  • Search: Using the left hand side search field to find information. Autocomplete results are shown as you type, and results are listed in a tree which can be navigated below.

    User Interface Search

  • Context: Clicking on a search item establishes the context which is shown as breadcrumbs along the top of the page. A drop-down context menu provides quick access to actions that can be performed.

    User Interface Context Menu

  • Page: Page content adjusts to the current context. The welcome page adjusts to showing the layer tile and description, along with preview links, sample data downloads, metadata and data links configured.

    User Interface Welcome Layer Page

  • Menu: The menu bar at the top of the page provides login on the right hand side, and access to the familiar GeoServer top-level menus. Many of these pages now adjust their content to reflect the current context.

    User Interface Top Level Menus

  • Feedback: Admins are provided additional context-menu commands, and per-layer feedback and shortcuts, making the application easier and faster to use.

    User Interface Feedback

For more information see the user guide.

Thanks to Stefano Bovio (GeoSolutions), Jody Garnett (GeoCat), and others for this major improvement.

New User Interface Responsive Design Theme

GeoServer now provides a responsive-design theme:

  • Navigation: Navigation is reduced to a hamburger menu when using a narrow width display.

    Responsive Theme: Menus

  • Forms: Forms have adopted a two-column layout adapting to page width.

    Responsive Theme: Form two-column layerout

Details coming soon to the developers guide!

Thanks to Stefano Bovio (GeoSolutions) for leading this frequently requested improvement, the entire GeoServer 3 team for implementing and checking, and testers at AfriGIS and GeoCat for verifying and updating screenshots.

New Layer Preview

A new full-screen layer preview is provided using the latest OpenLayers library.

New full screen layer preview

Thanks to Stefano Bovio (GeoSolutions) for the welcome improvement.

Updated Environment

GeoServer 3 is overjoyed to support Tomcat 11.0.x and Jetty 12.1 application servers after completing our transition to Spring Framework 7 and Jakarta EE Servlet API 6.1.

We have been extensively testing GeoServer 3 with Java 17 and Java 21, maintaining the same Java runtime baseline as GeoServer 2.28.x. Java 25 is subject to automated testing, but we are going to hold off recommending it until the user community has had an opportunity to try it out and report back.

If you are wondering about the compatibility between the Java web stack and GeoServer, here is a table showing the various supported options:

GeoServer Java Tomcat Jetty Java EE Jakarta EE
GeoServer 3.0 17, 21 Tomcat 11.0.x Jetty 12.1   Servlet API 6.1
Not supported   Tomcat 10.1.x Jetty 12.0   Servlet API 6.0
Not supported   Tomcat 10.0.x Jetty 11.0   Servlet API 5.0
GeoServer 2.28.x 17, 21 Tomcat 9.x   Servlet API 4  
GeoServer 2.28.x 17, 21   Jetty 9.4 Servlet API 3.1  

For more information see container considerations.

Thanks to the entire GeoServer 3 team and crowdfunding campaign for this major accomplishment, representing the completion of Milestone 3.

New OAuth2 OpenID Connect Security Integration

The transition to Spring Security 7 was one of the big tasks accomplished for GeoServer 3. This work includes the creation of a new OIDC plugin. The new plugin has taken over the responsibilities of previously available Keycloak and OAuth2 plugins.

  • If you previously used Keycloak, there are setup instructions for configuring with Keycloak.
  • If you previously used an OAuth2 integration, you can find individual setup instructions for Google, Azure, and GitHub.

We are asking specifically for public testing during 3.0-RC timeframe allowing this module to be included as an extension for 3.0.0 release.

Thanks to Alessio Fabiani and others for this improvement. We are very much looking forward to having OAuth2 OpenID Connect support included in GeoServer.

New Documentation

The long-awaited transition to Markdown documentation has finally arrived. Welcome to our new User Manual. The older GeoServer 2.x documentation is available at Docs Archive or via the version switcher. Please help out by fixing any remaining small issues or log an issue for Peter to address.

The new user manual

Thanks to Peter Smythe (AfriGIS) and Jody Garnett (GeoCat) for working on this activity which ended up being an incredible amount of work.

Thanks to the GeoServer 3 Sponsors

GeoServer 3 would not exist without the organizations and individuals who supported the GeoServer 3 crowdfunding campaign. Their sponsorship made this work possible.

GeoServer 3 is supported by the following organisations:


Individual donations: Abhijit Gujar, Hennessy Becerra, Ivana Ivanova, John Bryant, Jason Horning, Jose Macchi, Peter Smythe, Sajjadul Islam, Sebastiano Meier, Stefan Overkamp.

Release notes

New features:

  • GEOS-12063 [GSIP-238] GeoServer 3 UI / UX Refresh

Improvements:

  • GEOS-11886 Sort entries in all .properties files alphabetically
  • GEOS-12015 Switch tests using H2 to GeoPackage
  • GEOS-12023 Improve developer logging during catalog resources loading and WMS capabilities requests
  • GEOS-12024 Add Git branch name in GEOSERVER_NODE_OPTS
  • GEOS-12072 Remove deprecated REST endpoint on the DataStoreFileController
  • GEOS-12077 Remove H2/DB based index and binary index from CoverageMultidim/NetCDF stores
  • GEOS-12081 Update MapML.js ( custom element suite) to v0.17.0
  • GEOS-12082 CoverageStore - quick fail for incorrect files
  • GEOS-12083 Skip brute force login delays when checking for default administrator password

Bugs:

  • GEOS-10509 WFS Request fails when XML POST body is larger than 8kB
  • GEOS-11903 WPS does not respect raw response output selection when there are multiple outputs
  • GEOS-11916 Data directory migration performed on built-in default security configuration
  • GEOS-11926 ogcapi plugin makes WFS advertising an outputFormat which is actually unavailable
  • GEOS-11930 OGC-API extension breaks security REST API
  • GEOS-11942 ImagePPIO does not run any longer
  • GEOS-11964 Metadata Bulk Operations: wicket error
  • GEOS-11965 KMZ export incorrectly references remote icon URLs instead of embedding them in the KMZ archive
  • GEOS-11981 POST /security/authproviders 400: Unsupported className
  • GEOS-11988 Fix bug: preserve metaTilingThreads=0 in saneConfig()
  • GEOS-11999 The version of Jetty (12) no longer supports web.xml CORS configuration
  • GEOS-12065 WMS Layer REST PUT always returns 500 due to Collections.emptySet() in getRemoteStyleInfos()
  • GEOS-12073 Remove log location configuration from Admin Console and REST API
  • GEOS-12084 TemplateController REST endpoints accept non-existent workspace, store, and resource names
  • GEOS-12085 LocalSettingsController does not validate workspace existence

Tasks:

  • GEOS-11987 ImageN 0.9.1 migration requires renaming of registryFile.jai to registryFile.imagen
  • GEOS-12004 Make WMS independent of WFS
  • GEOS-12005 Remove GeoServer H2 extension
  • GEOS-12006 GWC, removal of leftover H2 references
  • GEOS-12011 Move KML module to extension
  • GEOS-12016 Move WCS 1.1 module to extension
  • GEOS-12017 Move WCS 1.0 to extension
  • GEOS-12018 Switch GeoServer tests away from H2
  • GEOS-12019 Turn arcgrid and worldimage formats into plugins
  • GEOS-12025 Split WMS 1.1 and 1.3
  • GEOS-12040 Updating BouncyCatle libraries to LTS 2.73.10
  • GEOS-12041 Update Spring LDAP to 4.0.1
  • GEOS-12071 Remove the WPS remote module
  • GEOS-12064 CSS: add documentation for localized @title and @abstract metadata

Sub-tasks:

For the complete list see 3.0-RC release notes.

Community Updates

Community module development:

  • GEOS-11904 OGC API Processes: add support for envelope input/output
  • GEOS-11905 OGC API processes status response lacks jobid and links to self
  • GEOS-11906 OGC API Processes: use correct error code for access to results when execution is not complete
  • GEOS-11907 OGC API Processes: support multiple raw responses
  • GEOS-11908 OGC API Processes page should be pageable
  • GEOS-11909 Add support for OGC API Echo process
  • GEOS-11915 OGC API Processes: improve support for binary input and output
  • GEOS-11972 GSIP 233 - Community Pending Release Profile
  • GEOS-11980 Add support for uploading a single parquet file to GeoServer via REST
  • GEOS-11983 GSR /query fails with HTTP 500 when where parameter is empty
  • GEOS-12000 Ignore DescribeFeatureType requests without typeName in Features Templating schemas override
  • GEOS-12002 hz-cluster: homepage pop-up fails
  • GEOS-12007 Add AWS credential chain authentication UI and documentation for GeoParquet
  • GEOS-12013 Support vector datasets ingestion in VectorMosaic via REST
  • GEOS-12044 STAC search endpoint should report invalid collection names as invalid parameters instead of internal errors
  • GEOS-12061 New Community Module for PNG-WIND output format for wind datasets
  • GEOS-12062 Add DuckDB datastore community extension (gs-duckdb)
  • GEOS-12069 Align the hazelcast version in hz-cluster to the rest of GeoServer
  • GEOS-12074 Remove activeMQ-broker community module
  • GEOS-12089 GWC sqlite community module breaks legend preview in style page

Community modules are shared as source code to encourage collaboration. If a topic being explored is of interest to you, please contact the module developer to offer assistance.

About GeoServer 3.0.x Series

Additional information on the GeoServer 3.0.x series:

Release notes: ( 3.0-RC )

Read More