tva
← Artigos

Análise de dados com foco na privacidade: Plausible auto-hospedado com Google Search Console

O cenário de rastreamento para análise de dados mudou consideravelmente desde que o GDPR entrou em vigor em 2018. Na realidade, a maioria das organizações ainda executa o Google Analytics 4 em seus sites — não porque seja a melhor ferramenta para o trabalho, mas porque a migração parece custosa e as alternativas parecem de nicho. Migramos do Google Analytics para o Plausible CE auto-hospedado em meados de 2024, e os resultados merecem ser documentados em detalhes.

Por que deixamos o Google Analytics

O Google Analytics 4 é uma plataforma capaz. O trabalho exigido para conformidade, no entanto, é substancial. Executar o GA4 em uma configuração efetivamente em conformidade com o GDPR exige um banner de consentimento para cookies, uma plataforma de gerenciamento de consentimento, acordos de processamento de dados e uma base legal documentada para qualquer transferência de dados de análise ao Google nos Estados Unidos. O próprio banner de consentimento introduz uma lacuna sistemática em seus dados: todo visitante que recusa o consentimento fica fora dos dados e, dependendo do desenho do banner e do público, essa parcela pode ser substancial, deixando um ponto cego em cada métrica que você coleta.

O problema é que isso cria uma escolha inviável. Ou você aceita dados incompletos do segmento com consentimento, ou executa o GA4 sem consentimento e aceita exposição legal. Nenhuma das duas é uma solução adequada para uma organização que leva tanto a qualidade dos dados quanto a conformidade a sério.

O Plausible CE é projetado em torno de uma premissa diferente. O script de rastreamento não usa cookies por padrão, não armazena informações de identificação pessoal e foi projetado para funcionar sem banner de consentimento. Esse projeto se baseia em escolhas técnicas específicas. O Plausible não define cookies, não gera identificador de usuário persistente entre sessões e não transmite dados para servidores de terceiros quando auto-hospedado. A Diretiva ePrivacy (PECR no Reino Unido) exige consentimento para armazenar ou acessar informações no dispositivo de um usuário, regra que um script sem cookies foi projetado para evitar acionar. As Diretrizes 2/2023 do EDPB interpretam que essa regra também abrange algumas técnicas sem cookies, como o rastreamento por pixels e por IP. Por isso, confirme a avaliação para sua própria implantação.

A arquitetura: ClickHouse como mecanismo de análise de dados

O Plausible CE vem com dois bancos de dados: ClickHouse para armazenamento de eventos e PostgreSQL para configuração. O ClickHouse é um banco de dados orientado a colunas construído para cargas de trabalho analíticas — o mesmo mecanismo que a Yandex construiu para sua infraestrutura de análise de dados em escala. Para um site que recebe dezenas de milhares de visualizações de página mensais, a vantagem de desempenho em relação a um banco de dados baseado em linhas é imperceptível. Mas a arquitetura significa que o Plausible pode lidar com sites com centenas de milhões de eventos sem alterações de esquema ou reformulação da infraestrutura, o que importa se você espera crescimento.

A configuração do Docker Compose é simples. O Plausible fornece uma configuração oficial com todos os serviços necessários. Nossa implantação é executada ao lado do Traefik em uma instância Hetzner CX21 (2 vCPUs, 4 GB RAM) em Helsinque:

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:

Defina DISABLE_REGISTRATION explicitamente. Com true, o registro fica fechado após a criação da sua conta inicial; com false, qualquer pessoa que encontre a URL de uma instância pública pode se registrar. A documentação atual do Plausible CE indica invite_only como padrão. Gere SECRET_KEY_BASE com openssl rand -base64 64 e mantenha-o em um arquivo .env fora do controle de versão.

Os dois arquivos de configuração XML do ClickHouse referenciados na seção de volumes controlam o nível de detalhamento dos logs. Sem eles, o ClickHouse gera logs com um nível de detalhamento que preenche o disco em uma instância pequena em dias. O repositório do Plausible inclui esses arquivos; copie-os para um subdiretório clickhouse/ junto com seu docker-compose.yml antes de iniciar a stack.

Implantando o script de rastreamento

Uma vez que a stack esteja em execução, adicionar rastreamento a qualquer site é uma única tag no <head> HTML:

<script defer data-domain="yourdomain.com"
  src="https://plausible.yourdomain.com/js/script.js"></script>

O Plausible vem com extensões de script opcionais que se agrupam em uma única requisição. Usamos a variante que inclui rastreamento de download de arquivos, suporte a roteamento baseado em hash para aplicações de página única, rastreamento de links externos, propriedades personalizadas de visualização de página, rastreamento de receita e eventos marcados:

<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>

O script combinado pesa aproximadamente 2,4 KB descomprimido. O script do Google Analytics 4 é de aproximadamente 45 KB. Esta não é uma diferença marginal — é aproximadamente 20× menos JavaScript para baixar em cada carregamento de página, e menos código para analisar e executar pode melhorar os Core Web Vitals em dispositivos de baixa potência e conexões lentas.

Integração com o Google Search Console

O argumento mais forte para manter o GA4 é sua conexão com o Google Search Console, que permite correlacionar dados de consultas de busca orgânica com o comportamento no site. O Plausible suporta essa integração nativamente, e é o recurso que torna a migração viável para sites orientados a conteúdo.

A configuração requer uma propriedade verificada do Search Console e uma autorização OAuth nas configurações do site do Plausible. Em uma instância auto-hospedada, também exige um cliente OAuth do Google Cloud com a API do Search Console ativada, fornecido ao Plausible por meio de GOOGLE_CLIENT_ID e GOOGLE_CLIENT_SECRET (já previstos no arquivo Compose acima). Após a conexão, as consultas de busca aparecem em Sources ao selecionar Google, com os cliques e, na visualização expandida, impressões, taxa de cliques e posição média. Somente consultas com pelo menos um clique são listadas.

Um detalhe de configuração que costuma causar problemas: a propriedade do GSC escolhida deve de fato cobrir o domínio rastreado pelo Plausible. Uma propriedade GSC verificada como https://www.yourdomain.com usando o método de prefixo de URL não se conectará a um site Plausible rastreando yourdomain.com sem o subdomínio. Use o tipo de propriedade Domain no GSC quando possível — ele cobre todos os subdomínios e protocolos e torna a conexão com o Plausible simples.

Os dados do GSC no Plausible não são em tempo real: o Plausible documenta um atraso de aproximadamente 24 a 36 horas, o mesmo do Search Console, e sugere verificar os dados de dois dias atrás. Esta é uma restrição do Google, não uma limitação do Plausible. Para revisão operacional dos dados de análise, isso raramente é um obstáculo prático.

Conformidade com o GDPR sem banners de cookies

A posição de conformidade merece ser declarada com precisão. Sob a Diretiva ePrivacy, o consentimento é exigido quando você armazena ou acessa informações no dispositivo de um usuário. Cookies e localStorage acionam esse requisito. O Plausible não armazena nada no dispositivo do usuário: sem cookies, sem entradas de localStorage, sem gravações no IndexedDB.

O Plausible também não gera um identificador de usuário persistente entre sessões. Cada visualização de página é processada independentemente. A aproximação mais próxima de um identificador de usuário é um hash diário derivado do endereço IP do visitante, da string do agente de usuário, do domínio do site e de um salt do lado do servidor que é substituído e excluído a cada 24 horas. Os endereços IP e agentes de usuário originais não são armazenados. O Plausible afirma que isso significa que não coleta dados pessoais; como o endereço IP ainda é processado brevemente para calcular o hash, determinar se isso fica fora do conceito de dados pessoais do Artigo 4(1) do GDPR é uma avaliação jurídica, não uma garantia técnica. Esta é a nossa avaliação para a implantação própria da tva, não aconselhamento jurídico; confirme-a com seu consultor de proteção de dados.

O resultado prático, com base nessa avaliação: sem banner de consentimento, sem plataforma de gerenciamento de consentimento, sem otimização de taxa de consentimento e sem lacuna em seus dados por consentimento recusado. Os dados de análise que você vê refletem seu público muito melhor do que o subconjunto disposto a aceitar rastreamento, embora os visitantes que bloqueiam o script continuem sem ser contabilizados.

Nossa política de privacidade agora requer um único parágrafo conciso sobre análise de dados, descrevendo com precisão o que o Plausible coleta e onde os dados residem. A seção equivalente do GA4 anteriormente se estendia por vários parágrafos e exigia referências específicas às Cláusulas Contratuais Padrão do Google e termos de processamento de dados. A redução no trabalho jurídico é significativa para uma organização pequena.

Carga de infraestrutura e comparação de desempenho

Executar ambas as ferramentas em paralelo por 60 dias antes da migração do GA4 forneceu uma comparação direta. As contagens de visualizações de página diferiram em menos de 3%.

A diferença mais instrutiva estava nas contagens de visitantes únicos. O Plausible registrou aproximadamente 12% mais visitantes únicos do que o GA4 com consentimento no mesmo período. Isso é esperado: o subconjunto de usuários do GA4 que dá consentimento tende a incluir visitantes mais engajados que são menos propensos a usar bloqueadores de anúncios ou navegadores focados em privacidade. O Plausible, ao rastrear os visitantes sem a barreira do consentimento, dá uma imagem mais precisa do alcance total, embora os visitantes que bloqueiam seu script continuem sem ser contabilizados. O GA4 no modo com consentimento dá um retrato comportamental de seus usuários mais engajados. Nenhum está errado — eles estão respondendo perguntas ligeiramente diferentes.

O consumo de recursos de infraestrutura é modesto. O ClickHouse consome aproximadamente 400 MB de RAM em estado estável. O PostgreSQL adiciona cerca de 80 MB. O uso de CPU é desprezível durante a operação normal e brevemente elevado apenas durante importações de dados históricos em massa. Para organizações que já executam um servidor Hetzner com capacidade disponível, o custo marginal de adicionar o Plausible a uma stack existente é efetivamente zero.

Mas, na prática, a decisão de trocar não é principalmente sobre custo de infraestrutura ou paridade de recursos. É sobre que tipo de dados você está disposto a usar como base para decisões. A análise de dados que exige consentimento produz uma amostra sistematicamente enviesada. A análise de dados sem cookies e sem consentimento produz uma imagem muito mais completa com menos detalhe por visitante. Para um site de marketing em que a pergunta principal é “quais páginas e fontes geram consultas?”, a imagem mais completa é mais útil do que o retrato detalhado de um subconjunto auto-selecionado.

Artigos relacionados

Leitura complementar