GNU/Linux >> Linux Esercitazione >  >> Linux

Guida completa all'auto-hosting plausibile [Alternativa a Google Analytics rispettosa della privacy]

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
Potresti anche voler impostare la variabile DISABLE_REGISTRATION su true nel file di configurazione sopra. Questa configurazione ha senso se non si desidera consentire la registrazione di nuovi utenti una volta che l'istanza Plausible è attiva e funzionante. Ma mantieni il backup delle tue credenziali di amministratore correttamente.

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 tramite SMTP_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.


Linux
  1. Come installare Void Linux:una guida passo passo completa

  2. Una guida per l'amministratore di sistema alla configurazione di un server di posta elettronica

  3. Guida completa per l'utilizzo di AsciiDoc in Linux

  4. Guida completa all'auto-hosting di Rocket.Chat con Docker

  5. Installa Zabbix su Ubuntu Server 16.04 LTS - Guida completa

Una guida completa per installare Tomcat su Linux

Ubuntu Firewall UFW – Una guida completa

La guida completa per installare MySQL su Ubuntu

Comandi della directory Linux:una guida completa

Installa FOG Server su Ubuntu Server - Guida definitiva

Cronjob - La guida completa ai Cronjobs