Repository private per plugin QGIS: la nostra soluzione

Repository private per plugin QGIS: la nostra soluzione

La distribuzione manuale di plugin QGIS personalizzati rappresenta oggi uno dei principali colli di bottiglia per consulenti e aziende del settore geospaziale.

Noi di Gter abbiamo affrontato in prima persona questo problema, sviluppando una soluzione completa che trasforma la gestione dei plugin da problema operativo a vantaggio competitivo. Come system integrator genovese specializzato in soluzioni GIS per il settore pubblico e ente certificatore ufficiale QGIS per l'Italia, abbiamo combinato la nostra esperienza nello sviluppo di infrastrutture dati spaziali con le crescenti esigenze di automatizzazione del mercato professionale.

Il settore GIS sta vivendo una crescita significativa nell'adozione enterprise di QGIS, evidenziando un gap critico tra le capacità tecnologiche offerte dalla piattaforma e la realtà operativa di molte organizzazioni, che ancora gestiscono la distribuzione di plugin personalizzati attraverso processi manuali costosi e inefficienti.

Il problema che anche noi abbiamo vissuto

Prima di sviluppare la nostra soluzione, anche noi gestivamo la distribuzione di plugin personalizzati in modo tradizionale, affrontando quotidianamente le stesse problematiche dei nostri colleghi del settore. Ogni aggiornamento significava distribuzioni via email, installazioni manuali su ogni workstation dei clienti e aggiornamenti privi di controllo versionale. Questo approccio generava problematiche a cascata: moltiplicazione dei tempi di supporto tecnico, rischio di errori umani nella distribuzione, impossibilità di tracciare le versioni installate presso i clienti e crescita esponenziale del carico di lavoro al crescere della base utenti.

Le repository pubbliche QGIS, pur essendo eccellenti per la community open source, non risolvevano le nostre problematiche aziendali. I plugin che sviluppiamo spesso contengono dati sensibili, algoritmi proprietari o personalizzazioni specifiche per singoli clienti che non possono essere pubblicati su piattaforme pubbliche. La configurazione di repository private tradizionali richiedeva competenze tecniche per gestire server web, file XML di metadati e sistemi di autenticazione, rappresentando un investimento di tempo considerevole.

Prima della nostra soluzione, impiegavamo diverse ore settimanali solo per attività di deployment e supporto, tempo che sottraevamo ad attività a valore aggiunto come sviluppo e consulenza. Questo overhead era diventato rapidamente insostenibile con l'aumentare dei nostri clienti.

La nostra architettura di automazione

Abbiamo progettato e implementato un sistema completo di gestione repository che risolve tutti i problemi che avevamo identificato. La nostra soluzione si basa su un'architettura moderna e scalabile che combina diverse componenti integrate attraverso Docker.

Il cuore del sistema: backend

Al centro della nostra soluzione c'è un backend sviluppato con FastAPI che gestisce tutta la logica di business. Questo componente si occupa dell'autenticazione degli utenti, della gestione delle repository multiple, dell'upload e catalogazione dei plugin. Il sistema supporta la gestione di utenti con diversi livelli di autorizzazione: amministratori che possono creare repository e gestire utenti, e utenti standard che accedono solo alle repository a cui sono autorizzati.

Ogni plugin caricato viene automaticamente catalogato con metadati completi: versione, autore, compatibilità QGIS, descrizione e dipendenze. Il sistema mantiene uno storico completo delle versioni, permettendo rollback immediati quando necessario. La parte più innovativa è la generazione dinamica dei file XML che QGIS utilizza per interrogare le repository: invece di gestire manualmente questi file complessi, il nostro sistema li genera automaticamente in tempo reale in base ai plugin disponibili e ai permessi dell'utente che fa la richiesta.

Database e persistenza

Abbiamo scelto PostgreSQL come database principale per la sua robustezza e affidabilità. Il database memorizza non solo i metadati dei plugin e le informazioni sugli utenti, ma anche le relazioni complesse tra utenti, repository e autorizzazioni. Ogni repository può avere utenti diversi con permessi specifici, e ogni utente può accedere a multiple repository secondo le necessità.

La struttura dati che abbiamo progettato permette una gestione granulare dei permessi: possiamo autorizzare singoli utenti a specifiche repository, gestire utenti admin per operazioni avanzate e mantenere log completi di tutte le operazioni per audit e troubleshooting.

Gestione file e distribuzione

I file dei plugin vengono archiviati nel filesystem del server in directory organizzate per repository. Nginx funge da proxy inverso e si occupa anche di servire i file statici dei plugin. Quando un utente installa o aggiorna un plugin da QGIS, il sistema verifica le autorizzazioni, genera l'URL di download appropriato e serve il file attraverso Nginx.

Questa architettura ci permette di gestire plugin di qualsiasi dimensione senza impattare sulle performance del backend API. Nginx può anche essere configurato con SSL/TLS per garantire connessioni sicure, aspetto fondamentale quando si gestiscono plugin contenenti informazioni sensibili.

Interfaccia di amministrazione

Per semplificare la gestione quotidiana del sistema, abbiamo sviluppato un'interfaccia a riga di comando completa. Attraverso questa CLI, possiamo creare repository, gestire utenti, caricare plugin e monitorare lo stato del sistema senza dover interagire direttamente con il database o i file di configurazione.

La CLI supporta tutte le operazioni principali:

  • Creazione e gestione di repository multiple
  • Gestione utenti con diversi livelli di autorizzazione
  • Upload di nuovi plugin con tutti i metadati necessari
  • Assegnazione di utenti a repository specifiche
  • Monitoraggio e troubleshooting

Questa interfaccia ci permette di automatizzare completamente il processo di pubblicazione: un nuovo plugin può essere caricato, catalogato e reso disponibile agli utenti autorizzati in pochi secondi, senza interventi manuali complessi.

 

Integrazione con i workflow esistenti

Una delle caratteristiche più apprezzate della nostra soluzione è la trasparenza per gli utenti finali. I nostri clienti configurano la repository privata in QGIS esattamente come farebbero con una repository pubblica: inseriscono l'URL che forniamo loro, si autenticano una volta sola, e da quel momento possono installare e aggiornare i nostri plugin direttamente dal Plugin Manager di QGIS.

Il sistema genera automaticamente gli URL endpoint specifici per ogni repository, gestisce l'autenticazione HTTP Basic in modo trasparente e presenta i plugin disponibili con la stessa interfaccia familiare di QGIS. Quando pubblichiamo un aggiornamento, i nostri utenti ricevono la notifica direttamente nel Plugin Manager, proprio come accade per i plugin pubblici.

Il valore aggiunto della nostra implementazione

La soluzione che abbiamo sviluppato va oltre la semplice distribuzione di file. Abbiamo creato un ecosistema integrato che si inserisce perfettamente nei nostri workflow di sviluppo e negli ambienti di lavoro dei nostri clienti.

Per noi sviluppatori, questo significa deploy immediati, controllo completo delle versioni distribuite, e possibilità di gestire rollback istantanei se dovessimo scoprire problemi. Possiamo avere repository diverse per diversi clienti, con plugin personalizzati per le loro specifiche esigenze, tutto gestito centralmente.

Per i nostri clienti, l'esperienza è seamless: aprono QGIS, vanno nel Plugin Manager, vedono i nostri plugin personalizzati nella lista e li installano con un click. Gli aggiornamenti arrivano automaticamente, senza dover gestire file ZIP o installazioni manuali.

Sicurezza e controllo degli accessi

Un aspetto fondamentale della nostra implementazione è la gestione sicura degli accessi. Ogni repository ha la sua lista di utenti autorizzati, e il sistema verifica le credenziali ad ogni richiesta. Questo ci permette di distribuire plugin contenenti dati sensibili o algoritmi proprietari senza preoccuparci che finiscano in mani sbagliate.

L'autenticazione è basata su HTTP Basic, che è supportato nativamente da QGIS e non richiede configurazioni complesse lato client. Gli utenti si autenticano una volta sola, e QGIS memorizza le credenziali per le sessioni successive.

La nostra esperienza in produzione

Dopo mesi di utilizzo in produzione, possiamo dire che la soluzione ha trasformato completamente il nostro modo di lavorare. Non dobbiamo più preoccuparci di distribuire manualmente gli aggiornamenti: li pubblichiamo sulla repository e i nostri utenti li vedono immediatamente disponibili in QGIS.

Il controllo versionale centralizzato ci ha permesso di implementare un processo di release più rigoroso, con testing automatizzato e deployment graduali. Possiamo rilasciare versioni beta a gruppi ristretti di utenti, raccogliere feedback, e poi fare il rollout completo quando siamo sicuri della stabilità.

La gestione del supporto tecnico è diventata molto più semplice: quando un utente ci segnala un problema, sappiamo esattamente quale versione del plugin sta utilizzando e possiamo intervenire in modo mirato.

Prospettive future e conclusioni

Combinando tecnologie open source mature con un'architettura moderna, siamo riusciti a creare un sistema che soddisfa le esigenze sia di sviluppatori che di utenti finali.

L'esperienza che abbiamo maturato ci convince che questo approccio sia replicabile e adattabile alle esigenze di altre realtà del settore GIS. Il passaggio dalla gestione manuale alla repository automatizzata non è solo una questione di efficienza operativa, ma un investimento nella qualità del servizio offerto ai clienti.

Ogni ora risparmiata in attività ripetitive è un'ora guadagnata per innovazione e sviluppo di nuove soluzioni. Questo approccio sistemico nella progettazione di infrastrutture geospaziali moderne rappresenta, a nostro avviso, il futuro del settore GIS professionale.

Gter

I contenuti redazionali di questo sito (articoli, editoriali, redazionali, video e podcast) sono soggetti ai seguenti Termini di utilizzo
Redazione mediaGEO società cooperativa
Via Palestro, 95 00185 Roma.
Tel. +39 06 64871209
P.I: 11534171001 - ROC n. 24260
Email: info@mediageo.it
www.mediageo.it
Testata telematica registrata al
Tribunale di Roma
n° 231/2009 del 26-6-2009.

© 2025 mediaGEO società cooperativa. Tutti i diritti riservati.