Files
gochat/docs/runbooks/anonymous-visitor-geoip.md
T
rogee 4d684a71eb
Build and publish Docker images / Build and publish images (push) Successful in 2m10s
feat: geolocate anonymous widget visitors
2026-09-15 08:54:13 +08:00

2.0 KiB
Raw Blame History

Anonymous Web Widget GeoIP 配置

GoChat 可使用本地 MaxMind-compatible City MMDB,将无姓名的 Web Widget 联系人命名为省市客户,例如 河北保定客户

配置

生产 Compose 使用两个变量:

GOCHAT_GEOIP_DB_PATH=/run/gochat/geoip/GeoLite2-City.mmdb
GOCHAT_GEOIP_DB_FILE=../../.secrets/GeoLite2-City.mmdb

GOCHAT_GEOIP_DB_FILE 是宿主机上的 MMDB 文件,GOCHAT_GEOIP_DB_PATH 是容器内的只读挂载路径。生产 Compose 会把文件挂载到 GoChat 和 worker 容器;不要把数据库文件提交到 Git 或打包进镜像。

开发和 Quickstart 默认不启用 GeoIP。需要验证时,设置 GOCHAT_GEOIP_DB_PATH 并把数据库挂载到对应容器内路径。

数据库来源和更新

使用具备合法授权的 MaxMind-compatible City 数据库。下载、授权、更新频率和访问权限由部署方负责;数据库文件应由运行用户可读、不可写。

更新步骤:

  1. 在宿主机下载并校验新的 MMDB 文件;
  2. 原子替换 GOCHAT_GEOIP_DB_FILE 指向的文件;
  3. 重启 gochatworker,让进程重新打开数据库;
  4. 查看启动日志中的 GeoIP database opened
  5. 用隔离 Widget 验证一个省市、一个直辖市和一个无记录地址。

故障回退

数据库缺失、损坏、过期或无法读取不会阻断服务启动或 Widget 请求。服务会记录一次启动告警,匿名联系人使用 匿名客户

临时关闭功能:

GOCHAT_GEOIP_DB_PATH=

然后重新部署或重启服务即可,无需数据库迁移或数据回滚。

隐私边界

  • IP 只在服务端请求处理期间用于本地查询;
  • 一期不把原始 IP 写入联系人、日志或公开 Widget 响应;
  • 只保存系统生成名称所需的省、市元数据;
  • IP 归属地是网络出口的近似位置,不能代表客户精确所在地;
  • 反向代理场景必须正确配置 server.trusted_proxies,否则不要信任 X-Forwarded-For