Analytics Privacy-First: Configurare Plausible Self-Hosted con Google Search Console
Il panorama del tracciamento analitico è cambiato notevolmente da quando il GDPR è entrato in vigore nel 2018. In realtà, la maggior parte delle organizzazioni esegue ancora Google Analytics 4 sui propri siti web — non perché sia il migliore strumento per il lavoro, ma perché la migrazione sembra costosa e le alternative sembrano di nicchia. Siamo passati da Google Analytics a Plausible CE self-hosted a metà del 2024, e i risultati vale la pena documentare in dettaglio.
Perché abbiamo abbandonato Google Analytics
Google Analytics 4 è una piattaforma capace. Il costo di conformità, tuttavia, è sostanziale. Eseguire GA4 in una configurazione genuinamente conforme al GDPR richiede un banner di consenso ai cookie, una piattaforma di gestione del consenso, accordi per il trattamento dei dati e un routing regionale attento per evitare che gli indirizzi IP e gli identificatori degli utenti lascino l'UE. Il banner di consenso stesso introduce un gap sistematico nei tuoi dati: studi indipendenti suggeriscono che tra il 30% e il 50% dei visitatori rifiuta il consenso del tutto, lasciando un punto cieco in ogni metrica che si raccoglie.
Il problema è che questo crea un compromesso impraticabile. O si accettano dati incompleti dal segmento consensito, o si esegue GA4 senza consenso e si accetta l'esposizione legale. Nessuna delle due è una risposta pulita per un'organizzazione che prende sul serio sia la qualità dei dati che la conformità.
Plausible CE è progettato attorno a una premessa diversa. Lo script di tracciamento è senza cookie per impostazione predefinita, non raccoglie informazioni personali identificabili e non richiede un banner di consenso ai sensi del GDPR. Questo non è linguaggio di marketing — è un'affermazione tecnica specifica. Plausible non imposta cookie, non genera un identificatore utente persistente tra le sessioni e non trasmette dati a server di terze parti quando è self-hosted. Le linee guida ICO sul PECR e le opinioni del Gruppo di lavoro Articolo 29 sull'analisi confermano entrambe che le analisi senza cookie e senza fingerprinting non attivano il requisito di consenso ai sensi della Direttiva ePrivacy.
L'architettura: ClickHouse come motore di analisi
Plausible CE viene fornito con due database: ClickHouse per l'archiviazione degli eventi e PostgreSQL per la configurazione. ClickHouse è un database orientato alle colonne costruito per carichi di lavoro analitici — lo stesso motore che Yandex ha costruito per la propria infrastruttura di analisi su larga scala. Per un sito che riceve decine di migliaia di visualizzazioni di pagina mensili, il vantaggio prestazionale rispetto a un database orientato alle righe è impercettibile. Ma l'architettura significa che Plausible può gestire siti con centinaia di milioni di eventi senza modifiche allo schema o riprogettazione dell'infrastruttura, il che è importante se si prevede crescita.
La configurazione Docker Compose è semplice. Plausible fornisce una configurazione ufficiale con tutti i servizi richiesti. La nostra distribuzione viene eseguita insieme a Traefik su un'istanza Hetzner CX21 (2 vCPU, 4 GB 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
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:
Il flag DISABLE_REGISTRATION=true non è opzionale. Dopo aver creato l'account iniziale, qualsiasi istanza pubblica senza questo flag è aperta alla registrazione da parte di chiunque trovi l'URL. Generare SECRET_KEY_BASE con openssl rand -base64 64 e tenerlo in un file .env al di fuori del controllo di versione.
I due file di configurazione XML di ClickHouse a cui si fa riferimento nella sezione volumi controllano la verbosità dei log. Senza di essi, ClickHouse registra ad un livello che riempie il disco su un'istanza piccola in pochi giorni. Il repository di Plausible include questi file; copiarli in una sottodirectory clickhouse/ insieme al proprio docker-compose.yml prima di avviare lo stack.
Distribuzione dello script di tracciamento
Una volta che lo stack è in esecuzione, aggiungere il tracciamento a qualsiasi sito è un singolo tag nell'HTML <head>:
<script defer data-domain="yourdomain.com"
src="https://plausible.yourdomain.com/js/script.js"></script>
Plausible include estensioni di script opzionali che si raggruppano in una singola richiesta. Utilizziamo la variante che include il tracciamento dei download di file, il supporto al routing basato su hash per le applicazioni single-page, il tracciamento dei link in uscita, le proprietà personalizzate di visualizzazione delle pagine, il tracciamento delle entrate e gli eventi taggati:
<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 compresso. Lo script di Google Analytics 4 è di circa 45 KB. Questa non è una differenza marginale — è il 20× meno di parsing JavaScript ad ogni caricamento di pagina, il che influisce misurabilmente sui punteggi Core Web Vitals su dispositivi a bassa potenza e 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 di Plausible. Una volta connesso, i dati GSC appaiono come un'analisi separata nella sezione delle sorgenti di traffico, mostrando query di ricerca, impressioni, tassi di clic e posizione media accanto ai dati standard di visualizzazione delle pagine e sessioni.
Un dettaglio di configurazione che causa problemi costantemente: il dominio in Plausible deve corrispondere esattamente al tipo di proprietà GSC. Una proprietà GSC verificata come https://www.yourdomain.com usando il metodo URL-prefix non si collegherà a un sito Plausible che traccia yourdomain.com senza il sottodominio. Usare il tipo di proprietà Domain in GSC dove possibile — copre tutti i sottodomini e i protocolli e rende la connessione Plausible semplice.
I dati GSC in Plausible portano lo stesso ritardo di 48 ore dell'API Search Console stessa. Questo è un vincolo di Google, non una limitazione di Plausible. Per la revisione analitica operativa, questo è raramente un ostacolo pratico.
Conformità GDPR senza banner dei cookie
La posizione di conformità vale la pena di essere dichiarata con precisione. Ai sensi del GDPR e della Direttiva ePrivacy, il consenso è richiesto quando si memorizzano o si accedono informazioni sul dispositivo di un utente. Sia i cookie che localStorage attivano questo requisito. Plausible non memorizza nulla sul dispositivo dell'utente: nessun cookie, nessuna voce localStorage, nessuna scrittura IndexedDB.
Plausible non genera nemmeno un identificatore utente persistente tra le sessioni. Ogni visualizzazione di pagina viene elaborata indipendentemente. L'approssimazione più vicina a un identificatore utente è un hash giornaliero derivato da una combinazione dell'indirizzo IP del visitatore, dalla stringa del user agent e da un salt lato server rotante — un valore che cambia ogni 24 ore e non può essere invertito per recuperare l'indirizzo IP originale. Questo design colloca Plausible al di fuori della definizione di trattamento dei dati personali ai sensi dell'Articolo 4(1) GDPR.
Il risultato pratico: nessun banner di consenso, nessuna piattaforma di gestione del consenso, nessuna ottimizzazione del tasso di consenso e nessun gap nei dati per consenso rifiutato. I dati analitici che si vedono riflettono il pubblico effettivo piuttosto che il sottoinsieme disposto ad accettare il tracciamento.
La nostra informativa sulla privacy ora richiede un unico paragrafo conciso sull'analisi, che descrive accuratamente cosa raccoglie Plausible e dove risiedono i dati. La sezione equivalente di GA4 in precedenza si estendeva su diversi paragrafi e richiedeva riferimenti specifici alle Clausole Contrattuali Standard di Google e ai termini di trattamento dei dati. La riduzione del costo legale è sostanziale per una piccola organizzazione.
Overhead dell'infrastruttura e confronto delle prestazioni
Eseguire entrambi gli strumenti in parallelo per 60 giorni prima del cutover GA4 ha fornito un confronto diretto. I conteggi delle visualizzazioni di pagina differivano di meno del 3% — coerente con le cifre di accuratezza pubblicate dallo stesso Plausible confrontando le distribuzioni senza cookie con GA4 consensito.
La differenza più istruttiva era nei conteggi dei visitatori unici. Plausible ha registrato circa il 12% di visitatori unici in più rispetto a GA4 consensito nello stesso periodo. Questo è atteso: il sottoinsieme di utenti GA4 che accetta il consenso tende verso visitatori più coinvolti che hanno meno probabilità di utilizzare ad blocker o browser orientati alla privacy. Plausible, tracciando tutti i visitatori senza attrito da consenso, offre un quadro più accurato della portata totale. GA4 in modalità consensita offre un ritratto comportamentale degli utenti più coinvolti. Nessuno dei due è sbagliato — stanno rispondendo a domande leggermente diverse.
L'impronta dell'infrastruttura è modesta. ClickHouse consuma circa 400 MB di RAM allo stato stazionario. PostgreSQL aggiunge circa 80 MB. L'utilizzo della CPU è trascurabile durante il normale funzionamento ed è brevemente elevato solo durante le importazioni di dati storici in blocco. Per le organizzazioni che già eseguono un server Hetzner con capacità di riserva, il costo marginale di aggiungere Plausible a uno stack esistente è effettivamente zero.
In realtà, però, la decisione di passare non riguarda principalmente il costo dell'infrastruttura o la parità delle funzionalità. Riguarda il tipo di dati su cui si è disposti a costruire decisioni. L'analisi che richiede il consenso produce un campione sistematicamente distorto. L'analisi senza cookie e senza consenso produce un quadro completo con meno dettagli per visitatore. Per un sito web di marketing dove la domanda principale è “quali pagine e sorgenti generano richieste,” il quadro completo è più utile del ritratto dettagliato di un sottoinsieme auto-selezionato.
Approfondimenti Correlati
- Traefik Reverse Proxy: La Guida Completa al Self-Hosting per HTTPS e Automazione SSL
- Self-Hosting di n8n su Hetzner Cloud: Tutorial Completo di Configurazione Docker
- Distribuire Applicazioni React in Produzione: Configurazione Docker Completa con Traefik Reverse Proxy
- Costruire uno Stack di Sviluppo Multi-Tenant con Docker: Configurazione Completa per Distribuzioni Client Scalabili