GeoServer is the most widely deployed open source geospatial server. It is OGC certified, has a large community, and has been developed since the early 2000s. neoserver covers the same core job: publishing geospatial data through OGC standards. It takes a different approach to runtime, data sources, and administration.
This comparison is based on the source code and documentation of GeoServer 3.0.1. GeoServer ships its functionality in three tiers: core, official extensions, and community modules. Its documentation describes community modules as shared for testing and feedback, without the support guarantees of official extensions.
At a glance
| neoserver | GeoServer 3.0.1 | |
|---|---|---|
| Runtime | Go server, distributed as one Docker image with the console and native geospatial libraries | Java 17 or 21 web application (Spring, Jetty), distributed as a web archive, a platform-independent binary, and a Docker image |
| License | MIT | GPL 2.0 or later |
| Administration | Modern web console, plus a management REST API with an OpenAPI description | Web administration interface (Apache Wicket) and REST configuration API |
| Configuration | Encrypted catalog in one DuckDB file, with credentials and settings encrypted at rest | Data directory on the filesystem. Database-backed catalogs are available as community modules. |
| Classic services | WMS 1.3.0, WFS 2.0.0/2.0.2, WCS 2.1/2.0.1, WMTS 1.0 | WMS 1.1.1/1.3.0, WFS 1.0/1.1/2.0, WCS 1.x and 2.0, WMTS through the integrated GeoWebCache. WPS and CSW are extensions. |
| OGC API | OGC API Features and OGC API Tiles built in | OGC API Features as an extension. Tiles, Maps, Styles, Coverages, and Processes as community modules. |
| Data sources | PostGIS, DuckDB Spatial, GeoParquet, Shapefile, GeoPackage, GeoJSON, FlatGeobuf, GeoTIFF/COG, NetCDF, GRIB2, PostGIS raster | PostGIS, Shapefile, GeoTIFF and more in core. Oracle, SQL Server, DB2, MySQL, MongoDB, GDAL/OGR, NetCDF, and GRIB as extensions. DuckDB and GeoParquet as community modules. |
| Vector tiles | Built in, shared cache with WMTS | Extension |
| Styling | SLD/SE. CSS, YSLD, and Mapbox styles as bounded subsets behind the dynamic-style switch. |
SLD in core. CSS, YSLD, and MBStyle as extensions. |
| Access control | Workspace roles, scoped API keys, OIDC console sign-in, and per-layer read rules built in | Built-in security subsystem with users, groups, roles, and service and data rules, plus LDAP and JDBC. OIDC, CAS, and GeoFence as extensions. |
| Scaling out | One active server process per catalog | Documented multi-node clustering behind a load balancer, plus community modules for catalog synchronization |
| Certification | Published conformance test evidence, not certified | OGC certified for WMS, WFS, WCS, and WMTS |
| Maturity | Young project, pre-1.0 | Developed since 2001, with a large ecosystem |
Where neoserver is a good fit
- You want a modern console. The embedded console covers the complete workflow: connecting and testing stores, uploads with a validated import plan, publishing layers and coverages, a style editor, service settings, tile cache seeding, an interactive MapLibre preview, and ready-to-copy client examples. It also includes operator views for audit history, roles and policies, and identity sessions. See Administration console.
- You also automate. Everything in the console goes through the same documented management API, so the steps you take in the browser can be scripted.
- Your data lives in modern formats. DuckDB Spatial and GeoParquet are supported source types in neoserver, readable locally or from HTTPS or S3. In GeoServer 3.0.1, both are community modules. See Publish GeoParquet and DuckDB data.
- You want OGC API next to the classic services. OGC API Features and OGC API Tiles are built in and share publications, styles, and the tile cache with WMS, WFS, and WMTS. No extension installation is required.
- You serve several teams or customers. Each workspace has its own stores, layers, styles, credentials, roles, and service settings. Restricted layers are hidden from clients without access, rather than just being refused.
- You prefer a permissive license. neoserver is MIT licensed.
- You run containers. One image, configuration through TOML or environment variables, health and readiness endpoints, and OpenTelemetry export. See Deployment.
Where GeoServer is still the better choice
Be clear about the gaps before migrating:
- Certification. GeoServer is OGC certified for WMS, WFS, WCS, and WMTS. neoserver publishes conformance test evidence, but it is not an OGC-certified product.
- Processing and catalogs. GeoServer offers WPS and CSW as extensions. neoserver implements neither.
- Older protocol versions. GeoServer also serves WMS 1.1.1, WFS 1.0/1.1, and WCS 1.x for legacy clients. neoserver implements only the current versions listed above.
- Breadth of data sources and extensions. GeoServer supports many more databases and formats, including Oracle, SQL Server, and MongoDB, as well as complex features through app-schema. neoserver’s vector file input is limited to Shapefile, GeoPackage, GeoJSON, and FlatGeobuf.
- Scaling out. GeoServer documents running several nodes behind a load balancer. A neoserver catalog is served by one active process. See single active node.
- Platforms. GeoServer runs wherever Java 17 or 21 runs. neoserver’s supported platform is Linux amd64.
- Maturity. GeoServer has more than two decades of production use, and many integrations and hosting providers support it.
Moving an existing setup
neoserver doesn’t emulate the GeoServer REST API and doesn’t import GeoServer data directories. You recreate the catalog, but your data stays where it is:
- Create one workspace per GeoServer workspace. A neoserver workspace also holds its own API keys and role assignments, which GeoServer manages globally. See core concepts and Create a workspace.
- Reconnect the same sources. Point PostGIS stores at the same databases, and file stores at the same directories after adding them to the path allowlist. See Data sources.
- Publish layers with the same names. Using the same public IDs keeps client configurations recognizable, but service URLs change to
/workspaces/{workspace}/wmsand similar. - Bring your SLD styles. Paste them into the style editor and check each one. Unsupported constructs are rejected when the style is saved, not at render time. See WMS styles.
- Recreate access rules as workspace roles, per-layer rules, and scoped API keys. See Authentication and access.
- Repoint clients such as QGIS, web maps, and scripts, using the connection examples on the console’s Endpoints page. Clients that depend on WMS 1.1.1, WFS 1.x, or WCS 1.x need to switch to the versions neoserver supports.
To try it first, the console tutorial takes you from an empty server to a published PostGIS layer on your own machine.