MapServer is one of the oldest open source map servers. Its roots go back to 1996 at the University of Minnesota, and it is now an OSGeo project. Like neoserver, it publishes geospatial data through OGC services. The two differ mainly in how you configure them and in what they include beyond rendering.
This comparison is based on the source code of MapServer 8.6.6.
At a glance
| neoserver | MapServer 8.6.6 | |
|---|---|---|
| Runtime | Go server, one Docker image with the console and native geospatial libraries | C/C++ program run as CGI or FastCGI behind a web server, plus MapScript bindings for embedding in applications |
| License | MIT | MIT-style MapServer license |
| Configuration | Web console and management REST API. The catalog is stored encrypted. | Mapfiles (text configuration files) and a global configuration file. No administration interface. |
| Classic services | WMS 1.3.0, WFS 2.0.0/2.0.2, WCS 2.1/2.0.1, WMTS 1.0 | WMS 1.0–1.3.0, WFS 1.0/1.1/2.0, WCS 1.0/1.1/2.0, and SOS. WMTS is not part of MapServer itself. |
| OGC API | OGC API Features, including CQL2 filters and queryables, and OGC API Tiles | OGC API Features Part 1 (core, GeoJSON, HTML, OpenAPI) and Part 2 (CRS). No CQL2 filtering. |
| Tiles | OGC API Tiles and WMTS with a persistent cache on the filesystem or S3, and seeding jobs | Mapbox Vector Tile output from map requests |
| Data sources | PostGIS, DuckDB Spatial, GeoParquet, common vector files, GeoTIFF/COG, NetCDF, GRIB2 | Shapefile, PostGIS, Oracle, SQL Server, FlatGeobuf, and any format GDAL/OGR can read |
| Styling | SLD/SE, edited in the console | Mapfile classes and styles, plus SLD |
| Access control | Workspaces, roles, scoped API keys, OIDC console sign-in, and per-layer rules built in | None for clients. Access control is left to the web server or a proxy. |
| Maturity | Young project, pre-1.0 | Developed since 1996 |
Where neoserver is a good fit
- You’d rather not maintain mapfiles. neoserver is configured in a web console: connect stores, publish layers, edit styles, and turn services on or off without editing text files or restarting processes. The same actions are available through the management API for automation.
- You need access control. Workspaces, roles, scoped API keys, and per-layer read rules are part of the server. MapServer leaves authentication and authorization to whatever runs in front of it.
- You want modern OGC API features. neoserver supports CQL2 filters and queryables in OGC API Features and serves OGC API Tiles. See PostGIS as OGC API Features.
- You serve tiles at scale. WMTS and OGC API Tiles share a persistent cache with quotas and resumable seeding jobs, so you don’t need a separate tile cache in front. See Vector tiles from PostGIS.
- Several teams or customers share one server. Workspaces keep stores, layers, styles, and credentials apart.
Where MapServer is the better choice
- Older protocol versions and SOS. MapServer serves WMS 1.0–1.1.1, WFS 1.0/1.1, WCS 1.0/1.1, and Sensor Observation Service. neoserver only implements the current versions.
- Breadth of data sources. Through GDAL/OGR, MapServer reads almost any geospatial format, and it has native drivers for Oracle and SQL Server.
- Embedding. MapScript lets applications drive MapServer directly from code.
- Platforms and footprint. MapServer runs as a small CGI or FastCGI program on many operating systems. neoserver’s supported platform is Linux amd64.
- Maturity. MapServer has three decades of production use and a large body of existing mapfiles, tutorials, and hosting experience.
Moving from MapServer
There is no mapfile importer. Recreate the configuration in the console:
- Map each mapfile to a workspace, or group related mapfiles in one workspace. See Create a workspace.
- Reconnect the data as stores. PostGIS connections move over directly. File sources need their paths added to the path allowlist.
- Publish the layers with the same names that clients already use.
- Convert styles to SLD. If you already publish SLD from MapServer, start from that. Otherwise, rebuild the classes in the style editor.
- Recreate access rules that your web server or proxy enforced as workspace roles and scoped API keys. See Authentication and access.