GeoServer 3.0
Overview
GeoServer is the reference open source server for publishing your geospatial data to the world using open Open Geospatial Consortium (OGC) standards. It speaks WMS (map images), WFS (vector features), WCS (coverages) and WMTS (map tiles). It ships a rich built-in Web Admin console for managing workspaces, data stores and layers, and for previewing them on an interactive map.
The SecureAnyCloud image gives you your own private geospatial server, ready to serve GIS and web mapping applications. It installs GeoServer 3.0.0 from the official platform-independent distribution (bundled Jetty) and runs it as the dedicated geoserver system service under OpenJDK 21. GeoServer is bound to the loopback connector 127.0.0.1:8080 and fronted by nginx on port 80, alongside an unauthenticated health endpoint.
The GEOSERVER_DATA_DIR, its configuration, the shipped sample layers and the tile cache all live on a dedicated Azure data disk. On the first boot of every VM, the image rotates GeoServer's well-known default admin / geoserver credential and generates a unique admin password, so no VM ever ships with a known credential. The sample layers that ship with GeoServer are preloaded, so Layer Preview and a real map render work immediately.
What you get:
- GeoServer 3.0.0 installed from the official platform-independent distribution (bundled Jetty) and run as the
geoserversystem service under OpenJDK 21. GEOSERVER_DATA_DIRrelocated onto a dedicated Azure data disk at/var/lib/geoserver.- GeoServer bound to
127.0.0.1:8080and fronted by nginx on port 80, proxying/geoserver. - Port 80 serving an unauthenticated
/healthzendpoint for load balancer probes. - The shipped sample workspaces and layers preloaded, so Layer Preview and a WMS map render work out of the box.
- A unique
adminaccount password rotated on first boot from GeoServer's defaultadmin/geoserver, recorded in a root-only file. - The keystore master password also rotated away from its default, so the console ships without security warnings.
geoserver.serviceandnginx.serviceas systemd units, enabled and active.- 24/7 SecureAnyCloud support.
Prerequisites
You need an active Azure subscription, an SSH key pair, and a VNet plus subnet in the target region.
Standard_D2s_v4 (2 vCPU / 8 GiB RAM) is a reasonable starting point for a JVM-based geospatial server. Size up for heavier rendering workloads and larger data.
In the NSG, allow inbound 22/tcp from your management network. Also allow 80/tcp for the Web Admin and the OGC services, and 443/tcp if you add TLS. GeoServer is served over plain HTTP by default, so for production, put your own domain and a trusted certificate in front of it (see Maintenance).
Step 1 - Deploy from the Azure Marketplace
Sign in to the Azure Portal, choose Create a resource, and search the Marketplace for GeoServer by SecureAnyCloud. Select Create.
On the Basics tab, pick your subscription, resource group, region and size. Under Administrator account, choose SSH public key and paste your key. Under Inbound port rules, allow SSH (22) and HTTP (80).
Review the dedicated data disk on the Disks tab. Then select Review + create and Create.
Step 2 - Deploy from the Azure CLI
# Accept the Marketplace terms once per subscription (required before the first CLI deploy)
az vm image terms accept --urn sac1647283583153:geoserver-ubuntu-24-04:default:latest
az vm create \
--resource-group <your-rg> \
--name geoserver \
--image sac1647283583153:geoserver-ubuntu-24-04:default:latest \
--size Standard_D2s_v4 \
--admin-username azureuser \
--generate-ssh-keys \
--public-ip-sku StandardAfter the VM is created, open port 80 so that you can reach the Web Admin:
az vm open-port --resource-group <your-rg> --name geoserver --port 80 --priority 900Step 3 - Connect to your VM
ssh azureuser@<vm-public-ip>The first boot rotates the admin password and prints a summary to the message of the day. Your first SSH session therefore shows the Web Admin URL and the location of the credentials file.
Step 4 - Confirm the services are running
GeoServer runs as a systemd service behind nginx. Confirm that both are active, that GeoServer is bound to the loopback connector, and that GEOSERVER_DATA_DIR is on the dedicated data disk:
systemctl is-active geoserver.service nginx.service ss -tlnp | grep -E '127.0.0.1:8080|:80 ' findmnt /var/lib/geoserverStep 5 - Retrieve your admin password and confirm the default is rotated
The per-VM admin password is written to a root-only file at /root/geoserver-credentials.txt (mode 0600). First boot rotates away the well-known default admin / geoserver credential, and both the Web Admin login form and the REST API reject it:
sudo cat /root/geoserver-credentials.txt GS=http://127.0.0.1:8080/geoserver curl -s -o /dev/null -w '%{http_code}\n' -u admin:geoserver $GS/rest/about/version.json
# 401, rejectedStep 6 - Explore the OGC service capabilities
GeoServer advertises each OGC service through a GetCapabilities document. Retrieve the WMS capabilities and confirm that every service answers:
PW=$(sudo grep '^GEOSERVER_ADMIN_PASSWORD=' /root/geoserver-credentials.txt | cut -d= -f2-) GS=http://127.0.0.1:8080/geoserver curl -s -u admin:$PW "$GS/ows?service=WMS&version=1.3.0&request=GetCapabilities" -o wms-capabilities.xml head -n 5 wms-capabilities.xmlStep 7 - Render a map with WMS GetMap
Prove that the geospatial engine renders by requesting a map image of the sample layer topp:states:
PW=$(sudo grep '^GEOSERVER_ADMIN_PASSWORD=' /root/geoserver-credentials.txt | cut -d= -f2-) GS=http://127.0.0.1:8080/geoserver curl -s -u admin:$PW -o states.png \
"$GS/ows?service=WMS&version=1.3.0&request=GetMap&layers=topp:states&bbox=-124.73,24.96,-66.97,49.37&width=512&height=340&srs=EPSG:4326&format=image/png" file states.pngStep 8 - Sign in to the Web Admin
Browse to http://<vm-public-ip>/geoserver/web/, click the user icon, and sign in with admin and the password from Step 5.
The home page shows an Administration panel that summarizes the layers, layer groups, stores and workspaces the server is publishing.
Step 9 - Browse the layers with Layer Preview
Open Layer Preview to browse every layer the server publishes. Each layer offers an OpenLayers preview and downloads in common formats such as GML and GeoJSON.
Step 10 - Preview a layer on an interactive map
Click the OpenLayers link next to the topp:states layer to open it on an interactive slippy map. Pan and zoom to explore the data rendered live by the WMS service.
Step 11 - Manage layers, stores and workspaces
The Layers page under Data lists every published layer with its store, native projection and enabled state. It also gives you the actions to add, remove, enable and disable layers. This is where you publish your own data.
Step 12 - Publish your own data
To publish your own geospatial data, add a store and then publish a layer from it.
In the Web Admin, go to Data > Stores > Add new store. Choose a format (for example PostGIS, GeoPackage, Shapefile or GeoTIFF) and point it at your data. Then go to Data > Layers > Add a new layer, and publish.
Everything you add is written under GEOSERVER_DATA_DIR on the dedicated data disk, so it survives independently of the operating system disk.
Step 13 - Confirm data lives on the dedicated disk
The GEOSERVER_DATA_DIR sits on the dedicated Azure data disk, so your configuration, styles and published data are decoupled from the OS disk and can be resized independently. Confirm it:
findmnt /var/lib/geoserver ls /var/lib/geoserverMaintenance
Add TLS. GeoServer is served over plain HTTP on port 80 by default. For production, point a DNS name at the VM and terminate TLS in nginx, for example with Certbot. The Web Admin and the OGC services are then served over HTTPS on port 443.
Back up the data directory. Everything that matters lives under /var/lib/geoserver: the security configuration, styles, workspaces, stores and layers. Snapshot the data disk, or back up that directory, to preserve your configuration and published data.
Keep the admin password safe. The per-VM password is in /root/geoserver-credentials.txt (root only). You can change it at any time from the Web Admin under Security > Users, Groups, Roles.
Updates. The image ships with unattended security upgrades enabled for the operating system. To upgrade GeoServer itself, follow the project's upgrade notes.
Support
Every SecureAnyCloud image is backed by 24/7 support. If you have any questions about deploying or operating GeoServer on Azure, contact the SecureAnyCloud team.
Deploy on Azure
Launch GeoServer 3.0 on Ubuntu 24.04 LTS on Azure with 24/7 support from SecureAnyCloud.
View this image
Need Help?
Our support team is available 24/7.
sales@secureanycloud.com