📦 Get Started with GeoServer
A step-by-step technical guide to installing, configuring, and deploying your first geospatial workspace. Expected time: ~15 minutes.
System Requirements
Minimum Specifications
- Java 11+ (OpenJDK or Oracle recommended)
- 2GB RAM (4GB+ for production workloads)
- PostgreSQL 13+ or SQLite for spatial databases
- Node.js 18+ (optional, for CLI tools)
- 500MB free disk space
Installation
Choose your operating system and follow the corresponding setup commands. We recommend using the official Docker image for isolated environments.
Initial Configuration
Access the Admin Console
Navigate to http://localhost:8080/geoserver/web/. Use the default credentials: admin / geoserver. Change these immediately in Production Mode.
Create a Workspace & Data Store
Go to Data → Workspaces to create your organization namespace. Then configure a Data Store pointing to your PostgreSQL/PostGIS database or file system.
Set Caches & Logging
Enable Image Caching for WMS tiles under Services → WMS. Configure logging levels in Server → Logging for debugging.
Create Your First Layer
Once your data store is connected, publish a layer using the CLI or web UI. Here's a quick Python snippet using geoapi:
API Quickstart
GeoServer exposes OGC-compliant endpoints alongside a REST administrative API. Common starting points:
| Endpoint | Method | Use Case |
|---|---|---|
/ows |
GET | Service discovery & capabilities |
/wms |
GET | Render map images (PNG/JPEG/TIFF) |
/wfs |
GET / POST | Query & edit feature data |
/rest/config |
POST / PUT | Programmatic admin configuration |
Verification Checklist
Track your progress. Checked items are saved locally in your browser.
Troubleshooting
Common Issues & Fixes
- Port 8080 in use: Run
netstat -tulpn | grep 8080or change `- Permission denied on data_dir: Ensure the runtime user owns `/opt/geoserver/data_dir` recursively:
sudo chown -R $USER:$GROUP /opt/geoserver/data_dir.- WMS blank tiles: Verify CRS matches layer projection, check logging for `java.lang.OutOfMemoryError`, and increase JVM heap in `startup.sh`.
- Permission denied on data_dir: Ensure the runtime user owns `/opt/geoserver/data_dir` recursively:
Still stuck? Check the server logs or open an issue on GitHub.