MAXMINDをIPアドレス逆引きのために設定する

MAXMIND とは何か、そしてなぜそれが必要なのか

Discourse は、逆 IP ルックアップのための地理情報を提供するために MAXMIND を使用します。

MaxMind のデータベースがない場合、以下のような表示になります:

あるいは、コンテナを再構築する際に次のようなメッセージが一瞬表示されたことに気づいたかもしれません:

MaxMind IP データベースのダウンロードには、アカウント ID とライセンスキーが必要です。
DISCOURSE_MAXMIND_ACCOUNT_ID および DISCOURSE_MAXMIND_LICENSE_KEY を設定してください。詳細については https://meta.discourse.org/t/configure-maxmind-for-reverse-ip-lookups/173941 をご覧ください。

なぜ気にする必要があるのか?

モデレーターにとって、誰かがどこからログインしているかを確認することは、その人が自分だと主張する人物(および場所)であるかどうかを判断したり、サイトの問題の診断に役立ったりすることがよくあります(「ああ、Special-ISP で頻繁に問題が発生しているな」など)。

また、2.2.0.beta4 以降、Discourse はこの情報を使用して、新しい場所からのログインがあった場合に管理者に通知します。MaxMind データベースがない場合、Discourse はこの通知を提供できません。

MaxMind アカウントを設定してライセンスキーを生成しない場合はどうなるのか?

逆ルックアップは行えなくなります。上記の問題があなたに関係ないのであれば、これを無視しても何も悪いことは起こらないでしょう。

MaxMind アカウントを設定し、アカウント ID とライセンスキーを取得する方法

最新の指示については、MaxMind の Generate a license key ページをご覧ください。ただし、以下の手順が必要です:

  • GeoLite2 登録 ページにアクセスします。
  • ログイン後、左側のナビゲーションバーにある <kbd>Manage License Keys</kbd> タブでライセンスキーを生成します。新しいキーを生成し、アカウント ID とライセンスキーをコピーしてください。紛失した場合は、新しいキーを生成する必要があります。

その後、app.yml の ENV セクションに以下のような行を追加して、そのキーを追加します:

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

または、discourse-setup のプロンプトに従って設定することもできます。

IPv6 ユーザー向けの注意事項

標準インストールでは、IPv6 が完全にサポートされているわけではありません。IPv6 が設定されたサーバーを持ち、IPv6 アドレスの MaxMind 情報が必要な場合は、通常、リモート IP アドレスを Discourse に渡す外部プロキシを使用することで、ユーザーの実際の IP アドレスが Discourse に到達するようにする必要があります。これには、標準インストールよりも高度なシステム管理スキルが必要です。

「いいね!」 31

@pfaffman 様、「マイライセンスキー」のURLにはMaxMindのアカウントIDが含まれているため、あなた以外の方には機能しません :wink:

「いいね!」 3

うまくいきました!:winking_face_with_tongue:

面白いのは、3年間誰も文句を言わなかったことです!これはwikiなので、あなたが修正できます。もし覚えていれば、コンピューターにアクセスできたときに更新を試みます。

「いいね!」 2

このようなページを実際に読んでいる人がどれだけいるかを示しています :grin:

ページを編集しました :nerd_face:

「いいね!」 3

そうですよね!?そして、私はそれを作成するのにかなりの時間を費やしました。リンクが私だけに機能していたことにどうして気づかなかったのかわかりませんが、ログインする必要があったことが私や他の多くの人を十分に気を散らませたのだと思います。

「いいね!」 2

ちょっとした疑問ですが、@evertさん、括弧をそのまま残すつもりでしたか?もしそうなら、ボタンにした方が見栄えが良いでしょうか?

ボタンの例

ライセンスキーの管理

<kbd>ライセンスキーの管理</kbd>
「いいね!」 3

いいですよ、なぜだめなのですか? :+1:t2:

「いいね!」 2

私の知る限りでは問題ないようです

image

しかし、すべてのユーザーの場所が「不明」と表示されます

どなたか助けていただけると幸いです。

文字を削除して再構築する必要があります。# 文字は YAML ファイル全体をコメントにします。

「いいね!」 5

ありがとうございます。書き出して終了、または再構築もしますか?

再構築が必要です。そうしないと、Discourse は app.yml の変更を認識しません。

「いいね!」 4

ありがとうございます。完了し、動作しています :hugs:

「いいね!」 2

ほとんどの方には言うまでもないことかもしれませんが、VPNを使用しているユーザーは他のユーザーよりも多くの警告を生成する可能性があります。これは管理者への注意喚起であり、必ずしも悪意のあるユーザーを示すものではありません。

「いいね!」 2

完璧です!このチュートリアルをありがとう。

「いいね!」 1

すみません、Discourseが管理パネルでIPルックアップ(逆引きIP)を実行する際、オフラインのGeoIPデータベースに依存していますか、それとも毎回外部APIにクエリを送信していますか?よろしくお願いします!!

「いいね!」 1

文脈として、私の好みは、外部APIを呼び出すのではなく、DiscourseをローカルのGeoLite2-City.mmdbファイルにポイントすることで、IPルックアップをオフラインで処理することです。

まだIPv6に対応していないのですか?そろそろこのトラフィックをIPv4にリダイレクトする時期かもしれませんね。

私は立ち往生しています。正しくセットアップされていると思うのですが、MaxMind DBのダウンロードで401エラーが発生しています。

私は標準的なインストール、自己ホスト、最新の状態です。
MaxMindにアカウントを作成し、新しいライセンスキーを追加しました。

app.yml の ENV セクションを次のように編集しました:

  ## MaxMindの地理的IPアドレス検索用のIPアドレスキー
  ## 詳細は https://meta.discourse.org/t/-/137387/23 を参照
  DISCOURSE_MAXMIND_ACCOUNT_ID: [私のアカウントID]
  DISCOURSE_MAXMIND_LICENSE_KEY: [私のライセンスキー]

その後、./launcher rebuild app を実行しました。

再構築の際、次のような「401 Unauthorized」エラーがログに出力されました:

MaxMind database GeoLite2-City download failed. : OpenURI::HTTPError : 401 Error
MaxMind database GeoLite2-ASN download failed. : OpenURI::HTTPError : 401 Error

(もちろん、DBファイルは /var/www/discourse/vendor/data に届きませんでした)

この提案に従い、MaxMind開発者ポータルで見つけたコマンドを使用して、同じ資格情報でデータベースを直接ダウンロードしました:

curl -O -J -L -u [my account ID]:[my license key] \
'https://download.maxmind.com/geoip/databases/GeoLite2-City/download?suffix=tar.gz'

これは正常に動作しました。

Discourseから接続する際に401エラーが発生する原因として、私が見落としている可能性のあるものは何でしょうか?