This document will guide you through the installation of GeoNode, a spatial content management system. The needed components are available as Docker images and will be set up and run via the docker compose tool.
Here is a short overview of the installed components and how they are connected.
The components are:
- Django: The actual GeoNode component. It exposes a pyCSW API and the GeoNode API.
- Celery: Celery forms the asynchronuous task queue of GeoNode.
- GeoServer: GeoServer is the backend server of GeoNode for sharing geospatial data. It exposes OGC APIs such as WMS, WFS, etc.
- Nginx: Nginx serves as advanced load balancer, web server and reverse proxy to all GeoNode components.
- PostgreSQL: GeoNode and GeoServer are using PostgreSQL with the geospatial extension PostGIS as the database.
Make sure you have installed git
, Docker
and docker compose
.
Clone the repository containing a GeoNode Docker setup and change directory your local working copy:
git clone --recurse-submodules https://github.com/GeoNodeUserGroup-DE/geonode-blueprint-docker geonode
cd geonode
💡 Note
Settings (e.g. geodatabase parameters) are mainly configured in the
.env
file. To review in-built default settings of an image, run theenv
command on an image. For exampledocker run 52north/geonode-geoserver env | sort
.For a complete set of available options take the GeoNode Settings documentation as a reference.
The containers get configured during creation via environment variables.
The geonode/settings.py
settings module takes further configuration of the GeoNode containers (django
and celery
) and aligns some names with those documented.
Copy the sample.env
to .env
and make your changes (.env
is not versioned).
For a quick start taking default values you can run docker compose up -d --env-file=sample.env
.
Have a look at the Ways to set environment variables in Compose documentation.
If you want to configure a TLS certificate, you can mount key and cert as pem
s in the geonode
service within the docker-compose.yml
file.
Uncomment the corresponding lines:
volumes:
- nginx-confd:/etc/nginx
- statics:/mnt/volumes/statics
# Link to a custom certificate here
#- <path-to-cert>.pem:/geonode-certificates/autoissued/fullchain.pem
#- <path-to-key>.pem:/geonode-certificates/autoissued/privkey.pem
Run docker compose up -d
to start all geonode components.
Review all started components by executing docker compose ps
.
You can follow logs via docker compose logs -f
and optionally pass a service to only follow a service's log.
Stop all components via docker compose down
, and pass a -v
flag to clean up all volumes (CAUTION: removes all persisted data).
For more features and available commands, docker compose --help
, or read the docker compose CLI documentation.
When running GeoNode on a systemd-based Linux, you may want to add a service unit:
/etc/systemd/system/geonode.service
[Unit]
Description=GeoNode Docker Installation
[Service]
Type=oneshot
ExecStart=docker compose up -d /path/to/workingcopy
[Install]
WantedBy=multi-user.target
Then reload the systemd daemon:
systemctl daemon-reload
And enable GeoNode start on each boot:
systemctl enable geonode.service
Check the service status:
systemctl status geonode.service