Manual/Reference

Deploy hosted layers

Meratyn includes a Docker Compose profile for a headless GeoNode 5.1 and GeoServer 2.28 stack. Meratyn remains the admin application; the GeoNode web interface is infrastructure, not an embedded user workflow.

Local stack

Copy .env.example to .env, replace every hosted-layer password, and run:

docker compose -f docker/compose/admin.yaml --profile hosted-layers up --build -d
docker compose -f docker/compose/admin.yaml --profile hosted-layers ps

The first GeoNode initialization can take several minutes. Share is available at https://admin.mappview.mapptech.com.co, the Meratyn viewer at https://mappview.mapptech.com.co, and the optional loopback-only GeoNode diagnostic proxy at http://localhost:8081. Users should work in Share at /layers; the diagnostic port exists for administrators and health investigation.

GeoServer binds to 127.0.0.1:18081 for the host nginx route only. Install scripts/deploy/nginx/admin.mappview.mapptech.com.co.conf on the production host and reload nginx before deploying the stack. The route exposes OGC and GeoWebCache traffic while rejecting GeoServer administration paths. GeoServer is part of the normal code-service deployment batch so the loopback mapping is applied before the WMS health check runs.

The plugin registry is built and served by the plugins Compose service on 127.0.0.1:8789. Install scripts/deploy/nginx/plugins.mappview.mapptech.com.co.conf on the production host so the public plugin origin proxies to that container; do not maintain a second generated registry under /var/www.

Stop without deleting data:

docker compose -f docker/compose/admin.yaml --profile hosted-layers down

Named volumes retain admin objects, PostgreSQL databases, GeoServer data, GeoNode static/media data, and Redis state. Adding --volumes intentionally deletes the local environment and is not recoverable unless those volumes were backed up.

Services

ServiceRole
adminProduct API, catalogue projection, policy, and admin UI
geonode-djangoGeoNode metadata and ingestion API
geonode-celeryAsynchronous imports and provider jobs
geoserverOGC and tile publication
geonode-dbGeoNode and spatial PostGIS databases
geonode-redisCelery broker and results
geonode-memcachedGeoNode cache
geoserver-dataInitializes the GeoServer data directory
geonode-proxyGeoNode nginx/static proxy; diagnostic exposure locally

The image versions match the official GeoNode 5.1 deployment family and are pinned in docker/compose/admin.yaml. Upgrade the GeoNode, GeoServer, data-directory, nginx, and PostGIS images as one tested stack.

geoserver-data copies the GeoNode GeoServer data directory into its named volume on first start and remains running after that. GeoServer waits for its global.xml healthcheck before it starts.

Configuration

The important Share/provider variables are:

VariablePurpose
GEONODE_API_URLInternal Django origin used by Share
GEONODE_PUBLIC_URLCanonical proxy origin used when generating public links
GEONODE_PUBLIC_HOSTHost and port advertised by the publishing service
GEONODE_HTTP_SCHEMEPublic http or https scheme
GEONODE_ADMIN_USERNAMEService account used by the adapter
GEONODE_ADMIN_PASSWORDService account secret
GEONODE_OAUTH2_CLIENT_IDOAuth2 client identifier used by the stock service stack
GEONODE_OAUTH2_CLIENT_SECRETOAuth2 client secret; replace the development value
GEONODE_REQUEST_TIMEOUT_MSProvider request timeout
MAX_LAYER_BYTESMaximum local upload size accepted by the development service
LAYER_ACCESS_TTL_SECONDSDirect-asset access-session lifetime, 60–3600 seconds

The Compose file also supplies database, map server, broker, site, host, administrator, and the stock image’s required STATIC_ROOT and MEDIA_ROOT mount paths. Values in .env.example are development placeholders, not production credentials.

Production rules

  • Terminate TLS at one public reverse proxy and expose Share as the product origin.
  • Do not publish Django, GeoServer administration, PostGIS, Redis, or memcached.
  • Prefer a dedicated least-privilege GeoNode service account over the bootstrap administrator once the required permissions are known.
  • Store credentials as platform secrets rather than Compose environment values.
  • Use S3-compatible storage and resumable multipart uploads for large datasets.
  • Set explicit request, archive, ingestion, and GeoServer resource limits.
  • Back up Share state, object storage, both PostGIS databases, and GeoServer data on a coordinated schedule, and test restoration.
  • Monitor failed import jobs, Celery queues, provider reconciliation, database capacity, asset storage, and tile/OGC latency.

GeoNode and GeoServer are stateful application services. A production upgrade requires release-note review, database backup, migration rehearsal, and a rollback plan; changing only an image tag is not a safe upgrade procedure.