Installazione Geonode
La presente guida segue i passi e le indicazioni della documentazione ufficiale.
Installazione delle dipendenze
Le seguenti dipendenze sono necessarie:
docker
docker-compose
python-venv
Queste possono essere installate su Debian con il comando:
apt install docker.io docker-compose python3.10-venv
Preparazione di Geonode
È necessario clonare il repository github di Geonode, con il comando:
git clone https://github.com/GeoNode/geonode-project.git -b 4.1.x
Dopodiché è possibile attivare il virtual environment, ed installare la versione richiesta di Django
python3 -m venv ./.venvs/geonodefull
source ./.venvs/geonodefull/bin/activate
pip install Django==3.2.13
Possiamo poi generare il progetto Django, in una nuova cartella “geonodefull”:
django-admin startproject --template=./geonode-project -e py,sh,md,rst,json,yml,ini,env,sample,properties -n monitoring-cron -n Dockerfile geonodefull
E generare il file .env di partenza, specificando il dominio (sottodominio.esempio.tld), la mail dell’utente admin (mail@esempio.tld, utilizzata per la richiesta del certificato ssl), il tipo di ambiente (prod), e l’abilitazione dell’https:
Attention
Questo passaggio assume che il dominio sottodominio.esempio.tld sia valido, punti al server su cui viene installato geonode, e che quest’ultimo sia raggiungibile dall’esterno.
In caso contrario, omettere le direttive --https, --env_type, --hostname e --mail per configurare Geonode senza https.
python3 geonodefull/create-envfile.py --https --env_type prod --hostname sottodominio.esempio.tld --email mail@esempio.tld
Possiamo quindi entrare nella nuova cartella, generare le immagini di docker, ed avviare i processi, con i comandi seguenti. Questa fase richiederà un po’ di tempo.
cd geonodefull
docker-compose build
docker-compose up -d
Quando tutti i container sono correttamente avviati, geonode dovrebbe essere attivo sul dominio specificato, in https.
Modifica della password di Geoserver
L’istanza di Geonode così avviata restituirà un errore in fase di caricamento dei file. Questo accade poiché la generazione del file env genera una password di Geoserver, che non viene correttamente impostata all’interno dello stesso. Vedi anche:
È quindi necessario:
Recuperare, nel file env, la password generata per Geoserver, alla riga “GEOSERVER_ADMIN_PASSWORD”
Collegarsi alla pagina di Geoserver, all’indirizzo https://dominio.scelto.tld/geoserver (ad esempio, https://sottodominio.esempio.tld/geoserver
Accedere con le credenziali di default: user=admin password=geoserver
Cliccare su “Users, Groups, Roles” nella sezione “Security”

Cliccare su “Users/Groups”, “admin”

Inserire negli appositi campi la password recuperata al punto 1

Cliccare su “Save”, in fondo alla pagina
Configurazione mail
Per configurare la mail, è necessario modificare il file .env, nell’apposita sezione, ed abilitare le seguenti opzioni, sostituendo server, username e password:
EMAIL_ENABLE=True
DJANGO_EMAIL_BACKEND=django.core.mail.backends.smtp.EmailBackend
DJANGO_EMAIL_HOST=smtp.server.tld
DJANGO_EMAIL_PORT=587
DJANGO_EMAIL_HOST_USER=smtp_user@server.tld
DJANGO_EMAIL_HOST_PASSWORD="Password_corretta"
DJANGO_EMAIL_USE_TLS=True
DEFAULT_FROM_EMAIL='user_geonode@server.tld'
Attention
Questo passaggio assume che il server smtp.server.tld utilizzi TLS sulla porta 587.
In caso contrario, modificare le opzioni DJANGO_EMAIL_USE_TLS e DJANGO_EMAIL_PORT di conseguenza.
In particolare:
DJANGO_EMAIL_HOSTrappresenta il nome, o l’indirizzo IP, del server smtp da utilizzareDJANGO_EMAIL_PORTrappresenta la porta da utilizzare per la connessioneDJANGO_EMAIL_HOST_USERrappresenta il nome utente da utilizzare per l’autenticazioneDJANGO_EMAIL_HOST_PASSWORDrappresenta la password da utilizzare per l’autenticazioneDJANGO_EMAIL_USE_TLSindica se utilizzare la crittazione TNSDEFAULT_FROM_EMAILindica l’indirizzo email dal quale verranno inviati i messaggi
Dopodiché, ricreare i container con
docker-compose up -d
Registrazione utenti
Per consentire la registrazione degli utenti, modificare nel file .env le seguenti opzioni
ACCOUNT_OPEN_SIGNUP=True
ACCOUNT_EMAIL_REQUIRED=True
Dopodiché, ricreare i container con
docker-compose up -d
Configurazione Recaptcha
Per configurare il Recaptcha Google alla registrazione, inserire le seguenti righe nel file .env, inserendo le chiavi corrette (versione v2):
RECAPTCHA_ENABLED=True
RECAPTCHA_PUBLIC_KEY=*******************************************
RECAPTCHA_PRIVATE_KEY=*******************************************
Dopodiché, ricreare i container con
docker-compose up -d
Chiusura porte
I container comunicano tra loro tramite la rete interna di Docker, ed il container di Geonode comunica con l’esterno. È quindi possibile commentare, all’interno del file docker-compose.yml, tutte le porte salvo quelle di Geonode. Riportiamo di seguito un estratto del file yml, nel quale sarà necessario commentare le porte non richieste.
Porte Geonode aperte:
geonode:
image: geonode/nginx:1.23.3
build: ./docker/nginx/
container_name: nginx4${COMPOSE_PROJECT_NAME}
environment:
- HTTPS_HOST=${HTTPS_HOST}
- HTTP_HOST=${HTTP_HOST}
- HTTPS_PORT=${HTTPS_PORT}
- HTTP_PORT=${HTTP_PORT}
- LETSENCRYPT_MODE=${LETSENCRYPT_MODE}
- HTTP_SCHEME=${HTTP_SCHEME}
- HTTP_PROXY_NAME=${HTTP_PROXY_NAME}
- RESOLVER=127.0.0.11
ports:
- "${HTTP_PORT}:80"
- "${HTTPS_PORT}:443"
Porte di Geoserver chiuse (commentate):
geoserver:
image: geonode/geoserver:2.23.0
build: ./docker/geoserver/
container_name: geoserver4${COMPOSE_PROJECT_NAME}
healthcheck:
test: "curl --fail --silent --write-out 'HTTP CODE : %{http_code}\n' --output /dev/null http://127.0.0.1:8080/geoserver/ows"
start_period: 60s
interval: 60s
timeout: 10s
retries: 10
env_file:
- .env
# ports:
# - "8080:8080"
Porte di jenkins chiuse (commentate):
jenkins:
image: jenkins/jenkins:2.164-jdk11
container_name: jenkins4${COMPOSE_PROJECT_NAME}
user: jenkins
# ports:
# - '${JENKINS_HTTP_PORT}:${JENKINS_HTTP_PORT}'
# - '${JENKINS_HTTPS_PORT}:${JENKINS_HTTPS_PORT}'
# - '50000:50000'
# network_mode: "host"
Dopo aver commentato le porte, ricreare i container con
docker-compose up -d
Risoluzione problemi
Nel caso in cui la pagina di Geoserver presentasse alcuni elementi in http semplice, verificare le configurazioni presenti a questa pagina.