GeoServer is an open-source server for sharing and editing geospatial data from any major spatial data source using open standards.
GeoServer Cloud builds on GeoServer to provide a Cloud Native distribution of its geospatial services and APIs.
The following diagram shows the system’s general architecture.
GeoServer Cloud is designed to achieve functional decomposition by business capability, adapting and extending GeoServer components to promote higher cohesion and lower coupling.
Each OWS service, the Web UI, and the REST API are restructured as self-contained, individually deployable, and scalable microservices.
Since GeoServer is a traditional Spring Framework monolithic servlet application, GeoServer Cloud leverages Spring Boot for microservice conversion.
Additionally, GeoServer Cloud uses Spring Cloud to provide essential capabilities for building scalable and resilient distributed systems, such as:
- Service Communication and Discovery: Ensuring that services can dynamically find and communicate with each other without hard-coded addresses, which is key for a distributed system that may scale or change frequently.
- Configuration Management: Allowing centralized or externalized configuration, so each service can be configured independently, which is important for flexibility and ease of management.
- Event Coordination: Handling distributed events so that services can react to changes or triggers in real-time, enhancing the system’s responsiveness and resilience.
- API Management: Providing a single entry point through an API gateway, which simplifies client interactions, enhances security, and enables load balancing for improved scalability.
GeoServer Cloud integrates GeoServer ACL, and advanced authorization system based on Access Control Lists.
Only a curated selection of the extensive GeoServer extensions is supported, ensuring compatibility and optimized performance in this cloud-native environment. The current supported extensions include:
- Catalog and Configuration:
- PGConfig
- JDBC
jdbcconfig
andjdbcstore
(deprecated) - Optimized Catalog Data-Directory loader
- Security:
- GeoServer ACL
- JDBC Security
- LDAP Security
- Key Authentication
- GeoNode Authentication
- Cartography:
- CSS Styling
- MBStyle Styling
- Input Sources:
- GeoPackage
- Cloud Optimized GeoTIFF
- Pre-generalized Features
- ImagePyramid
- PostGIS Raster
- Output Formats:
- WFS FlatGeobuf
- WFS DXF
- WMS VectorTiles
- Tiling Extensions:
- S3 Tile Storage
- Azure Blob Storage
- Miscellaneous:
- Importer
- Resource Browser Tool
- International Astronomical Union CRS authority
GeoServer Cloud licensed under the GPLv2.
-
Docker images for all the services are available on DockerHub, under the GeoServer Cloud organization.
-
A base Helm Chart for Kubernetes is available at the camptocamp/helm-geoserver-cloud Github repository.
If you're looking for instructions to just get GeoServer Cloud up and running for a quick evaluation, consider the following documentation sources:
-
The Quick Start guide provides instructions on how to get up and running with
docker compose
. -
The Helm Chart repository provides examples of how to start deploying on Kubernetes.
v1.8.12
released on top of GeoServer 2.25.3
.
Check out the full Release Notes for a changelog.
Please read the contribution guidelines before contributing pull requests to the GeoServer Cloud project.
Follow the developer's guide to know more about the project's technical details.
GeoServer Cloud uses GitHub issues to track project-specific bugs and feature requests.
The upstream GeoServer project uses JIRA for issue tracking.
If you encounter a bug, please check if it's reported as a GeoServer bug in JIRA first.
Requirements:
This is a super quick-start guide to make your first build. For more detailed information on the build process and options, follow the Build Instructions guide.
Clone the repository, including submodules. Alternatively, replace the repository URL by your own fork's:
git clone --recurse-submodules [email protected]:geoserver/geoserver-cloud.git
Build with:
cd geoserver-cloud/
make
The make
command will compile, test, and install all the project artifacts. It will also build the GeoServer-Cloud Docker images for your local platform. The CI/CD build will instead build milti-platform images for linux/amd64
and linux/arm64
architectures, and publish them to the docker.io
Docker registry.
The compose/
folder contains several docker compose files that are exclusively for development purposes. If you want to run a GeoServer Cloud Docker composition for
development and testing, cd compose
and run one of the following scripts. Each of them starts the composition with a different GeoServer Catalog back-end:
./pgconfig up -d
: runs GeoServer Cloud with the new and shiny PostgreSQL catalog back-end./datadir up -d
: runs GeoServer Cloud with a bind-mounted shared data directory./jdbcconfig up -d
: runs GeoServer Cloud with the older and deprecatedjdbcconfig
catalog back-end
Verify the services are running:
$ curl "http://localhost:9090/geoserver/cloud/ows?request=getcapabilities&service={WMS,WFS,WCS,WPS}"
$ curl -u admin:geoserver "http://localhost:9090/geoserver/cloud/rest/workspaces.json"
Browse to http://localhost:9090/geoserver/cloud/