惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
The Exploit Database - CXSecurity.com
J
Java Code Geeks
H
Help Net Security
B
Blog RSS Feed
G
Google Developers Blog
博客园 - 司徒正美
MongoDB | Blog
MongoDB | Blog
量子位
博客园 - 三生石上(FineUI控件)
The Cloudflare Blog
P
Proofpoint News Feed
小众软件
小众软件
人人都是产品经理
人人都是产品经理
云风的 BLOG
云风的 BLOG
V
V2EX
月光博客
月光博客
C
Check Point Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
A
Arctic Wolf
Help Net Security
Help Net Security
Schneier on Security
Schneier on Security
D
DataBreaches.Net
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园_首页
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Palo Alto Networks Blog
T
Tenable Blog
L
LangChain Blog
Attack and Defense Labs
Attack and Defense Labs
Google DeepMind News
Google DeepMind News
N
News and Events Feed by Topic
Forbes - Security
Forbes - Security
F
Fortinet All Blogs
Recent Announcements
Recent Announcements
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
大猫的无限游戏
大猫的无限游戏
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Y
Y Combinator Blog
WordPress大学
WordPress大学
Stack Overflow Blog
Stack Overflow Blog
V
Visual Studio Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Engineering at Meta
Engineering at Meta
NISL@THU
NISL@THU
GbyAI
GbyAI
博客园 - Franky
S
Secure Thoughts
有赞技术团队
有赞技术团队
PCI Perspectives
PCI Perspectives
U
Unit 42

atpX

自建 S3 兼容对象存储服务 Garage 听风的歌 偶尔是深夜就好了 新玩具 AirPods Pro 3 公交车上的时间 从 WHOIS 到 RDAP 通过 WireGuard 访问 NFS 共享文件 自建音乐串流服务探索 我停止了探索 Fediverse 互联网背景噪音 我的数字生活降级 小城与确定性的墙 一只特立独行的猪 Fediverse 与社交 承认的勇气 mediaX - 轻量书影音记录管理工具 我的博客写作流程 网站新增 Misc 页面 擅长对线的鲍勃 在 Chroot 环境下使用 Rsync 同步 再见 JavaScript 当我玩博客时我在玩什么 为什么我的博客没有友链页面 小熊猫与大熊猫 (HDR 照片测试) 是时候为网站开启 HTTP/3 支持了吗 使用 AdGuard Home 搭建自用 DoH 服务 谈谈读书与消遣 2023 年终总结 西安两日游 从 AirPods「升级」到 EarPods Docker 搭建去中心化的微博客平台 Mastodon 聊聊 iPhone 15 Pro 使用感受 能否将 TOTP 二次验证存放在密码管理器里 认识史蒂夫·乔布斯 与“锤哥”克里斯·海姆斯沃斯一起养生 逃离爆炸的信息 你想活出怎样的人生 重温《龙珠》动画 为什么关闭评论 从域名注册商到 DNS 服务,找到自己的组合 如何提高用户网页阅读体验 从 Typecho 迁移到 Hugo 个人博客的最终归宿是静态网站吗 我选择了放弃 jQuery 关于我的小破站折腾速度优化这件事 记一次家庭网络折腾 贴一些 SmokePing 记录 我的域名邮箱选择 不存在的语录 Typecho 评论验证插件 CaptchaPlus 谈谈写字这件事 新的网站 Logo 探索 曲线解决 Typecho 图片占位抖动问题 自建 vaultwarden / bitwarden_rs 密码管理器 使用 Plausible 自建网站流量统计分析工具 如何优雅地徒手剥开火腿肠 简单的集中隔离生活记录 新玩具 M2 MacBook Air 使用 acme.sh 申请 Google 公共证书 Docker 搭建去中心化的微博客平台 Misskey 搭建 Lsky Pro 兰空图床 折腾树莓派系统的一天 我的吉卜力之旅 使用 Uptime Kuma 自建服务器/网站在线率监控 Spartan Host Review - Best Hosting & Service Support Debian 下 Nginx 配合 Fail2Ban 减少恶意扫描和攻击 升级 Typecho 到最新开发版本 v1.2.0 Linux rm 命令详解 Debian 系统安装 Docker 教程 BandwagonHost - Reliable Blog and Business VPS Hosting 使用 Isso 为 Hugo/Hexo 等静态网站添加评论功能 推荐 5 款免费开源的网站流量分析统计工具 搭建 Shynet 网站流量统计分析工具 聊聊 DDoS 攻击那些事 Hugo 使用 Fancybox 实现图片灯箱/放大功能 从 Debian 10 升级到 Debian 11 教程 Linux 一次执行多个命令的 3 种方式 Typecho 修改永久链接后旧链接 301 跳转到新链接 从不同需求推荐几家稳定可靠的 VPS 服务商 Build EchoIP service with Docker 浅谈一下这些年折腾过的 VPS 单线复用解决一根网线同时 IPTV 和宽带问题 不完全吃灰的树莓派 开发一个自己的 Telegram Bot 使用 Nginx 实现 TCP 四层反向代理 画画真难 我读村上春树 使用 acme.sh 自动签发和更新证书 卡拉马佐夫式悲剧 安装 File Browser 轻量网盘工具 新玩具树莓派到手 Linux 定时自动备份数据到 OneDrive/Google Drive 记一次服务器崩溃 使用 rsync 同步文件 短信的消失 幻灭的艺术家 新玩具戴尔 S2721DGF 开箱 蝴蝶 用 Docker 整合 SeafilePro 搭建私人云盘 搭建自己的 kms 服务器
使用 Umami 自建网站流量统计分析工具
ATP · 2021-08-12 · via atpX

虽然我的小破站每天只有 1 IP,但还是想用访问统计工具分析一下,之前一直在用 Google Analytics 和 Cloudflare Web Analytics,虽然功能强大,但国内加载还是有点慢,很影响访客的体验。最重要的是现在很多人都在用广告屏蔽插件或者 DNS,这两个工具都会被 block 而无法加载,导致统计的数据比实际少很多(万一我有 2 IP 呢😑)。

一直都想找一款自建的统计工具替代掉,之前考虑过用 Matomo,但是看大家反馈说资源占用很大,而且很多功能都用不到,对于个人小站来说没有必要,最近终于发现了 Umami 这款工具,完全符合我的需求。

umami-登录

Umami 是一个简单易用、自托管的开源网站访问流量统计分析工具。Umami 不使用 Cookie,不跟踪用户,且所有收集的数据都会匿名化处理,符合 GDPR 政策,资源占用很低,虽然功能简单,但分析的数据内容很丰富,基本的来源国家,来源域名,使用的浏览器、系统、设备,访问的网页这些都有。还支持多国语言,完全可以用来替代 Google Analytics、Cloudflare Web Analytics、CNZZ、51LA 等统计工具,而且自己搭建也可以避免被 block 掉从而使统计数据更精确(后来发现也会被部分去广告插件拦截…)。

查看在线演示

Umami 这个词语其实源于 “Umai”,在日语里是“美味、鲜味”的意思,从使用体验来看确实 umami,于是在这里分享一下搭建与使用的教程。

搭建过程

这里以 Debian 系统为例,使用源文件编译安装,Docker 安装的方式可以参考官方文档

环境准备

环境要求

  • Node.js 12 或更高版本
  • 数据库 (MySQL 或者 Postgresql)

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

安装 Umami

从 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 直接访问,这里补充一下使用 Ng­inx 反代:

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;
  }
}

更新 Umami

首先停止运行:

pm2 stop umami

拉取最新文件:

git pull

重新安装并构建:

npm install
npm run build

重新启动:

pm2 restart umami

简单使用

Umami 安装好后,默认用户名为 admin,默认密码为 umami,但是我输入后一直无法登录,提示 Internal Server Error

umami-登录

网上也没有相关信息,排查半天,使用 npm run dev 后发现提示:

The table `account` does not exist in the current database.

数据库缺少用户表,才想起我前面是手动创建的数据库,忘记建表了…而且还有一个问题是数据库密码中最好不要包含特殊字符,我原来的密码是用脚本生成的,带有一个 ‘@’ 符号,也导致了错误,建表之后换了个正常的密码,修改好 .env 重新 build 之后终于能登录了。

登录之后的第一件事是修改密码,选择 Setting -> Profile,然后设置你的密码。

umami-修改密码

添加网站

然后在上面的 Websites 中添加你的第一个网站:

umami-添加网站

勾选 Enable share URL 会为你的网站分析数据生成一个分享链接。

设置代码

之后点击图中的 Get tracking code 按钮,会弹出一段代码,复制到你网站中的 <head> 标签里就行了。

umami-生成跟踪代码

更多详细的使用方式,例如点击跟踪、多用户、环境变量以及 API 操作,可以查看官网文档