在 Matomo 中安装 ip2location 插件
matomo 是开源的分析网站访客流量信息的工具(在unraid中安装matomo的方法见这里), ip2location 是motomo中提供访客ip实际位置的插件。相较于matomo自带的ip地址数据库,ip2location可以提供更精确的访客ip的实际位置(因为我没有大量的数据,也就没能做详细测试,姑且可以相信插件制作方的宣传)。
在 Matomo 中安装 ip2location 插件的准备
当然,首先你要在unraid中已经安装好了matomo这个docker,并且unraid已经安装好了User Scripts插件。然后在网站https://lite.ip2location.com/注册用户。账户注册之后点击页面右上角账户名下拉菜单的“database download”按钮,然后复制保存下面的token。
选择下面的ip实际地址(只能显示城市)数据文件进行下载,我选的之这个是比较复杂的ipv6数据,其中也包括ipv4的实际地址信息,大约155M。把下载的数据文件复制到unraid的appdata/matomo/misc/文件夹。复制过程可能需要调整一下appdata文件夹的smb共享权限。
在unraid的docker管理界面点击代开maotomo的docker管理命令行窗口,执行下面命令(这些命令在执行自动更新脚本时需要到):
更新docker里面的apt软件目录
apt update
安装wget命令
apt install wget
安装unzip命令
apt install unzip
在 Matomo 中安装和设置 ip2location 插件
在matomo的窗口点击右上角设置按钮-左侧的平台/商城-右侧搜索栏输入:ip2location,在结果栏点击安装。
点击左侧菜单:系统/ip2location;在右侧栏横线上方输入ip地址数据保存位置:/var/www/html/misc/IP2LOCATION-LITE-DB9.IPV6.BIN;点击保存。
点击左侧菜单:系统/地理位置;在右侧栏选择:ip2location,然后保存。
然后重启matomo,就可以使用ip2location提供的地理位置信息了。
自动更新ip2location插件的ip地址数据
ip2location插件的ip地址数据也可以自动实现定时自动更新,需要先根据你的实际情况修改下面代码:
#!/usr/bin/bash
# Configuration
TOKEN="把你的token替换这里"
CODE="DB9LITEBINIPV6"
DBPATH="/var/www/html/misc/"
# ----- DO NOT EDIT ANYTHING BELOW THIS LINE ----- #
error() { echo -e "\e[91m[ERROR: $1]\e[m"; }
success() { echo -e "\e[92m$1\e[m"; }
echo "+--------------------------------------------------+"
echo "| IP2LOCATION AUTOMATED DATABASE UPDATE SCRIPT |"
echo "| ============================================ |"
echo "| Website: http://www.ip2location.com |"
echo "| Contact: [email protected] |"
echo "+--------------------------------------------------+"
echo ""
echo -n "Check for required commands......................... "
for a in wget unzip wc find grep; do
if [ -z "$(which $a)" ]; then
error "Command \"$a\" not found."
exit 0
fi
done
success "[OK]"
if [ ! -d /tmp/ip2location ]; then
echo -n "Create temporary directory.......................... "
mkdir /tmp/ip2location
if [ ! -d /tmp/ip2location ]; then
error "Failed to create /tmp/ip2location"
exit 0
fi
success "[OK]"
fi
cd /tmp/ip2location
echo -n "Download latest database from IP2Location website... "
wget -O database.zip -q http://www.ip2location.com/download?token=$TOKEN\&file=$CODE 2>&1
if [ ! -f database.zip ]; then
error "Download failed."
exit 0
fi
if [ ! -z "$(grep 'NO PERMISSION' database.zip)" ]; then
error "Permission denied."
exit 0
fi
if [ ! -z "$(grep '5 times' database.zip)" ]; then
error "Download quota exceed."
exit 0
fi
if [ $(wc -c < database.zip) -lt 102400 ]; then
error "Download failed."
exit 0
fi
success "[OK]"
echo -n "Decompress database package......................... "
unzip -q -o database.zip
if [ -z $(find . -name '*.BIN') ]; then
echo "ERROR:"
exit 0
fi
NAME="$(find . -name '*.BIN')"
success "[OK]"
echo -n "Move BIN database................................... "
mv -f $NAME $DBPATH
success "[OK]"
echo -n "Perform final clean up.............................. "
rm -rf /tmp/ip2location
success "[OK]"
success "DONE: IP2Location database has been updated."
把上面代码保存为download-ip2location-bin.sh文件,注意:要把格式转换为unix(f),可以使用windows版的notpad++编辑和转换。然后把这个脚本文件复制到unraid的appdata/matomo/文件夹。 当然,你也可以直接使用binhex-krusader这个docker工具直接在appdata/matomo/文件夹编辑并生成这个文件。然后把下面脚本命令输入到unraid User Script插件中新建的脚本任务
#!/bin/bash
docker exec --user 0 Matomo /var/www/html/download-ip2location-bin.sh
脚本任务后面添加自定义时间规则:15 8 1 * *,然后保存。之后就可以每月自动更新下载ip数据。