Configurar MAXMIND para búsquedas inversas 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 Me gusta

@pfaffman, la URL de ‘Mis claves de licencia’ contiene tu ID de cuenta en MaxMind y, por lo tanto, no funcionará para nadie más que para ti :wink:

3 Me gusta

¡Me funciona! :winking_face_with_tongue:

Lo curioso es que ¡nadie más se ha quejado en 3 años! Es una wiki, así que puedes arreglarlo. Intentaré actualizar cuando llegue a un ordenador si consigo recordarlo.

2 Me gusta

Muestra cuántas personas leen realmente páginas como esta :grin:

He editado la página :nerd_face:

3 Me gusta

¿Verdad? Y pasé bastante tiempo creándolo. No estoy seguro de cómo no me di cuenta de que el enlace solo funcionaba para mí, pero supongo que tener que iniciar sesión fue suficiente para distraerme a mí y, tal vez, a muchas otras personas.

2 Me gusta

Solo una pregunta de curiosidad @evert, ¿querías dejar los corchetes ahí? Si es así, ¿quizás quedaría mejor como un botón?

Ejemplo de botón

Manage License Keys

<kbd>Manage License Keys</kbd>
3 Me gusta

Claro, ¿por qué no? :+1:t2:

2 Me gusta

Hasta donde puedo decir, estoy listo para empezar

image

pero todos los usuarios muestran la ubicación “desconocida”

Cualquier ayuda es apreciada.

Necesitas eliminar el carácter # del principio y reconstruir. El carácter # convierte toda la línea en un comentario en el archivo YAML.

5 Me gusta

Gracias, ¿simplemente escribir y salir o reconstruir también?

Tienes que reconstruir. De lo contrario, Discourse no verá los cambios en app.yml.

4 Me gusta

Gracias, hecho y funcionando :hugs:

2 Me gusta

Probablemente no haga falta decirlo para la mayoría aquí, pero alguien que use una VPN puede generar más alertas que otros. Es un empujón para los administradores, pero no indica necesariamente un usuario malintencionado.

2 Me gusta

¡Perfecto! Gracias por este tutorial.

1 me gusta

Disculpe,
Cuando Discourse realiza una búsqueda de IP (IP inversa) para el panel de administración, ¿se basa en una base de datos GeoIP sin conexión o consulta una API externa cada vez?

¡¡gracias!!

1 me gusta

Para contextualizar, mi preferencia es manejar las búsquedas de IP sin conexión apuntando Discourse a un archivo local GeoLite2-City.mmdb, en lugar de llamar a una API externa.

¿Todavía no hay soporte para IPv6? Quizás sea hora de redirigir este tráfico a v4 ):

Bueno, estoy atascado. Creo que estoy configurado correctamente, pero estoy recibiendo un error 401 al descargar las bases de datos de MaxMind.

Estoy en una instalación estándar, autoalojada y actualizada.

Creé una cuenta en MaxMind y agregué una nueva clave de licencia.

Edité la sección ENV de app.yml para:

  ## La clave de geolocalización IP de MaxMind para la búsqueda de direcciones IP
  ## ver https://meta.discourse.org/t/-/137387/23 para más detalles
  DISCOURSE_MAXMIND_ACCOUNT_ID: [mi ID de cuenta]
  DISCOURSE_MAXMIND_LICENSE_KEY: [mi clave de licencia]

…luego ejecuté ./launcher rebuild app

Durante la reconstrucción, se registraron estos errores “401 No autorizado”:

La descarga de la base de datos MaxMind GeoLite2-City falló. : OpenURI::HTTPError : Error 401
La descarga de la base de datos MaxMind GeoLite2-ASN falló. : OpenURI::HTTPError : Error 401

(… y por supuesto, no se descargaron archivos de base de datos a mi /var/www/discourse/vendor/data)

Según esta sugerencia, utilicé un comando encontrado en el Portal de Desarrolladores de MaxMind — con las mismas credenciales — para descargar directamente una base de datos:

curl -O -J -L -u [mi ID de cuenta]:[mi clave de licencia] \
'https://download.maxmind.com/geoip/databases/GeoLite2-City/download?suffix=tar.gz'

…que funcionó sin problemas.

¿Qué podría estar faltando para provocar un 401 al conectarse desde Discourse?