使用 Umami 自建 Web Analytics 平台
介绍
Umami 是一个简单的网站统计工具,可以代替 Google Analytics
使用nodejs编写,需要配合 MySQL 或 Postgresql
使用起来很简单,比起 Google Analytics 比较直观,对SPA单页应用也支持不错
考虑到 Google 的官方统计工具容易被广告插件屏蔽,所以今后还是选择了自己托管
/mikecao/umami
Umami is a simple, fast, website analytics alternative to Google Analytics.
已经搭好的实例站点
My Blog Report Atelier Report预览图
从源码安装
也可以直接使用docker
安装,这里先介绍下用nodejs
运行源码
安装nodejs
可以参考
https://github.com/nodesource/distributions/blob/master/README.md
CentOS 7
1 | yum install nodejs -y |
Debian / Ubuntu
1 | curl -fsSL https://deb.nodesource.com/setup_14.x | bash - |
从源码安装 Umami
下载源码并使用npm
安装依赖
1 | git clone https://github.com/mikecao/umami.git |
创建数据表
表结构在源码的sql
目录下,导入就行
如果mysql
导入的时候出现了这样的错误:
Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
是因为老版本mysql不能定义多个DEFAULT CURRENT_TIMESTAMP
,升级到5.6.5以上或者手动修改下吧
For MySQL:
1 | mysql -u username -p databasename < sql/schema.mysql.sql |
For Postgresql:
1 | psql -h hostname -U username -d databasename -f sql/schema.postgresql.sql |
配置 umami
根目录创建一个.env
文件,填写下面内容
HASH_SALT是随机字符串,DATABASE_URL是连接字符串
1 | DATABASE_URL=(connection url) |
connection url
的参考格式
1 | postgresql://username:mypassword@localhost:5432/mydb |
构建 umami
如果以后使用了git pull
更新了源码,需要再build
一次
1 | npm run build |
运行
1 | npm start |
会默认运行在http://localhost:3000
Docker 安装
可以参考 Github 的说明
https://umami.is/docs/install
To build the umami container
and start up a Postgres database
, run:
1 | docker-compose up |
Alternatively, to pull just the Umami Docker
image with PostgreSQL
support:
1 | docker pull ghcr.io/mikecao/umami:postgresql-latest |
Or with MySQL
support:
1 | docker pull ghcr.io/mikecao/umami:mysql-latest |
Nginx 反向代理
创建一个vhost
, location
使用 proxy_pass
即可
1 | location / { |
这边还是给个完整实例可参考
如果配了域名,记得DNS记录
也添加下
1 | server |
添加网站
上面都没问题的话,在浏览器中打开,就可以看到登录界面
默认的用户名是admin
,密码是umami
在Setting可以添加网站,添加好后,点Get tracking code
获得嵌入代码
放到网站的head
标签内就行了
设置里可以打开share URL
,任何人都可以看到这个报告
使用 Systemd 运行
创建/etc/systemd/system/umami.service
下面是个参考,需要使用的的话记得改下ExecStart
路径
1 | [Unit] |
编辑好后启动即可,无需干预可以在后台稳定运行了
1 | systemctl enable umami && systemctl start umami |