Analisi del traffico e privacy: configurare Plausible sulla propria infrastruttura con Google Search Console
Il panorama del tracciamento per l’analisi del traffico è cambiato molto dall’entrata in vigore del GDPR nel 2018. La maggior parte delle organizzazioni continua a usare Google Analytics 4 sui propri siti, non perché sia lo strumento più adatto, ma perché la migrazione appare costosa e le alternative sembrano di nicchia. A metà del 2024 siamo passati da Google Analytics a Plausible CE gestito sulla nostra infrastruttura, e i risultati meritano di essere documentati nel dettaglio.
Perché abbiamo abbandonato Google Analytics
Google Analytics 4 è una piattaforma valida. Gli oneri di conformità, però, sono considerevoli. Usare GA4 in una configurazione davvero conforme al GDPR richiede un banner per il consenso ai cookie, una piattaforma di gestione del consenso, accordi sul trattamento dei dati e una base giuridica documentata per qualsiasi trasferimento di dati di analisi a Google negli Stati Uniti. Il banner stesso introduce una lacuna sistematica nei dati: ogni visitatore che rifiuta il consenso manca dai dati e, a seconda del design del banner e del pubblico, può trattarsi di una quota considerevole, lasciando un punto cieco in ogni metrica raccolta.
Si crea così un compromesso impraticabile: accettare dati incompleti relativi a chi ha acconsentito, oppure usare GA4 senza consenso ed esporsi a rischi legali. Nessuna delle due opzioni è una soluzione soddisfacente per un’organizzazione che prende sul serio sia la qualità dei dati sia la conformità.
Plausible CE parte da una premessa diversa. Lo script di tracciamento non usa cookie per impostazione predefinita, non memorizza informazioni che permettono di identificare le persone ed è progettato per funzionare senza un banner di consenso. Questa architettura si basa su scelte tecniche precise. Plausible non imposta cookie, non genera un identificativo utente persistente fra sessioni e, quando è gestito sulla propria infrastruttura, non trasmette dati a server di terze parti. La direttiva ePrivacy (PECR nel Regno Unito) richiede il consenso per memorizzare informazioni sul dispositivo dell’utente o accedervi: è la regola che uno script senza cookie è progettato per evitare di far scattare. Le linee guida 2/2023 dell’EDPB interpretano questa regola come applicabile anche ad alcune tecniche senza cookie, come il tracciamento tramite pixel o indirizzi IP, quindi verifica la valutazione per la tua installazione.
L'architettura: ClickHouse come motore di analisi
Plausible CE comprende due database: ClickHouse per gli eventi e PostgreSQL per la configurazione. ClickHouse è un database orientato alle colonne, progettato per carichi analitici: lo stesso motore sviluppato da Yandex per la propria infrastruttura di analisi su larga scala. Per un sito con decine di migliaia di visualizzazioni di pagina al mese, il vantaggio rispetto a un database orientato alle righe è impercettibile. Questa architettura, però, permette di gestire siti con centinaia di milioni di eventi senza modificare lo schema o riprogettare l’infrastruttura, un aspetto rilevante se si prevede una crescita.
La configurazione Docker Compose è semplice. Plausible fornisce una configurazione ufficiale con tutti i servizi necessari. La nostra installazione gira insieme a Traefik su un’istanza Hetzner CX21 (2 vCPU, 4 GB di RAM) a Helsinki:
services:
plausible_db:
image: postgres:16-alpine
restart: always
volumes:
- db-data:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
plausible_events_db:
image: clickhouse/clickhouse-server:24.3.3.102-alpine
restart: always
volumes:
- event-data:/var/lib/clickhouse
- ./clickhouse/clickhouse-config.xml:/etc/clickhouse-server/config.d/logging.xml:ro
- ./clickhouse/clickhouse-user-config.xml:/etc/clickhouse-server/users.d/logging.xml:ro
ulimits:
nofile:
soft: 262144
hard: 262144
plausible:
image: ghcr.io/plausible/community-edition:v2.1.4
restart: always
command: sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh run"
depends_on:
- plausible_db
- plausible_events_db
environment:
- BASE_URL=https://plausible.yourdomain.com
- SECRET_KEY_BASE=${SECRET_KEY_BASE}
- DATABASE_URL=postgres://postgres:${POSTGRES_PASSWORD}@plausible_db:5432/plausible_db
- CLICKHOUSE_DATABASE_URL=http://plausible_events_db:8123/plausible_events_db
- DISABLE_REGISTRATION=true
- GOOGLE_CLIENT_ID=${GOOGLE_CLIENT_ID}
- GOOGLE_CLIENT_SECRET=${GOOGLE_CLIENT_SECRET}
labels:
- "traefik.enable=true"
- "traefik.http.routers.plausible.rule=Host(`plausible.yourdomain.com`)"
- "traefik.http.routers.plausible.entrypoints=websecure"
- "traefik.http.routers.plausible.tls.certresolver=letsencrypt"
- "traefik.http.services.plausible.loadbalancer.server.port=8000"
volumes:
db-data:
event-data:
Imposta esplicitamente DISABLE_REGISTRATION. Con true, la registrazione è chiusa dopo la creazione dell’account iniziale; con false, chiunque trovi l’URL di un’istanza esposta al pubblico può registrarsi. La documentazione attuale di Plausible CE indica invite_only come valore predefinito. Genera SECRET_KEY_BASE con openssl rand -base64 64 e conservalo in un file .env escluso dal controllo di versione.
I due file di configurazione XML di ClickHouse indicati nella sezione dei volumi regolano il livello di dettaglio dei log. Senza questi file, ClickHouse produce log che possono riempire il disco di una piccola istanza in pochi giorni. Sono inclusi nel repository di Plausible: copiali in una sottodirectory clickhouse/ accanto al file docker-compose.yml prima di avviare lo stack.
Distribuzione dello script di tracciamento
Una volta avviato lo stack, basta un tag nell’elemento HTML <head> per aggiungere il tracciamento a qualsiasi sito:
<script defer data-domain="yourdomain.com"
src="https://plausible.yourdomain.com/js/script.js"></script>
Plausible offre estensioni facoltative dello script, riunite in un’unica richiesta. Usiamo la variante che include tracciamento dei download, supporto all’instradamento basato su hash per applicazioni a pagina singola, tracciamento dei link in uscita, proprietà personalizzate delle visualizzazioni di pagina, tracciamento dei ricavi ed eventi con tag:
<script defer data-domain="yourdomain.com"
src="https://plausible.yourdomain.com/js/script.file-downloads.hash.outbound-links.pageview-props.revenue.tagged-events.js"></script>
Lo script combinato pesa circa 2,4 KB non compressi, contro circa 45 KB per quello di Google Analytics 4. La differenza è significativa: a ogni caricamento occorre scaricare circa venti volte meno JavaScript, e meno codice da analizzare ed eseguire può migliorare i Core Web Vitals nei dispositivi poco potenti e nelle connessioni lente.
Integrazione con Google Search Console
L'argomento più forte per mantenere GA4 è la sua connessione a Google Search Console, che consente di correlare i dati sulle query di ricerca organica con il comportamento sul sito. Plausible supporta questa integrazione in modo nativo, ed è la funzionalità che rende praticabile il cambiamento per i siti basati su contenuti.
La configurazione richiede una proprietà Search Console verificata e un’autorizzazione OAuth nelle impostazioni del sito in Plausible. Un’istanza gestita sulla propria infrastruttura richiede anche un client OAuth di Google Cloud con l’API Search Console abilitata, passato a Plausible tramite GOOGLE_CLIENT_ID e GOOGLE_CLIENT_SECRET (già previsti nel file Compose precedente). Dopo il collegamento, le query di ricerca compaiono in Sources selezionando Google, con i clic e, nella vista estesa, impressioni, tasso di clic e posizione media. Sono elencate solo le query con almeno un clic.
Un dettaglio di configurazione causa spesso problemi: la proprietà GSC scelta deve effettivamente coprire il dominio tracciato da Plausible. Una proprietà verificata come https://www.yourdomain.com con il metodo del prefisso URL non si collegherà a un sito Plausible che traccia yourdomain.com senza il sottodominio. Dove possibile, usa il tipo di proprietà Dominio in GSC: copre tutti i sottodomini e protocolli e semplifica il collegamento.
I dati GSC in Plausible non sono in tempo reale: Plausible documenta un ritardo di circa 24–36 ore, come in Search Console, e suggerisce di controllare i dati di due giorni prima. È un vincolo di Google, non di Plausible. Per la revisione operativa dei dati di analisi, raramente rappresenta un ostacolo concreto.
Conformità al GDPR senza banner dei cookie
La questione della conformità va esposta con precisione. Ai sensi della direttiva ePrivacy, il consenso è richiesto quando si memorizzano informazioni sul dispositivo dell’utente o vi si accede. Cookie e localStorage fanno entrambi scattare questo requisito. Plausible non memorizza nulla sul dispositivo: nessun cookie, nessuna voce in localStorage, nessuna scrittura in IndexedDB.
Plausible non genera neppure un identificativo utente persistente fra sessioni. Ogni visualizzazione di pagina viene elaborata indipendentemente. L’elemento più vicino a un identificativo è un hash giornaliero derivato da indirizzo IP del visitatore, stringa dello user agent, dominio del sito e un salt lato server che viene sostituito ed eliminato ogni 24 ore. Gli indirizzi IP e gli user agent originali non vengono memorizzati. Plausible afferma che questo significa che non raccoglie dati personali; poiché l’indirizzo IP viene comunque elaborato brevemente per calcolare l’hash, stabilire se ciò esuli dalla nozione di dati personali ai sensi dell’articolo 4(1) del GDPR è una valutazione giuridica, non una garanzia tecnica. Questa è la nostra valutazione per il deployment di tva, non una consulenza legale; verificatela con il vostro consulente per la protezione dei dati.
Il risultato pratico, sulla base di questa valutazione: nessun banner o piattaforma di gestione del consenso, nessuna ottimizzazione del tasso di consenso e nessuna lacuna dovuta ai rifiuti. I dati di analisi riflettono il pubblico molto meglio del solo sottoinsieme disposto ad accettare il tracciamento, anche se i visitatori che bloccano lo script continuano a non essere conteggiati.
La nostra informativa sulla privacy richiede ora un unico paragrafo conciso sull’analisi del traffico, che descrive correttamente cosa raccoglie Plausible e dove risiedono i dati. La sezione equivalente dedicata a GA4 occupava diversi paragrafi e richiedeva riferimenti specifici alle clausole contrattuali tipo e ai termini di trattamento dei dati di Google. Per una piccola organizzazione, la riduzione degli oneri legali è significativa.
Oneri infrastrutturali e confronto delle prestazioni
Abbiamo eseguito entrambi gli strumenti in parallelo per 60 giorni prima del passaggio definitivo da GA4, ottenendo un confronto diretto. I conteggi delle visualizzazioni di pagina differivano di meno del 3%.
La differenza più istruttiva riguardava i visitatori unici. Nello stesso periodo, Plausible ne ha registrati circa il 12% in più rispetto a GA4 con consenso. È prevedibile: chi accetta il consenso in GA4 tende a essere più coinvolto ed è meno propenso a usare blocchi pubblicitari o browser orientati alla privacy. Tracciando i visitatori senza l’ostacolo del consenso, Plausible offre un quadro più accurato della copertura totale, anche se i visitatori che bloccano il suo script continuano a non essere conteggiati. GA4 con consenso descrive invece il comportamento degli utenti più coinvolti. Nessuno dei due sbaglia: rispondono a domande leggermente diverse.
Il consumo di risorse è modesto. In condizioni stabili, ClickHouse usa circa 400 MB di RAM e PostgreSQL ne aggiunge circa 80 MB. Durante il normale funzionamento, l’utilizzo della CPU è trascurabile e cresce brevemente soltanto nelle importazioni massive di dati storici. Per organizzazioni che dispongono già di un server Hetzner con capacità libera, il costo marginale di aggiungere Plausible allo stack esistente è praticamente nullo.
La decisione di cambiare, però, non riguarda soprattutto il costo dell’infrastruttura o la parità delle funzionalità. Riguarda il tipo di dati su cui si è disposti a basare le decisioni. Le analisi che richiedono consenso producono un campione sistematicamente distorto; quelle senza cookie e senza consenso offrono un quadro molto più completo con meno dettagli per visitatore. Per un sito di marketing in cui la domanda principale è «quali pagine e fonti generano richieste di contatto», il quadro più completo è più utile del ritratto dettagliato di un sottoinsieme che si seleziona da sé.
Approfondimenti correlati
- Reverse proxy Traefik: guida completa al self-hosting e all’automazione di HTTPS e SSL
- Self-hosting di n8n su Hetzner Cloud: guida completa alla configurazione Docker
- Distribuire applicazioni React in produzione: configurazione Docker completa con reverse proxy Traefik
- Creare uno stack di sviluppo multi-tenant con Docker: configurazione completa per distribuzioni scalabili presso i clienti
Per approfondire
n8n 2.x sulla propria infrastruttura: diagnosticare i limiti dei dati di esecuzione e aumentare il payload in sicurezza
GitHub Actions per pipeline di distribuzione in self-hosting
Guida completa al self-hosting di n8n 2025: risolvere gli errori di dimensione dei dati di esecuzione e i problemi dei webhook con Traefik