Skip to content

Cloud Native GeoServer is GeoServer ready to use in the cloud through dockerized microservices.

License

Notifications You must be signed in to change notification settings

geoserver/geoserver-cloud

Repository files navigation

SonarCloud

Reliability Rating Maintainability Rating Security Rating Bugs Vulnerabilities Code Smells Technical Debt

Lines of Code Coverage Quality Gate Status Docker images

GeoServer Cloud

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.

Architecture

The following diagram shows the system’s general architecture.

GeoServer Cloud Architecture Diagram

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.

Technology

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.

Supported Extensions

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 and jdbcstore (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

License

GeoServer Cloud licensed under the GPLv2.

Distribution and deployment

First contact:

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.

Status

v1.8.12 released on top of GeoServer 2.25.3.

Check out the full Release Notes for a changelog.

Contributing

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.

Bugs

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.

Building

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 git@github.com: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.

Running the build

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 deprecated jdbcconfig 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/