Ciao a tutti,
condivido con voi la mia esperienza per il set-up dell’ambiente necessario per diventare RAO pubblico.
Consiglio l’uso di una VPS in Cloud, nel mio caso ho usato Ubuntu 20.04 LTS, altro requisito necessario è una casella e-mail dal quale far inviare le notifiche ai cittadini.
- Richiedere il Sigillo ad AgID
Per ottenere un ambiente funzionante occorre inviare una richiesta ad AgID via PEC.
a. Generare un CSR (molto utile questo tool)
b. Calcolarne l’hash in SHA1
c. Compilare il documento di richiesta ed inviarlo via PEC ad AgID - ricordarsi di allegare anche il CSR.
- Preparare la VPS
La procedura si basa sull’uso di due componenti open-source: sono rao-pubblico e rao-pubblico-signer. Il primo consiste in un webserver ed il secondo nel vero e proprio componente di firma.
Avendo a disposizione una VPS con Ubuntu, aggiorniamo il tutto con apt update
ed apt upgrade
prima di partire. Consiglio vivamente l’uso di UFW per ‘blindare’ il VPS al solo IP statico dell’Ente, piuttosto che l’uso di una VPN.
Partiamo dal rao-pubblico-signer, che necessita di un virutal environment in Python.
Creiamo il venv con il comando python -m venv venv-rao-signer
, entriamo nel venv con cd venv-rao-signer
, e abilitiamo l’environment appena creato con source bin/activate
.
Cloniamo la repo all’interno dell’environment con git clone https://github.com/Sielte/rao-pubblico-signer
, successivamente entriamoci con cd rao-pubblico-signer
.
Installiamo i requisiti con pip install -r requirements.txt
.
Effettuiamo le migrazioni:
python3 manage.py makemigrations
python3 manage.py makemigrations api
python3 manage.py migrate
python3 manage.py migrate api
Siamo pronti, ora non ci resta che avviare il server con il seguente comando.
python3 manage.py runserver 9000
Il server si attiverà sulla porta 9000 TCP ed accetterà richieste solo da localhost. Se, per scopi di test, volessimo permettergli di accettare richieste da tutti gli IP, anteporre 0.0.0.0
al 9000.
Concentriamoci sul secondo componente, andiamo nella home directory semplicemente digitando cd
.
Cloniamo l’altra repository con git clone https://github.com/Sielte/rao-pubblico
, ed entriamoci con cd rao-pubblico
.
Ora, effettuiamo il building della immagine Docker con docker build --no-cache -f "./compose/local/django/Dockerfile" -t "rao-app:latest" .
, e creiamo il volume in cui il container andrà ad immagazzinare i dati con docker volume create "rao-data" &> /dev/null || true
.
Non ci resta che evocare il comando docker run, invito a far riferimento al readme su Github, tuttavia riporto qui il comando da me usato, a mio avviso un buon compromesso tra semplicità d’uso e sicurezza.
docker run -d --name "rao" -e SIGN_URL="http://127.0.0.1:9000/v2/" -e BASE_URL="http://rao.comune.citta.prov.it:8000/" -e DATABASE_NAME="/data/rao-db.sqlite3" -e MAIL_LOG_LEVEL="ERROR" -e PORTAL_LOG_LEVEL="INFO" -e AGENCY_LOG_LEVEL="INFO" -e RAO_NAME="Comune di Test" --mount type=volume,source="rao-data",target="/data" --restart unless-stopped --network host "rao-app:latest" "/start"
Si premette che rao.comune.citta.prov.it abbia un record DNS tale che punti verso l’IP pubblico del VPS, rispetto i parametri indicati nel Github, io ho aggiunto:
--restart unless-stopped
= riavvia il container in caso di crash
--network host
= il network utilizzato dal cotainer, al contrario di usare una propria subnet interna all’host, utilizza la configurazione di rete alla quale l’host appartiene, il che permette di risparmiarsi un livello in più di astrazione e quindi complessità, di cui a mio avviso possiamo fare a meno
Fatto ciò, avremo il signer in esecuzione sulla porta 9000 e il docker in esecuzione sulla porta 8000.
Dirigiamoci con un browser all’IP/dominio del VPS alla porta 8000 e dovremmo entrare nel set-up dell’istanza.
Da qui in poi possiamo far riferimento alle istruzioni contenute nella repository rao-pubblico.
IMPORTANTE
Arriveremo al punto in cui l’admin dovrà cambiare (=creare) il proprio PIN, e ci verrà chiesto di inserire il vecchio PIN, che non avremo.
La creazione del PIN dell’admin, deve essere fatta manualmente tramite una chiamata curl.
Rechiamoci quindi in ssh sul VPS, e con il rao-pubblico-signer attivo digitiamo curl -X POST -F "username=CODFISCALEADMIN" -F "entity=CODCATASTALE" http://127.0.0.1:9000/v2/api/init
, dove CODFISCALEADMIN è il codice fiscale dell’amministratore appena indicato, e CODCATASTALE rappresenta appunto il codice catastale.
Se tutto va bene, riceveremo in risposta il PIN provvisorio, da usare come vecchio PIN al fine di impostare quello di nostra scelta.
- Verificare le identità
Adesso con l’ausilio delle istruzioni possiamo creare l’account dell’operatore che materialmente si occuperà di verificare le identità.
Questa guida è stata testata da me, ma ogni suggerimento o miglioria è assolutamente ben accetta.
Spero di aver portato un buon contributo per chiunque voglia cimentarsi nella creazione dell’ambiente RAO per il proprio ente!
Buona giornata!