{"id":13425740,"url":"https://github.com/geoserver/geoserver-cloud","last_synced_at":"2026-01-22T15:22:16.938Z","repository":{"id":36979408,"uuid":"278397560","full_name":"geoserver/geoserver-cloud","owner":"geoserver","description":"Cloud Native GeoServer is GeoServer ready to use in the cloud through dockerized microservices.","archived":false,"fork":false,"pushed_at":"2026-01-07T01:42:34.000Z","size":35841,"stargazers_count":301,"open_issues_count":45,"forks_count":92,"subscribers_count":37,"default_branch":"main","last_synced_at":"2026-01-20T13:59:18.849Z","etag":null,"topics":["cloud-native","geoserver","geospatial","java","microservices","spring-boot","spring-cloud"],"latest_commit_sha":null,"homepage":"http://geoserver.org/geoserver-cloud","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/geoserver.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-07-09T15:10:13.000Z","updated_at":"2026-01-20T02:38:24.000Z","dependencies_parsed_at":"2025-12-07T03:03:03.899Z","dependency_job_id":null,"html_url":"https://github.com/geoserver/geoserver-cloud","commit_stats":null,"previous_names":[],"tags_count":96,"template":false,"template_full_name":null,"purl":"pkg:github/geoserver/geoserver-cloud","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geoserver%2Fgeoserver-cloud","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geoserver%2Fgeoserver-cloud/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geoserver%2Fgeoserver-cloud/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geoserver%2Fgeoserver-cloud/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/geoserver","download_url":"https://codeload.github.com/geoserver/geoserver-cloud/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geoserver%2Fgeoserver-cloud/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28665097,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-22T14:01:31.714Z","status":"ssl_error","status_checked_at":"2026-01-22T13:59:23.143Z","response_time":144,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloud-native","geoserver","geospatial","java","microservices","spring-boot","spring-cloud"],"created_at":"2024-07-31T00:01:17.750Z","updated_at":"2026-01-22T15:22:16.928Z","avatar_url":"https://github.com/geoserver.png","language":"Java","funding_links":[],"categories":["Java","云原生"],"sub_categories":[],"readme":"[![SonarCloud](https://sonarcloud.io/images/project_badges/sonarcloud-white.svg)](https://sonarcloud.io/summary/new_code?id=geoserver_geoserver-cloud)\n\n[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=geoserver_geoserver-cloud\u0026metric=reliability_rating)](https://sonarcloud.io/summary/new_code?id=geoserver_geoserver-cloud)\n[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=geoserver_geoserver-cloud\u0026metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=geoserver_geoserver-cloud)\n[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=geoserver_geoserver-cloud\u0026metric=security_rating)](https://sonarcloud.io/summary/new_code?id=geoserver_geoserver-cloud)\n[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=geoserver_geoserver-cloud\u0026metric=bugs)](https://sonarcloud.io/summary/new_code?id=geoserver_geoserver-cloud)\n[![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=geoserver_geoserver-cloud\u0026metric=vulnerabilities)](https://sonarcloud.io/summary/new_code?id=geoserver_geoserver-cloud)\n[![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=geoserver_geoserver-cloud\u0026metric=code_smells)](https://sonarcloud.io/summary/new_code?id=geoserver_geoserver-cloud)\n[![Technical Debt](https://sonarcloud.io/api/project_badges/measure?project=geoserver_geoserver-cloud\u0026metric=sqale_index)](https://sonarcloud.io/summary/new_code?id=geoserver_geoserver-cloud)\n\n[![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=geoserver_geoserver-cloud\u0026metric=ncloc)](https://sonarcloud.io/summary/new_code?id=geoserver_geoserver-cloud)\n[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=geoserver_geoserver-cloud\u0026metric=coverage)](https://sonarcloud.io/summary/new_code?id=geoserver_geoserver-cloud)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=geoserver_geoserver-cloud\u0026metric=alert_status)](https://sonarcloud.io/summary/new_code?id=geoserver_geoserver-cloud)\n[![Docker images](https://github.com/geoserver/geoserver-cloud/actions/workflows/build-and-push.yaml/badge.svg)](https://github.com/geoserver/geoserver-cloud/actions/workflows/build-and-push.yaml)\n\n# GeoServer Cloud\n\n[GeoServer](https://geoserver.org/) is an open-source server for sharing and editing geospatial data from any major spatial data source using open standards.\n\n**GeoServer Cloud** builds on GeoServer to provide a [Cloud Native](https://en.wikipedia.org/wiki/Cloud-native_computing) distribution of its geospatial services and APIs.\n\n## Architecture\n\nThe following diagram shows the system’s general architecture.\n\n\u003cimg src=\"docs/src/assets/images/gs_cloud_architecture_diagram.svg\" alt=\"GeoServer Cloud Architecture Diagram\" width=\"740\" /\u003e\n\n*GeoServer Cloud* is designed to achieve [functional decomposition by business capability](https://microservices.io/patterns/decomposition/decompose-by-business-capability.html), adapting and extending *GeoServer* components to promote higher cohesion and lower coupling.\n\nEach OWS service, the Web UI, and the REST API are restructured as self-contained, individually deployable, and scalable microservices.\n\n## Technology\n\nSince *GeoServer* is a traditional [Spring Framework](https://spring.io/) monolithic servlet application, *GeoServer Cloud* leverages [Spring Boot](https://spring.io/projects/spring-boot) for microservice conversion.\n\nAdditionally, *GeoServer Cloud* uses [Spring Cloud](https://spring.io/projects/spring-cloud) to provide essential capabilities for building scalable and resilient distributed systems, such as:\n\n* **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.\n* **Configuration Management**: Allowing centralized or externalized configuration, so each service can be configured independently, which is important for flexibility and ease of management.\n* **Event Coordination**: Handling distributed events so that services can react to changes or triggers in real-time, enhancing the system’s responsiveness and resilience.\n* **API Management**: Providing a single entry point through an API gateway, which simplifies client interactions, enhances security, and enables load balancing for improved scalability.\n\n*GeoServer Cloud* integrates [GeoServer ACL](https://github.com/geoserver/geoserver-acl), and advanced authorization system based on Access Control Lists.\n\n### Supported Extensions\n\nOnly a curated selection of the extensive [GeoServer extensions](http://geoserver.org/release/stable) is supported, ensuring compatibility and optimized performance in this cloud-native environment. The current supported extensions include:\n\n* **Catalog and Configuration**:\n    * PGConfig\n    * JDBC `jdbcconfig` and `jdbcstore` (deprecated)\n* **Security**:\n    * GeoServer ACL\n    * JDBC Security\n    * LDAP Security\n    * Key Authentication\n    * GeoNode Authentication\n* **Cartography**:\n    * CSS Styling\n    * MBStyle Styling\n* **Input Sources**:\n    * GeoPackage\n    * GeoParquet\n    * Cloud Optimized GeoTIFF\n    * PMTiles with vector tiles\n    * Pre-generalized Features\n    * ImagePyramid\n* **Output Formats**:\n    * WFS FlatGeobuf\n    * WFS DXF\n    * WMS VectorTiles\n* **Tiling Extensions**:\n    * S3 Tile Storage\n    * Azure Blob Storage\n    * Google Cloud Storage Blob Storage\n* **Miscellaneous**:\n    * [Control flow](https://docs.geoserver.org/main/en/user/extensions/controlflow/index.html)\n    * Importer\n    * Resource Browser Tool\n    * International Astronomical Union CRS authority\n\n## License\n\n*GeoServer Cloud* licensed under the [GPLv2](LICENSE.txt).\n\n## Distribution and deployment\n\n* Docker images for all the services are available on DockerHub, under the [GeoServer Cloud organization](https://hub.docker.com/u/geoservercloud/).\n\n* A base Helm Chart for Kubernetes is available at the [camptocamp/helm-geoserver-cloud](https://github.com/camptocamp/helm-geoserver-cloud) Github repository.\n\n### First contact:\n\nIf you're looking for instructions to just get *GeoServer Cloud* up and running for a quick evaluation, consider the following documentation sources:\n\n* The [Quick Start guide](https://geoserver.org/geoserver-cloud/#quick-start) provides instructions on how to get up and running with `docker compose`.\n\n* The Helm Chart repository provides [examples](https://github.com/camptocamp/helm-geoserver-cloud/tree/master/examples) of how to start deploying on Kubernetes.\n\n## Status\n\n`v2.28.1.3` released on top of GeoServer `2.28.1`.\n\nCheck out the full [Release Notes](https://github.com/geoserver/geoserver-cloud/releases) for a changelog.\n\n## Contributing\n\nPlease read [the contribution guidelines](CONTRIBUTING.md) before contributing pull requests to the GeoServer Cloud project.\n\nFollow the [developer's guide](docs/develop/index.md) to know more about the project's technical details.\n\n## Bugs\n\n*GeoServer Cloud* uses [GitHub issues](https://github.com/geoserver/geoserver-cloud/issues) to track\nproject-specific bugs and feature requests.\n\nThe upstream *GeoServer* project uses [JIRA](https://osgeo-org.atlassian.net/projects/GEOS) for issue tracking.\n\nIf you encounter a bug, please check if it's reported as a GeoServer bug in JIRA first.\n\n## Building\n\nRequirements:\n\n * Java 25 JDK\n * Maven 3.9.11+ (included with the `mvnw` maven wrapper)\n * A recent [Docker](https://docs.docker.com/engine/install/) version with the [Compose](https://docs.docker.com/compose/) plugin.\n * [GNU Make](https://www.gnu.org/software/make/) (optional, recommended).\n\n\nThis 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](./docs/develop/build_instructions.md) guide.\n\nClone the repository, including submodules. Alternatively, replace the repository URL by your own fork's:\n\n```shell\ngit clone --recurse-submodules git@github.com:geoserver/geoserver-cloud.git\n```\nBuild with:\n\n```shell\ncd geoserver-cloud/\nmake\n```\n\nThe `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.\n\n#### Running the build\n\nThe `compose/` folder contains several docker compose files that are **exclusively** for development purposes. If you want to run a *GeoServer Cloud* Docker composition for\ndevelopment and testing, `cd compose` and run one of the following scripts. Each of them starts the composition with a different GeoServer Catalog back-end:\n\n* `./pgconfig up -d`: runs *GeoServer Cloud* with the new and shiny PostgreSQL catalog back-end\n* `./datadir up -d`: runs *GeoServer Cloud* with a bind-mounted shared data directory\n* `./jdbcconfig up -d`: runs *GeoServer Cloud* with the older and deprecated `jdbcconfig` catalog back-end\n\nVerify the services are running:\n\n```\n$ curl \"http://localhost:9090/geoserver/cloud/ows?request=getcapabilities\u0026service={WMS,WFS,WCS,WPS}\"\n$ curl -u admin:geoserver \"http://localhost:9090/geoserver/cloud/rest/workspaces.json\"\n```\n\nBrowse to [http://localhost:9090/geoserver/cloud/](http://localhost:9090/geoserver/cloud/)\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeoserver%2Fgeoserver-cloud","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgeoserver%2Fgeoserver-cloud","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeoserver%2Fgeoserver-cloud/lists"}