Configurar MAXMIND para consultas reversas de IP

O que é o MAXMIND e por que eu o desejaria?

O Discourse usa o MAXMIND para fornecer informações geográficas para consultas de IP reversas.

Sem o banco de dados do Maxmind, você verá algo assim:

Ou talvez você tenha notado esta mensagem aparecendo ao reconstruir seu contêiner:

O download do banco de dados de IPs do MaxMind requer um ID de conta e uma chave de licença.
Por favor, defina DISCOURSE_MAXMIND_ACCOUNT_ID e DISCOURSE_MAXMIND_LICENSE_KEY. Veja https://meta.discourse.org/t/configure-maxmind-for-reverse-ip-lookups/173941 para mais detalhes.

Por que eu me importaria?

Para moderadores, é frequentemente útil ver de onde alguém está fazendo login para determinar se a pessoa é quem (e onde) diz ser ou para diagnosticar problemas no seu site. (“Ah, frequentemente vemos problemas com Special-ISP.”)

Além disso, a partir da versão 2.2.0.beta4, o Discourse também usa essas informações para notificar administradores se um login for detectado de um novo local. Sem o banco de dados do Maxmind, o Discourse não pode fornecer essa notificação.

E se eu não configurar uma conta no MaxMind e gerar uma chave de licença?

Você não poderá realizar consultas reversas. Se os problemas mencionados acima não lhe preocupam, é provável que nada de ruim aconteça se você simplesmente ignorar isso.

Como configurar uma conta no MaxMind e obter um ID de conta e uma chave de licença?

Consulte a página do Maxmind Generate a license key para instruções atualizadas, mas você precisa:

  • Visitar a página de Cadastro do GeoLite2.
  • Gerar uma chave de licença na aba \u003ckbd\u003eGerenciar Chaves de Licença\u003c/kbd\u003e na barra de navegação esquerda após fazer login. Gere uma nova chave e copie o ID da conta e a chave de licença. Se você perdê-la, precisará gerar uma nova.

Em seguida, adicione essa chave à seção ENV do seu arquivo app.yml com uma linha como esta:

  DISCOURSE_MAXMIND_ACCOUNT_ID: seu-id-de-conta-aqui
  DISCOURSE_MAXMIND_LICENSE_KEY: sua-chave-aqui

Ou via discourse-setup quando solicitado.

Notas para usuários de IPv6

A instalação padrão não oferece suporte completo ao IPv6 nativamente. Se você tiver um servidor configurado com IPv6 e precisar de informações do Maxmind para endereços IPv6, deverá garantir que o endereço IP real do usuário seja o que chega ao Discourse, normalmente usando um proxy externo que repassa o IP remoto ao Discourse. Isso exige mais conhecimentos de administração de sistemas do que a instalação padrão.

31 curtidas

@pfaffman, o URL para ‘Minhas Chaves de Licença’ contém o ID da sua conta na MaxMind e, portanto, não funcionará para ninguém além de você :wink:

3 curtidas

Funciona para mim! :winking_face_with_tongue:

O engraçado, porém, é que ninguém mais reclamou em 3 anos! É uma wiki, então você pode consertar. Tentarei atualizar quando chegar a um computador, se conseguir me lembrar.

2 curtidas

Mostra quantas pessoas realmente leem páginas como estas :grin:

Eu editei a página :nerd_face:

3 curtidas

Sério!? E eu passei um bom tempo criando isso. Não tenho certeza de como deixei passar que o link funcionava apenas para mim, mas acho que ter que fazer login foi o suficiente para me distrair e talvez muitas outras pessoas.

2 curtidas

Apenas uma pergunta curiosa, @evert, você pretendia deixar os colchetes ali? Se sim, talvez ficaria melhor como um botão?

Exemplo de botão

Manage License Keys

<kbd>Manage License Keys</kbd>
3 curtidas

Claro, por que não? :+1:t2:

2 curtidas

Pelo que posso ver, estou pronto para ir

image

mas todos os usuários mostram a localização “desconhecida”

Qualquer ajuda é apreciada.

Você precisa remover o caractere # da frente e reconstruir. O caractere # faz com que toda a linha seja um comentário no arquivo YAML.

5 curtidas

Obrigado, apenas escreva e saia ou reconstrua também?

Você tem que reconstruir. O Discourse não verá as alterações em app.yml caso contrário.

4 curtidas

Obrigado, feito e funcionando :hugs:

2 curtidas

Provavelmente é desnecessário dizer para a maioria aqui, mas alguém que usa uma VPN pode gerar mais alertas do que outros. É um incentivo para os administradores, mas não indica necessariamente um usuário nefasto.

2 curtidas

Perfeito! obrigado por este tutorial.

1 curtida

Com licença,
Quando o Discourse realiza uma consulta de IP (IP reverso) para o painel de administração, ele se baseia em um banco de dados GeoIP offline ou consulta uma API externa a cada vez?

obrigado!!

1 curtida

Para contextualizar, minha preferência é lidar com as consultas de IP offline, apontando o Discourse para um arquivo local GeoLite2-City.mmdb, em vez de chamar uma API externa.

Ainda não há suporte para IPV6? talvez seja hora de redirecionar esse tráfego para v4 ):

Bem, estou preso. Acho que estou configurado corretamente, mas estou recebendo um erro 401 ao baixar os bancos de dados da MaxMind.

Estou em uma instalação padrão, auto-hospedada e atualizada.

Criei uma conta na MaxMind e adicionei uma nova chave de licença.

Editei a seção ENV do app.yml para:

  ## A chave de endereço IP de geolocalização da MaxMind para consulta de endereço IP
  ## veja https://meta.discourse.org/t/-/137387/23 para detalhes
  DISCOURSE_MAXMIND_ACCOUNT_ID: [meu ID de conta]
  DISCOURSE_MAXMIND_LICENSE_KEY: [minha chave de licença]

… e depois executei ./launcher rebuild app

Durante a reconstrução, esses erros “401 Unauthorized” foram registrados:

Baixa do banco de dados MaxMind GeoLite2-City falhou. : OpenURI::HTTPError : Erro 401
Baixa do banco de dados MaxMind GeoLite2-ASN falhou. : OpenURI::HTTPError : Erro 401

(… e, claro, nenhum arquivo de banco de dados chegou ao meu /var/www/discourse/vendor/data)

Conforme essa sugestão, usei um comando encontrado no Portal de Desenvolvedores da MaxMind — com as mesmas credenciais — para baixar diretamente um banco de dados:

curl -O -J -L -u [meu ID de conta]:[minha chave de licença] \
'https://download.maxmind.com/geoip/databases/GeoLite2-City/download?suffix=tar.gz'

… o que funcionou perfeitamente.

O que posso estar perdendo para causar um 401 ao me conectar do Discourse?