Come sito Web etico, cerchiamo di mantenere il manuale Linux il più possibile libero da Google e dal monitoraggio. A tale proposito, ci asteniamo dall'utilizzare Google Analytics per la misurazione del traffico del sito web.
Invece, utilizziamo Plausible Analytics. È un'alternativa a Google Analytics (GA) semplice, leggera (<1 KB), open source e rispettosa della privacy.
Potrebbe non darti tanti dettagli come GA, ma ti dà un'idea del traffico che stai ricevendo sul tuo sito web insieme alla frequenza di rimbalzo e alla durata della visita.
Puoi anche vedere quali pagine stanno ricevendo il maggior numero di visite, da dove il tuo sito web riceve il traffico, la frequenza di rimbalzo e la durata sulla pagina. Puoi anche misurare il traffico in base alla regione geografica e ai dispositivi.
Fondata e sviluppata da Uku Taht e Marco Saric, Plausible rafforza notevolmente l'idea che il traffico del sito web può essere analizzato senza ostacolare la privacy dei visitatori.
Se puoi permetterti, sostieni il progetto optando per il loro piano di hosting gestito. Offrono anche 30 giorni di prova gratuita.
Se hai diversi siti Web con traffico elevato e trovi il prezzo fuori dal tuo budget, puoi ospitare autonomamente il progetto open source Plausibile come facciamo su Linux Handbook.
Analisi plausibile di self-hosting con Docker
Quando ho lavorato per la prima volta su Plausible deployment, il processo era assolutamente complicato. Per fortuna, ora è abbastanza conveniente distribuirlo sul tuo server. Per semplificare, le persone meravigliose di Plausible hanno anche creato un repository di hosting separato su GitHub per iniziare.
In questa guida approfondita imparerai due modi per distribuire l'istanza plausibile:
- Il metodo standalone (server singolo, servizio singolo):Only Plausible viene eseguito sull'intero server
- Il metodo del proxy inverso (server singolo, più servizi):puoi distribuire più servizi Web come WordPress, Nextcloud ecc. con Plausible.
Inoltre, mostrerò anche un paio di passaggi opzionali ma utili per sfruttare tutte le funzionalità di Plausible:
- Configurazione di SMTP su Plausible in modo da poter ricevere report settimanali o mensili via e-mail.
- Configurazione di GeoIP per visualizzare le statistiche relative al paese sulla mappa del dashboard plausibile
Prerequisiti
Ecco di cosa hai bisogno a parte una certa conoscenza dei comandi Linux, docker e docker-compose.
- Un server Linux. Puoi utilizzare server fisico, macchina virtuale o server cloud. Puoi registrarti con il nostro partner Linode e ricevere $ 100 in crediti gratuiti.
- Docker e Docker Compose installati sul tuo server.
- Accesso al DNS del tuo dominio in cui desideri distribuire Plausible.
- Configurazione del proxy inverso di Nginx se stai optando per il secondo metodo di distribuzione.
Fase 1:[Metodo 1] Preparazione della distribuzione di Plausibile in modo autonomo (singolo server, singolo servizio)
In questa sezione, presumo che tu voglia ospitare direttamente il tuo dominio sulla porta 80 su un server autonomo.
Iniziamo scoprendo prima il minimo indispensabile. Tieni presente che la composizione mobile è necessaria in anticipo.
La configurazione di distribuzione plausibile consiste fondamentalmente di 3 componenti principali:
- Database Postgres per i dati degli utenti
- Database Clickhouse per dati analitici
- Plausibile stesso che fa affidamento sui due database
Poiché Plausible si distribuisce con Docker, tutti e tre i componenti precedenti vengono distribuiti come rispettivi container.
Ora guarda come sono configurati con Docker Compose uno per uno:
Per Postgres, qui devi usare l'immagine ufficiale di Postgres 12 disponibile su Docker Hub (al momento della stesura di questo tutorial). Questo è assolutamente necessario in quanto si utilizza l'latest
tag in questo caso non è consigliabile.
plausible_db:
image: postgres:12
volumes:
- db-data:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=postgres
Usa un nome di volume db-data
per memorizzare i dati dell'utente in /var/lib/postgresql/data
. Sarebbe anche necessario impostare una variabile di ambiente per assegnare la password Postgres.
Per Clickhouse, usa l'immagine Yandex Clickhouse Docker Hub:
plausible_events_db:
image: yandex/clickhouse-server:latest
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
Lascia che ti spieghi cosa sta facendo! Stai usando un nome di volume event-data
per memorizzare i dati analitici in /var/lib/clickhouse
. Quindi i file di configurazione vengono montati per disabilitare le tabelle di registrazione per evitare problemi come calmare il clickhouse a lungo termine. Dopo i file XML montati su bind, ulimit
viene utilizzato per limitare l'utilizzo delle risorse all'interno del contenitore Clickhouse.
Per il servizio Plausible stesso, utilizza l'immagine Docker Hub contrassegnata da latest
dagli sviluppatori come versione stabile:
plausible:
image: plausible/analytics:latest
command: sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh db init-admin && /entrypoint.sh run"
depends_on:
- plausible_db
- plausible_events_db
- mail
- geoip
ports:
- 80:8000
env_file:
- plausible-conf.env
Alla prima esecuzione, crea un database Postgres per i dati degli utenti, un database Clickhouse per i dati analitici, li migra per preparare lo schema e crea l'account amministratore per te.
Come puoi anche vedere, il servizio si basa su plausible_db
e plausible_events_db
affinché sia operativo. mail
e geoip
sono altri due servizi aggiuntivi di cui parlerò più avanti.
Dato che stai usando un metodo autonomo, puoi specificare direttamente che la porta del contenitore 8000 sia disponibile tramite il nome host alla porta 80. Per quanto riguarda il env_file
, ne parlerò nella sezione "File ambientali" più avanti in questa guida.
Ciascuno dei servizi di database avrà i rispettivi volumi Docker per la memorizzazione dei dati utente e di analisi. Quindi, devi anche includere una sezione dei volumi all'interno del file di composizione della finestra mobile con i seguenti dettagli::
volumes:
db-data:
driver: local
event-data:
driver: local
geoip:
driver: local
Ora hai i componenti necessari per la distribuzione plausibile di base.
Poiché ora conosciamo i tre componenti di base per una distribuzione plausibile di base, non è ancora la configurazione completa che vorremmo ancora. Dobbiamo anche configurarlo con altre due aggiunte che lo renderanno un'implementazione completa di analisi web:
Configurazione SMTP per i rapporti e-mail [opzionale]
È possibile utilizzare il servizio SMTP Bytemark che Plausible utilizzerà per inviare report di analisi settimanali o mensili. Questa configurazione aggiuntiva è semplice ma deve essere specificata nella configurazione del servizio plausibile in seguito:
mail:
image: bytemark/smtp
restart: always
Userò SendGrid come esempio per questa guida. Puoi creare la tua chiave API gratuita da qui una volta effettuato l'accesso a SendGrid. Salva la stringa di 69 caratteri poiché ne avrai bisogno in seguito come password per la tua configurazione SMTP .
GeoIP per mappa dashboard [opzionale]
Questa parte è necessaria per mostrare il conteggio dei visitatori in base al paese mentre passi il cursore sulla mappa del mondo nella dashboard plausibile per il tuo dominio.
Per questo, devi utilizzare il servizio gratuito GeoLite2. I database GeoIP2 di MaxMind forniscono dati di intelligence IP per ambienti ad alto volume. Ospitando autonomamente i loro database, elimini qualsiasi latenza di rete e addebiti per query. Plausible utilizza i database GeoLite2 che sono database di geolocalizzazione IP gratuiti implementati come container.
Per configurare un database GeoIP e lasciarlo aggiornare automaticamente, è necessario registrarsi per un account gratuito su MaxMind. Dopo la registrazione, vai su Servizi>Il mio codice di licenza dal pannello di sinistra nella pagina del tuo account Maxmind. Fai clic su "Genera nuova chiave di licenza" e salvalo in locale poiché puoi visualizzarlo solo una volta durante la generazione .
plausible_geoip:
image: maxmindinc/geoipupdate
environment:
- GEOIPUPDATE_EDITION_IDS=GeoLite2-Country
- GEOIPUPDATE_FREQUENCY=168 # update every 7 days
env_file:
- geoip-conf.env
volumes:
- geoip:/usr/share/GeoIP
restart: always
Attraverso le due variabili di ambiente precedenti, impostiamo l'ID edizione e la frequenza con cui il database verrà aggiornato. I database GeoLite2 Country, City e ASN vengono aggiornati settimanalmente, ogni martedì. Il geoip-conf.env
discusso più avanti in questa guida dovrà includere tutte le credenziali ottenute dopo aver generato la chiave di licenza discussa sopra.
File di ambiente
Questa sezione è forse la più importante, in quanto copre tutte le variabili di ambiente essenziali che devono essere presenti affinché i cinque componenti precedenti dell'istanza Plausible funzionino correttamente. Durante l'intera configurazione, li utilizziamo direttamente e tramite file di ambiente.
File di ambiente per la configurazione plausibile
Il file plausible-conf.env memorizza le variabili di ambiente più essenziali per distribuire l'istanza Plausible.
ADMIN_USER_EMAIL=replace-me
ADMIN_USER_NAME=replace-me
ADMIN_USER_PWD=replace-me
BASE_URL=replace-me
SECRET_KEY_BASE=replace-me
ADMIN_USER_EMAIL
è l'indirizzo email a cui vorresti accedere e ricevere rapporti di analisi settimanali o mensili.- Per
ADMIN_USER_NAME
, puoi citare il tuo nome qui. - Il valore per
ADMIN_USER_PWD
è la tua password di accesso. BASE_URL
può essere nel formato:http://plausible.domain.com . Tieni presente che per abilitare HTTPS, si consiglia di utilizzare un metodo proxy inverso (discusso nella seconda parte di questa guida) per utilizzare un certificato SSL.- Il
SECRET_KEY_BASE
è una chiave segreta casuale di 64 caratteri utilizzata per proteggere Plausible. Per generarne uno, usa:openssl rand -base64 64
File di ambiente per la configurazione SMTP plausibile con Sendgrid
Sebbene sia possibile includere anche le variabili di ambiente SMTP nello stesso file, l'utilizzo di una variabile separata rende più chiaro da seguire. Quindi, qui ho usato un file chiamato plausible-smtp.env
per lo stesso scopo.
La configurazione seguente è specifica per Sendgrid ma puoi modificarla di conseguenza se preferisci un servizio SMTP diverso:
[email protected]
SMTP_HOST_ADDR=smtp.sendgrid.net
SMTP_HOST_PORT=465
SMTP_USER_NAME=apikey
SMTP_USER_PWD=replace-me
SMTP_HOST_SSL_ENABLED=true
SMTP_RETRIES=20
CRON_ENABLED=true
MAILER_EMAIL
è l'indirizzo email "da" personalizzabile che apparirà nella tua casella di posta quando riceverai i rapporti settimanali o mensili.SMTP_HOST_ADDR
è il nome host del server SMTP. Nel caso di SendGrid, èsmtp.sendgrid.net
.- Qui usi 465 per il numero di porta dell'host SMTP tramite
SMTP_HOST_PORT
. apikey
è la credenziale del nome utente per SendGrid in particolare, impostata tramiteSMTP_USER_NAME
.SMTP_USER_PWD
è la chiave di 69 caratteri utilizzata come password ottenuta da SendGrid (discussa nella sezione relativa alla configurazione di SMTP).- Ho abilitato SSL su true tramite
SMTP_HOST_SSL_ENABLED
per SendGrid. - Il numero di tentativi prima che il mailer si arrende può essere impostato tramite
SMTP_RETRIES
.
CRON_ENABLED
non è in realtà un'impostazione SMTP per essere specifici. Ma il motivo per cui l'ho incluso qui è perché senza questa variabile impostata su true
, non riceverai rapporti settimanali o mensili via e-mail. Per impostazione predefinita, questo valore è false, ma probabilmente verrà aggiornato nella prossima versione di Plausible, come discusso qui. Ma al momento, questa impostazione è assolutamente cruciale.
File ambientale per le statistiche globali su Plausible with GeoIP
Con geoip-conf.env
, includi le credenziali essenziali ottenute da MaxMind come discusso in precedenza:
GEOIPUPDATE_ACCOUNT_ID=replace-me
GEOIPUPDATE_LICENSE_KEY=replace-me
Per un riferimento completo a ogni tipo di variabile d'ambiente su Plausible, puoi visitare la sua pagina di documentazione qui.
Ora, a questo punto, hai esaminato tutti i dettagli necessari per ospitare una distribuzione autonoma di Plausible. La configurazione completa di composizione della finestra mobile sarebbe simile a questa:
version: "3.3"
services:
plausible_db:
image: postgres:12
volumes:
- db-data:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=postgres
plausible_events_db:
image: yandex/clickhouse-server:latest
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
mail:
image: bytemark/smtp
restart: always
geoip:
image: maxmindinc/geoipupdate
environment:
- GEOIPUPDATE_EDITION_IDS=GeoLite2-Country
- GEOIPUPDATE_FREQUENCY=168 # update every 7 days
env_file:
- geoip-conf.env
volumes:
- geoip:/usr/share/GeoIP
restart: always
plausible:
image: plausible/analytics:latest
command: sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh db init-admin && /entrypoint.sh run"
depends_on:
- plausible_db
- plausible_events_db
- mail
- geoip
ports:
- 80:8000
env_file:
- plausible-conf.env
volumes:
db-data:
driver: local
event-data:
driver: local
geoip:
driver: local
Se hai seguito questo metodo, salta la sezione successiva.
Fase 1:[Metodo 2] Preparazione del distribuzione di Plausible con proxy inverso Nginx (server singolo, servizi multipli)
Questo è un metodo alternativo e non può essere utilizzato con il metodo 1 discusso nella sezione precedente. Dovrai impostare il proxy inverso qui.Esaminiamo rapidamente le revisioni necessarie per fare in modo che la configurazione plausibile di cui sopra funzioni anche con un'impostazione proxy inverso. Sto usando l'esempio del nostro precedente articolo su Nginx Docker.
Per tutti e quattro i servizi diversi dal servizio Plausible, utilizzerò una rete interna denominata plausible
poiché deve essere visibile solo per Plausible da solo.
networks:
- plausible
Ma per il servizio Plausible, lo stesso net
la rete utilizzata nella configurazione del proxy inverso deve essere specificata insieme al plausible
rete, ovviamente. Solo allora saresti in grado di farlo funzionare con il contenitore Nginx Docker.
networks:
- net
- plausible
Devi anche sostituire le nostre ports
parametro con expose
all'interno del tuo servizio Plausible poiché ora stai utilizzando un proxy inverso:
expose:
- 8000
Al termine della configurazione è inoltre necessario specificare quali reti sono interne ed esterne:
networks:
net:
external: true
plausible:
internal: true
Variabili di ambiente aggiuntive
Devi anche assicurarti di aggiornare il plausible-conf.env
file con le seguenti variabili per il corretto funzionamento dell'installazione:
VIRTUAL_HOST=plausible.domain.com
LETSENCRYPT_HOST=plausible.domain.com
TRUSTED_PROXIES=172.x.0.0/16
Specificare il nome di dominio senza https://
su VIRTUAL_HOST
e LETSENCRYPT_HOST
che sono pensati rispettivamente per il proxy inverso e il certificato SSL.
Con TRUSTED_PROXIES
, definisci in modo esplicito i server proxy di cui plausibile è attendibile. Il valore esatto può essere ottenuto con:
docker inspect -f '{{ json .IPAM.Config }}' net | jq .[].Subnet
Affinché il comando precedente funzioni, è necessario jq
strumento già installato.
Su Ubuntu, puoi installarlo con:
sudo apt -y install jq
Su CentOS, dovresti prima aggiungere il repository:
yum install epel-release -y
yum install jq -y
Quindi, ecco il file docker-compose.yml finale, rivisto per il proxy inverso:
version: "3.3"
services:
mail:
image: bytemark/smtp
restart: always
networks:
- plausible
plausible_db:
image: postgres:12
volumes:
- db-data:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=postgres
restart: always
networks:
- plausible
plausible_events_db:
image: yandex/clickhouse-server:latest
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
restart: always
networks:
- plausible
geoip:
image: maxmindinc/geoipupdate
environment:
- GEOIPUPDATE_EDITION_IDS=GeoLite2-Country
- GEOIPUPDATE_FREQUENCY=168 # update every 7 days
env_file:
- geoip-conf.env
volumes:
- geoip:/usr/share/GeoIP
restart: always
networks:
- net
- plausible
plausible:
image: plausible/analytics:latest
command: sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh db init-admin && /entrypoint.sh run"
depends_on:
- plausible_db
- plausible_events_db
- mail
- geoip
expose:
- 8000
env_file:
- plausible-conf.env
- plausible-smtp.env
restart: always
networks:
- net
- plausible
volumes:
db-data:
driver: local
event-data:
driver: local
geoip:
driver: local
networks:
net:
external: true
plausible:
internal: true
Fase 2:distribuzione di analisi plausibili
Indipendentemente dal fatto che tu abbia utilizzato il metodo 1 o il metodo 2, dovresti avere il file di composizione mobile pronto. È ora di usare quel file.
Sul tuo server, clona il repository di hosting plausibile:
git clone https://github.com/plausible/hosting
Spostarsi nella directory per la revisione dei file:
cd hosting
Ora modifica il file di composizione della finestra mobile in modo che abbia lo stesso contenuto che hai visto nel metodo 1 o nel metodo 2 (a seconda di quello che hai scelto). Rivedere anche tutti i file essenziali che richiedono modifiche come discusso utilizzando uno dei due metodi precedenti.
Avvia l'istanza plausibile:
docker-compose up -d
Accedi al dominio plausibile che avevi specificato nella configurazione. Dovresti vedere uno schermo come questo. Utilizzando le credenziali che hai fornito in plausible-conf.env
file, accedi alla dashboard plausibile.
Fase 3:utilizzo di analisi plausibili per i tuoi siti web
È ora di aggiungere i siti Web che desideri monitorare e analizzare con Plausible. Dopo aver effettuato l'accesso alla dashboard della tua istanza Plausible, fai clic su "+ Aggiungi un sito web".
Inserisci il tuo nome di dominio (ad esempio domain.com
) senza www
o https://
e fai clic su "Aggiungi snippet"
Tieni presente che domain.com
può essere qualsiasi dominio e non ha nulla a che fare con l'hosting di Plausible sul suo sottodominio. Un'istanza plausibile può essere ospitata su qualsiasi altro nome di dominio e non necessariamente sul sottodominio del dominio analizzato.
Devi aggiungere questo snippet JavaScript negli script di intestazione sul sito Web domain.com. Sta a te capire come aggiungere uno script di intestazione al tuo sito web.
Su Linux Handbook, utilizziamo Ghost, CMS veloce e leggero.
Su Ghost, è necessario incollarlo nella sezione dell'intestazione in SETTINGS > Code injection
e fai clic su "Salva":
Una volta aggiunto, sarai in grado di osservare l'analisi web per il dominio poco dopo aver fatto clic su di esso nel pannello principale.
Per altre app Web, tra cui WordPress e Discourse, puoi anche fare riferimento alle guide di integrazione ufficiali.
Abilita rapporti settimanali o mensili con Plsuible
Supponendo domain.com
è il dominio che hai aggiunto per l'analisi, vai su domain.com > Settings > Email Reports
dopo aver effettuato l'accesso alla dashboard.
Abilita le opzioni desiderate come richiesto:
Se preferisci fare il nerd, puoi anche accedere alle impostazioni dell'e-mail direttamente in base alla seguente sintassi dell'URL:
https://plausible.domain.com/domain.com/settings#email-reports
dove plausible.domain.com
è dove ospiti la tua istanza plausibile e domain.com
è il sito che vuoi analizzare.
E le statistiche globali?
Se hai configurato GeoIP, puoi visualizzare la mappa globale sulla dashboard in cui i paesi dei visitatori sono ombreggiati in viola. Più scura è la tonalità del colore, più alto è il numero di visitatori del paese.
Passare il cursore su un paese sulla mappa ti mostrerà il conteggio dei visitatori per il tuo sito web. Cliccando su "ALTRO" ti mostrerà l'elenco completo dei conteggi dei visitatori per paese dalla mappa.
Suggerimenti per la manutenzione
Se desideri controllare i log del contenitore mentre è distribuito in tempo reale, puoi eseguire:
docker logs -f hosting_plausible_1
In qualsiasi momento, se desideri interrompere l'istanza, puoi utilizzare:
docker-compose down
Questo è tutto! Hai implementato con successo l'analisi plausibile con i rapporti via email e le statistiche delle mappe nazionali sulla dashboard!
Note personali su Plausible
Quindi, hai imparato a distribuire l'analisi plausibile sul tuo server. Quale metodo hai scelto per questo scopo?
Preferisco utilizzare il metodo del proxy inverso ogni volta perché lascia sempre un'opzione per distribuire altri servizi Web e quindi risparmiare sui costi del server.
Un metodo proxy inverso è preferibile anche per una modalità operativa di un singolo server a servizio singolo, poiché rende l'intera configurazione a prova di futuro. Se intendo distribuire una seconda istanza sul metodo discusso nella sezione precedente, richiederebbe molto impegno aggiuntivo per modificare e adottare la nuova configurazione del proxy inverso. Quindi è meglio averlo già pronto dall'inizio stesso.
Inoltre, non devi preoccuparti anche dei certificati SSL.
Se hai abilitato il ripristino in tempo reale su Docker, ti consigliamo di utilizzare il criterio di riavvio on-failure
invece di always
mostrato in questa guida. Eviterà il riavvio dei contenitori nel caso in cui il demone Docker venga riavviato.
Invece di Google Analytics, goditi un Analytics senza Google :)
Se riscontri errori o riscontri problemi o hai un suggerimento, faccelo sapere lasciando un commento.