Habilitar o painel “GEO LOCATION” com GeoLite2 no GoAccess

Este guia ativa o painel de geolocalização do GoAccess usando as bases GeoLite2 (MaxMind). Pressupõe que o GoAccess tenha suporte ao GeoIP2, que os logs Nginx já contenham o IP real do cliente (via proxy reverso), e que você gere relatórios com um script como o update-goaccess.sh que configuramos em Manual completo – Caddy + Nginx + GoAccess ou que você tenha acesso ao arquivo de configuração global do GoAccess

1 — Conferir suporte GeoIP2 no GoAccess

goaccess -V | grep -i geoip

Saída esperada:

--enable-geoip=mmdb

2 — Criar a conta na MaxMind e gerar a License Key

  1. Acesse maxmind.com e crie uma conta gratuita para usar as bases GeoLite2.
  2. Depois de logado, localize o menu lateral de conta (Account).
  3. Entre em Manage license keys e gere uma nova chave (License Key) para uso nos servidores.
  4. Guarde o seu Account ID e a License Key, pois serão usados em /etc/GeoIP.conf.

3 — Instalar e atualizar as bases GeoLite2

  1. Habilite o componente contrib no Debian (se ainda não estiver habilitado) e atualize o índice:
    sudo vim /etc/apt/sources.list
    # Em cada linha que tenha "main", adicione "contrib". Ex.:
    deb http://deb.debian.org/debian trixie main contrib
    deb http://deb.debian.org/debian-security trixie-security main contrib
    deb http://deb.debian.org/debian trixie-updates main contrib

    sudo apt update

  2. Instale o utilitário oficial:
    sudo apt install -y geoipupdate

  3. Edite a configuração com suas credenciais (MaxMind/GeoLite2):
    sudo vim /etc/GeoIP.conf

    # Preencha com sua conta MaxMind:
    AccountID YOUR_ACCOUNT_ID
    LicenseKey YOUR_LICENSE_KEY
    EditionIDs GeoLite2-ASN GeoLite2-City GeoLite2-Country

  4. Baixe/atualize as bases e confirme os arquivos .mmdb:
    sudo geoipupdate
    ls -lh /var/lib/GeoIP/*.mmdb
    # Você deve ver GeoLite2-ASN.mmdb, GeoLite2-City.mmdb e GeoLite2-Country.mmdb

  5. (Opcional, porém recomendado) Habilite atualização automática:
    sudo systemctl enable --now geoipupdate.timer
    systemctl status geoipupdate.timer

4 — Testar o GoAccess com GeoIP antes de integrar

Gere um HTML de teste, apontando explicitamente a base City:

goaccess /var/log/nginx/SEU_SITE.access.log   --log-format=COMBINED   --geoip-database=/var/lib/GeoIP/GeoLite2-City.mmdb   -o /tmp/teste-geo.html

Se você está no Windows e quer abrir o HTML sem GUI no servidor, copie via PowerShell (ajuste usuário/IP):

scp seu_usuario@ip_do_servidor:/tmp/teste-geo.html "$env:USERPROFILE\Downloads\teste-geo.html"

Abra o arquivo no navegador e confirme se o painel “GEO LOCATION” aparece.

5 — Integrar ao seu fluxo (script que gera os relatórios)

Opção adotada: forçar GeoIP pelo script, deixando tudo determinístico.

  1. Edite seu update-goaccess.sh e adicione a flag --geoip-database no bloco de opções do GoAccess:
    sudo vim /usr/local/bin/update-goaccess.sh

    # Exemplo de bloco GOA_OPTS (ajuste ao seu script)
    GOA_OPTS=(
    --log-format="$LOGFMT"
    --date-format='%d/%b/%Y'
    --time-format='%T'
    --ignore-crawlers
    --no-global-config
    --geoip-database=/var/lib/GeoIP/GeoLite2-City.mmdb
    # as opções configuradas aqui se sobrepõem às contidas no arquivo de configuração global
    )

  2. Regenere os relatórios:
    sudo /usr/local/bin/update-goaccess.sh

  3. Abra seu URL de relatórios (ex.: /analytics/) e confirme o painel de geolocalização.

6 — (Alternativa) Usar o arquivo global do GoAccess

Se preferir centralizar no /etc/goaccess/goaccess.conf, basta acrescentar a linha geoip-database /var/lib/GeoIP/GeoLite2-City.mmdb no arquivo de configuração e não usar –no-global-config no script:

Com isso, chamadas do GoAccess sem a flag --geoip-database já herdarão o GeoIP do config global. (Lembre: se você mantiver --no-global-config no script, o arquivo global é ignorado.)

7 — Validar e observar

  1. Verifique o log do job/cron:
    tail -n 50 /var/log/update-goaccess.log

  2. Se necessário, recarregue serviços auxiliares (ex.: se você publica os relatórios via Nginx/Caddy):
    sudo nginx -t && sudo systemctl reload nginx || true

Qual configuração “vence” (ordem de precedência)

A prioridade é clara: valores padrão < arquivo global < variáveis de ambiente < flags na linha de comando. Ou seja, o que você colocar no script (flags) sempre prevalece. Se usar --no-global-config, o GoAccess ignora totalmente o /etc/goaccess/goaccess.conf.

Deixe um comentário

O seu endereço de email não será publicado Campos obrigatórios são marcados *

Rolar para cima