
























虽然我的小破站每天只有 1 IP,但还是想用访问统计工具分析一下,之前一直在用 Google Analytics 和 Cloudflare Web Analytics,虽然功能强大,但国内加载还是有点慢,很影响访客的体验。最重要的是现在很多人都在用广告屏蔽插件或者 DNS,这两个工具都会被 block 而无法加载,导致统计的数据比实际少很多(万一我有 2 IP 呢😑)。
一直都想找一款自建的统计工具替代掉,之前考虑过用 Matomo,但是看大家反馈说资源占用很大,而且很多功能都用不到,对于个人小站来说没有必要,最近终于发现了 Umami 这款工具,完全符合我的需求。
Umami 是一个简单易用、自托管的开源网站访问流量统计分析工具。Umami 不使用 Cookie,不跟踪用户,且所有收集的数据都会匿名化处理,符合 GDPR 政策,资源占用很低,虽然功能简单,但分析的数据内容很丰富,基本的来源国家,来源域名,使用的浏览器、系统、设备,访问的网页这些都有。还支持多国语言,完全可以用来替代 Google Analytics、Cloudflare Web Analytics、CNZZ、51LA 等统计工具,而且自己搭建也可以避免被 block 掉从而使统计数据更精确(后来发现也会被部分去广告插件拦截…)。
查看在线演示
Umami 这个词语其实源于 “Umai”,在日语里是“美味、鲜味”的意思,从使用体验来看确实 umami,于是在这里分享一下搭建与使用的教程。
这里以 Debian 系统为例,使用源文件编译安装,Docker 安装的方式可以参考官方文档。
环境要求
MySQL 的安装可以参考我之前的文章 安装并配置 LNMP 的记录。
这里简单的说一下 Node.js 的安装,由于 Debian 10 官方库的版本为 v10.24.0,不满足要求,所以需要添加由 NodeSource 维护的 PPA 来安装更新版本的 Node.js:
使用最新版本
截至目前 (2021-08-11),Node.js 的最新版本为 v16.6.1
curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
使用 LTS 版本(推荐)
我这里安装的是 LTS(长期支持)版本
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
安装 Node.js
sudo apt install nodejs
检查 Node.js 和 NPM 版本:
nodejs -v
npm -v
Update(2021-10-13):
如果你已经更新到了 Debian 11 系统(Debian 10 升级 11 教程),官方软件源 node.js 为 v12.22.5 版本,npm 为 7.5.2 版本,可以直接使用下面的命令安装:
apt install -y nodejs npm
从 GayHub 获取源代码:
git clone https://github.com/mikecao/umami.git
cd umami
npm install
创建一个 .env 文件,并添加下面的内容:
DATABASE_URL=mysql://username:password@localhost:3306/database
HASH_SALT=[任意随机字符串]
例如:
DATABASE_URL=mysql://root:123456789@localhost:3306/umami
HASH_SALT=your-long-radom-string
为 umami 导入预设好的数据表:
mysql -u username -p databasename < sql/schema.mysql.sql
最后构建并启动程序:
npm run build
npm start
但是这个命令退出以后就会自动停止,所以我们需要 PM2 工具来守护进程,PM2 能守护的东西很多,例如:Node.js、Python、PHP、Ruby、perl,还有消息队列程序、Shell脚本等等。
安装 PM2:
npm install pm2 -g
在 Umami 目录下运行:
pm2 start npm --name umami -- start
设置重启服务器后自启动:
pm2 startup
pm2 save
补充一些 PM2 的常用命令:
pm2 list # 查看所有运行中的应用
pm2 stop 0 # 停止 id 为 0 的应用
pm2 restart # 重启
pm2 delete 0 # 删除 id 为 0 的应用
pm2 monit # 显示每个应用程序的CPU和内存占用情况
pm2 show [name] # 显示应用程序的所有信息
pm2 save # 保存当前应用列表
pm2 startup # 创建开机自启动命令
默认会运行在 http://localhost:3000 可以通过 IP 直接访问,这里补充一下使用 Nginx 反代:
server {
server_name umami.yourdomain.com;
location / {
proxy_pass http://localhost:3000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
首先停止运行:
pm2 stop umami
拉取最新文件:
git pull
重新安装并构建:
npm install
npm run build
重新启动:
pm2 restart umami
Umami 安装好后,默认用户名为 admin,默认密码为 umami,但是我输入后一直无法登录,提示 Internal Server Error
网上也没有相关信息,排查半天,使用 npm run dev 后发现提示:
The table `account` does not exist in the current database.
数据库缺少用户表,才想起我前面是手动创建的数据库,忘记建表了…而且还有一个问题是数据库密码中最好不要包含特殊字符,我原来的密码是用脚本生成的,带有一个 ‘@’ 符号,也导致了错误,建表之后换了个正常的密码,修改好 .env 重新 build 之后终于能登录了。
登录之后的第一件事是修改密码,选择 Setting -> Profile,然后设置你的密码。
然后在上面的 Websites 中添加你的第一个网站:
勾选 Enable share URL 会为你的网站分析数据生成一个分享链接。
之后点击图中的 Get tracking code 按钮,会弹出一段代码,复制到你网站中的 <head> 标签里就行了。
更多详细的使用方式,例如点击跟踪、多用户、环境变量以及 API 操作,可以查看官网文档。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。