Umami 是一款注重隐私的网站访客统计工具,对标 Google Analytics

简单写一下 Umami 大版本升级(v1 到 v2)的教程
Umami v2 有很多破坏性更改,自己更新的时候遇到了一些坑,所以自己整理一下升级教程

这不是官方教程,官方教程(英文)可以在这里找到


升级前请确认你正在运行最新版本的 v1(v1.4.0),否则升级时会报错

另外,强烈建议在升级之前备份数据库,如果数据库 dump 文件大于 50 MB,数据库更新可能需要几分钟才能完成

关闭旧版本

首先先把 Umami 旧版本关掉,如果你 Umami 是 systemd 自启,就用:

  • sh
1
systemctl stop umami

升级数据库

在更新程序版本前要升级数据库,在 umami 目录输入下面的命令即可:

  • sh
1
npx @umami/migrate-v1-v2@latest

如果你卡在了 reify:prisma: http fetch GET 200 这个步骤,并不用担心升级出现了问题,只是程序在下载文件而已

(中国大陆下载升级 prisma 大概会消耗半个多小时时间,也可能会更久, prisma 下载文件的地址是写死的,这意味着你改了 npm 注册表(镜像)也没有一点用,但是你可以设置一个 HTTPS_PROXY 变量来让他走代理)

升级好之后会问你要不要删除旧的数据表,输入 y 或者 n 就行

更新前准备

先检查一下自己的 Umami 配置文件(.env)有没有设置自定义 JS 名称(TRACKER_SCRIPT_NAME

更新 v2.2.0 之后,你需要在这个脚本名后加个 .js 才能正常跑,如果你原来是这样:

  • env
1
TRACKER_SCRIPT_NAME=delightful

那么就改成:

  • env
1
TRACKER_SCRIPT_NAME=delightful.js

更新 Umami

先 stash 掉目前的更改,然后更新 Git 存储库:

  • sh
1
2
git stash
git pull --rebase

Git 更新完成后,还要更新 node 软件包:

  • sh
1
yarn install

然后就是构建 Umami:

  • sh
1
yarn build

构建时候可能会在 Saved geo database 卡很久,也可能遇到下面的报错,大意是 GeoIP 数据库下载失败:

1
2
3
4
5
6
7
8
9
tracker/index.js → public/script.js...
created public/script.js in 572ms
$ node scripts/build-geo.js
node:events:491
throw er; // Unhandled 'error' event
^

Error: connect ETIMEDOUT 185.199.111.133:443
at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1278:16)

一般只有中国大陆会出现这个问题,解决的方法就是在另一台网络正常的机器下载 GeoIP 数据库(GeoLite2-City),文件大概有 70 MB,下载完成后上传到服务器 umami 安装目录下面的 geo/ 目录,重命名为 GeoLite2-City.mmdb

当然,配置代理也是 OK 的,但是 GeoIP 数据库下载时不看系统代理变量,只能自己想办法配置 iptables

如果你没直接报错退出,一直卡在 Saved geo database,其实也可以慢慢等,大概等个半小时也能下载完

Download GeoIP database

配置端口

如果需要修改运行端口,修改 package.json,在第 15 行 start 后面加上 -p 端口号

  • json
1
"start": "next start -p 53019",

运行

输入 yarn start 后,Umami 应该就可以正常启动了,如果发现无法正常统计,尝试清除一下网页缓存就可以

如果你 Umami 是 systemd 自启,就用下面的命令启动

  • sh
1
systemctl start umami