Configurer MAXMIND pour les recherches inversées d'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 « J'aime »

@pfaffman, l’URL de « Mes clés de licence » contient votre ID de compte chez MaxMind et ne fonctionnera donc que pour vous :wink:

3 « J'aime »

Ça marche pour moi ! :winking_face_with_tongue:

Ce qui est drôle, cependant, c’est que personne d’autre ne s’est plaint depuis 3 ans ! C’est un wiki, donc vous pouvez le corriger. J’essaierai de mettre à jour quand j’aurai accès à un ordinateur si je m’en souviens.

2 « J'aime »

Montre combien de personnes lisent réellement des pages comme celles-ci :grin:

J’ai modifié la page :nerd_face:

3 « J'aime »

C’est clair ! Et j’ai passé pas mal de temps à le créer. Je ne sais pas comment j’ai pu manquer le fait que le lien ne fonctionnait que pour moi, mais je suppose que le fait de devoir se connecter a suffi à me distraire, ainsi que peut-être beaucoup d’autres personnes.

2 « J'aime »

Juste une question par curiosité @evert, aviez-vous l’intention de laisser les crochets là ? Si oui, cela aurait-il peut-être l’air mieux sous forme de bouton ?

Exemple de bouton

Manage License Keys

<kbd>Manage License Keys</kbd>
3 « J'aime »

Bien sûr, pourquoi pas ? :+1:t2:

2 « J'aime »

D’après ce que je peux voir, tout va bien

image

mais tous les utilisateurs affichent la localisation « unknown »

Toute aide est appréciée.

Vous devez supprimer le caractère # devant et reconstruire. Le caractère # fait de toute la ligne un commentaire dans le fichier YAML.

5 « J'aime »

Merci, il suffit d’écrire et de quitter ou de reconstruire aussi ?

Vous devez reconstruire. Sinon, Discourse ne verra pas les modifications de app.yml.

4 « J'aime »

Merci, c’est fait et ça fonctionne :hugs:

2 « J'aime »

Il va sans dire pour la plupart d’entre vous, mais une personne utilisant un VPN peut générer plus d’alertes que d’autres. C’est une incitation pour les administrateurs, mais cela n’indique pas nécessairement un utilisateur malveillant.

2 « J'aime »

Parfait ! Merci pour ce tutoriel.

1 « J'aime »

Excusez-moi,
Lorsque Discourse effectue une recherche IP (IP inversée) pour le panneau d’administration, s’appuie-t-il sur une base de données GeoIP hors ligne ou interroge-t-il une API externe à chaque fois ?

Merci !!

1 « J'aime »

Pour situer le contexte, je préfère gérer les recherches d’IP hors ligne en pointant Discourse vers un fichier GeoLite2-City.mmdb local, plutôt que d’appeler une API externe.

Pas encore de support pour l’IPv6 ? Il serait peut-être temps de rediriger ce trafic vers l’IPv4 ):

Eh bien, je suis bloqué. Je pense que j’ai tout configuré correctement, mais je reçois une erreur 401 pour les téléchargements de la base de données MaxMind.

Je suis sur une installation standard, auto-hébergée et à jour.
J’ai créé un compte chez MaxMind et ajouté une nouvelle clé de licence.

J’ai modifié la section ENV de app.yml comme suit :

  ## La clé d'adresse IP de géolocalisation MaxMind pour la recherche d'adresse IP
  ## voir https://meta.discourse.org/t/-/137387/23 pour plus de détails
  DISCOURSE_MAXMIND_ACCOUNT_ID: [mon ID de compte]
  DISCOURSE_MAXMIND_LICENSE_KEY: [ma clé de licence]

…puis j’ai exécuté ./launcher rebuild app.

Lors de la reconstruction, ces erreurs “401 Unauthorized” ont été enregistrées :

Téléchargement de la base de données MaxMind GeoLite2-City échoué. : OpenURI::HTTPError : Erreur 401
Téléchargement de la base de données MaxMind GeoLite2-ASN échoué. : OpenURI::HTTPError : Erreur 401

(… et bien sûr, aucun fichier de base de données n’est arrivé dans mon répertoire /var/www/discourse/vendor/data)

Selon cette suggestion, j’ai utilisé une commande trouvée sur le portail développeur MaxMind — avec les mêmes identifiants — pour télécharger directement une base de données :

curl -O -J -L -u [mon ID de compte]:[ma clé de licence] \
'https://download.maxmind.com/geoip/databases/GeoLite2-City/download?suffix=tar.gz'

…ce qui a fonctionné sans problème.

Qu’est-ce que je pourrais manquer pour provoquer une erreur 401 lors de la connexion depuis Discourse ?