tva
← Insights

Analytics com Privacidade em Primeiro Lugar: Configurando o Plausible Auto-Hospedado com Google Search Console

O cenário de rastreamento de analytics 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 em self-hosting em meados de 2024, e os resultados valem ser documentados em detalhes.

Por que deixamos o Google Analytics

O Google Analytics 4 é uma plataforma capaz. O overhead de conformidade, no entanto, é substancial. Executar o GA4 em uma configuração genuinamente compatível com GDPR requer um banner de consentimento de cookies, uma plataforma de gerenciamento de consentimento, acordos de processamento de dados e roteamento regional cuidadoso para evitar que endereços IP e identificadores de usuários saiam da UE. O próprio banner de consentimento introduz uma lacuna sistemática em seus dados: estudos independentes sugerem que entre 30% e 50% dos visitantes recusam o consentimento completamente, deixando um ponto cego em cada métrica que você coleta.

O problema é que isso cria uma troca inviável. Ou você aceita dados incompletos do segmento com consentimento, ou executa o GA4 sem consentimento e aceita exposição legal. Nenhuma é uma resposta limpa 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 coleta informações de identificação pessoal e não requer banner de consentimento sob o GDPR. Isso não é linguagem de marketing — é uma afirmação técnica específica. 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 em self-hosting. As orientações do ICO sobre PECR e as opiniões do Grupo de Trabalho do Artigo 29 sobre analytics confirmam que analytics sem cookies e sem fingerprinting não acionam o requisito de consentimento sob a Diretiva ePrivacy.

A arquitetura: ClickHouse como motor de analytics

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 motor que a Yandex construiu para sua infraestrutura de analytics 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 schema ou redesign de 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. Nosso deployment roda 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
    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:

O flag DISABLE_REGISTRATION=true não é opcional. Após criar sua conta inicial, qualquer instância pública sem este flag está aberta para registro por qualquer pessoa que encontre a URL. 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 a verbosidade do logging. Sem eles, o ClickHouse faz log em um nível 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 page view, 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 — é 20× menos análise de JavaScript em cada carregamento de página, o que afeta mensuravelmente as pontuações de 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 troca 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’. Uma vez conectado, os dados do GSC aparecem como um detalhamento separado dentro da seção de fontes de tráfego, mostrando consultas de busca, impressões, taxas de cliques e posição média junto com seus dados padrão de page view e sessão.

Um detalhe de configuração que causa problemas consistentemente: o domínio no Plausible deve corresponder exatamente ao tipo de propriedade do GSC. 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 carregam o mesmo atraso de 48 horas que a própria API do Search Console. Esta é uma restrição do Google, não uma limitação do Plausible. Para revisão operacional de analytics, isso raramente é um obstáculo prático.

Conformidade com GDPR sem banners de cookies

A posição de conformidade vale ser declarada com precisão. Sob o GDPR e 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 IndexedDB.

O Plausible também não gera um identificador de usuário persistente entre sessões. Cada page view é processado independentemente. A aproximação mais próxima de um identificador de usuário é um hash diário derivado de uma combinação do endereço IP do visitante’, string de agente de usuário e um salt rotativo do lado do servidor — um valor que muda a cada 24 horas e não pode ser revertido para recuperar o endereço IP original. Este design coloca o Plausible fora da definição de processamento de dados pessoais sob o Artigo 4(1) do GDPR.

O resultado prático: 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 analytics que você vê refletem seu público real em vez do subconjunto disposto a aceitar rastreamento.

Nossa política de privacidade agora requer um único parágrafo conciso sobre analytics, 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 overhead legal é material para uma organização pequena.

Overhead 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 page view diferiram em menos de 3% — consistente com as próprias figuras de precisão publicadas do Plausible’ comparando deployments sem cookies com GA4 com consentimento.

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 GA4 que aceita consentimento tende para visitantes mais engajados que são menos propensos a usar bloqueadores de anúncios ou navegadores focados em privacidade. O Plausible, ao rastrear todos os visitantes sem atrito de consentimento, dá uma imagem mais precisa do alcance total. 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 footprint 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 é negligenciá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. Analytics que requer consentimento produz uma amostra sistematicamente enviesada. Analytics sem cookies e sem consentimento produz uma imagem completa com menos detalhe por visitante. Para um site de marketing onde a pergunta principal é “quais páginas e fontes geram consultas,” a imagem completa é mais útil do que o retrato detalhado de um subconjunto auto-selecionado.

Insights Relacionados

Artigos relacionados