Configurar MAXMIND para consultas reversas de IP

What is MAXMIND and why would I want it?

Discourse uses MAXMIND to provide geographical information for reverse IP lookups.

location

Without Maxmind’s database you’ll see something like this:
nolocation

Or perhaps you’ve noticed this message fly by when you rebuild your container:

MaxMind IP database download requires an account ID and a license key
Please set DISCOURSE_MAXMIND_ACCOUNT_ID and DISCOURSE_MAXMIND_LICENSE_KEY. See https://meta.discourse.org/t/configure-maxmind-for-reverse-ip-lookups/173941 for more details.

Why would I care?

It’s often useful for moderators to see where someone is logging in from to determine if the person is who (and where) they say they are or to diagnose problems with your site. (“Oh, we frequently see problems with Special-ISP”.)

Also, as of 2.2.0.beta4, Discourse also uses this information to notify admins if a login is seen from a new location. Without the Maxmind database, Discourse cannot provide this notification.

What if I don’t setup a MaxMind account and generate a license key

You won’t be able to do reverse lookups. If the issues above do not concern you, then it is a good bet that nothing bad will happen if you just ignore this.

How do I setup a MaxMind account and obtain an Account ID and a license key?

See Maxmind’s https://support.maxmind.com/hc/en-us/articles/4407111582235-Generate-a-License-Key page for up-to-date instructions, but you need to

  • Visit the GeoLite2 Sign Up page.
  • generate a license key on the Manage License Keys tab in the left navigation bar once you’ve logged in. Generate a new key, and copy the account ID and the license key. If you lose it, you’ll need to generate a new one.

You then add that key to the ENV section of your app.yml with a line like this:

  DISCOURSE_MAXMIND_ACCOUNT_ID: your-account-id-here
  DISCOURSE_MAXMIND_LICENSE_KEY: your-key-here

Or via discourse-setup when prompted.

Notes for IPv6 users

The Standard install doesn’t fully support IPv6 out of the box. If you have a server with IPv6 configured and need Maxmind information for IPv6 addresses, you’ll need to make sure that the user’s actual IP address is what is getting to Discourse, normally by using an external proxy that passes the remote IP address to Discourse. This requires more systems administration expertise than the standard install.

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?