pfaffman
(Jay Pfaffman)
2020 年12 月 21 日 17:58
1
什么是 MAXMIND,我为什么要使用它?
Discourse 使用 MAXMIND 来提供反向 IP 查询的地理信息。
如果没有 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>管理许可证密钥</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 个赞
evert
(Evert Meulie)
2024 年5 月 14 日 08:41
28
@pfaffman ,‘我的许可证密钥’的 URL 包含您在 MaxMind 的账户 ID,因此除了您自己以外,其他人无法使用
3 个赞
pfaffman
(Jay Pfaffman)
2024 年5 月 14 日 08:52
29
对我来说没问题!
不过有趣的是,三年来没有人抱怨过!这是一个维基,所以你可以自己修复。如果我记得的话,我会尝试在有电脑时更新。
2 个赞
pfaffman
(Jay Pfaffman)
2024 年5 月 14 日 09:02
31
Evert Meulie:
这显示了有多少人实际上阅读了这类页面
是吧!?我花了很多时间来创建它。不知道我怎么会忽略了链接只对我有效,但我想登录就足以让我和其他很多人分心了。
2 个赞
Firepup650
(Firepup Sixfifty)
2024 年5 月 14 日 10:34
32
Jay Pfaffman:
[管理许可证密钥]
只是一个好奇的问题 @evert ,您是故意留下括号的吗?如果是这样,它是否看起来像一个按钮会更好?
按钮示例
管理许可证密钥
<kbd>管理许可证密钥</kbd>
3 个赞
tgxworld
(Alan Tan)
2024 年5 月 29 日 11:59
35
您需要删除前面的#字符并重新构建。#字符使整行成为YAML文件中的注释。
5 个赞
Firepup650
(Firepup Sixfifty)
2024 年5 月 29 日 14:18
37
你必须重新构建。否则,Discourse 将无法识别 app.yml 的更改。
4 个赞
对于在座的大多数人来说,这可能不言而喻,但使用 VPN 的人可能会比其他人产生更多的警报。这只是对管理员的一个提醒,并不一定表示用户有恶意。
2 个赞
b89k57w62
(Wu Hao Sheng)
2025 年6 月 19 日 13:18
41
请问,
当 Discourse 为管理面板执行 IP 查询(反向 IP 查询)时,它是依赖于离线 GeoIP 数据库 还是每次都查询外部 API ?
谢谢!!
1 个赞
b89k57w62
(Wu Hao Sheng)
2025 年6 月 19 日 13:19
42
就上下文而言,我更倾向于通过将 Discourse 指向一个本地的 GeoLite2-City.mmdb 文件来离线 处理 IP 查询,而不是调用外部 API。
eisammy
(Sammy)
2025 年6 月 23 日 19:49
43
还不支持 IPv6 吗?也许是时候把这些流量重定向到 IPv4 了 ):
ToddZ
2025 年11 月 7 日 00:40
44
我遇到了问题。我认为我的设置是正确的,但在下载 MaxMind 数据库时收到了 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 未授权”错误:
MaxMind 数据库 GeoLite2-City 下载失败。: OpenURI::HTTPError : 401 错误
MaxMind 数据库 GeoLite2-ASN 下载失败。: OpenURI::HTTPError : 401 错误
(当然,我的 /var/www/discourse/vendor/data 目录中也没有任何数据库文件)
根据这个建议 ,我使用了MaxMind 开发人员门户 上找到的命令——使用相同的凭据——直接下载了一个数据库:
curl -O -J -L -u [我的账户 ID]:[我的许可证密钥] \
'https://download.maxmind.com/geoip/databases/GeoLite2-City/download?suffix=tar.gz'
……这运行正常。
那么,从 Discourse 连接时导致 401 错误,我可能遗漏了什么?