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:

  1. Recuperare, nel file env, la password generata per Geoserver, alla riga “GEOSERVER_ADMIN_PASSWORD”

  2. Collegarsi alla pagina di Geoserver, all’indirizzo https://dominio.scelto.tld/geoserver (ad esempio, https://sottodominio.esempio.tld/geoserver

  3. Accedere con le credenziali di default: user=admin password=geoserver

  4. Cliccare su “Users, Groups, Roles” nella sezione “Security”

modifica_password_geonode_1

  1. Cliccare su “Users/Groups”, “admin”

modifica_password_geonode_2

  1. Inserire negli appositi campi la password recuperata al punto 1

modifica_password_geonode_3

  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_HOST rappresenta il nome, o l’indirizzo IP, del server smtp da utilizzare

  • DJANGO_EMAIL_PORT rappresenta la porta da utilizzare per la connessione

  • DJANGO_EMAIL_HOST_USER rappresenta il nome utente da utilizzare per l’autenticazione

  • DJANGO_EMAIL_HOST_PASSWORD rappresenta la password da utilizzare per l’autenticazione

  • DJANGO_EMAIL_USE_TLS indica se utilizzare la crittazione TNS

  • DEFAULT_FROM_EMAIL indica 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.