如何在 Oracle Cloud 上安装 Umami ?
Umami 是一个简单易用、自托管的开源网站访问流量统计分析工具。Umami 不使用 Cookie,不跟踪用户,且所有收集的数据都会匿名化处理,符合 GDPR 政策,资源占用很低,虽然功能简单,但分析的数据內容很丰富,基本的来源国家,来源域名,使用的瀏览器、系统、设备,访问的网页这些都有。
它还支持多国语言,完全可以用来替代 Google Analytics、Cloudflare Web Analytics、CNZZ、51LA 等统计工具,而且自己搭建也可以避免被 block 掉从而使统计数据更精確(后来发现也会被部分去广告外掛拦截…)。查看在线演示
Umami 这个词语其实源於 “Umai”,在日语里是「美味、鲜味」的意思,从使用体验来看確实 umami,於是在这里分享一下搭建与使用的教学。
如果你拥有一个 Oracle Cloud 账户,它可以启用两个免费的基础实例(1h1g配置),很適合部署 Umami 这个流量统计分析工具。(同理,本文的教程同样适用于 AWS,Google Cloud 以及其他VPS)
而在本文中,我们將使用Debian系统进行演示。
Debian 的安装与升级
Oracle cloud 的后臺並没有直接提供 Debian 映像,我们將先安装 Ubuntu 18,再安装 Debian。
在免费额度內,新建一个实例(选择安装Ubuntu 18)。
將私钥转换成.ppk,通过 SSH 登录你的伺服器。註意:Oracle Ubuntu 映像的默认用户名为ubuntu
第一行命令:下载脚本
wget https://moeclub.org/attachment/LinuxShell/InstallNET.sh
执行脚本安装Debian 9系统
bash InstallNET.sh -d 9 -v 64 -a -firmware
安装实际很快,但是客户端会自动掉线,等待10分钟左右(不要后臺重启伺服器),差不多时间尝试重新SSH链接(这时是不需要ppk祕钥的)。
默认用户名:root
默认密码:MoeClub.org(自行修改root密码)
但是Debian 9相对旧了一点(脚本其实可以直接安装更新的版本),我实际操作后续代码,也提示脚本不支持该版本。
更新Debian系统
apt-get update && apt-get upgrade
备份(可选)
cp /etc/apt/sources.list /etc/apt/sources.list.orig
替换字段
sed -i 's/stretch/buster/g' /etc/apt/sources.list
更新组件与升级程序
sapt-get update && apt-get upgrade
执行升级命令
apt-get dist-upgrade
完成后会显示版本號。
完成后重启
reboot
通过 Docker 部署应用
Umami对於硬件要求比较小,512M记忆体的机器也可以跑起来。
安装docker、curl、git、nginx等必备组件
apt -y update
安装Nginx
apt -y install curl git nginx python-certbot-nginx
安装Docker
curl -sSL https://get.docker.com/ | sh
然后,
systemctl enable docker nginx
接著,
curl -L https://github.com/docker/compose/releases/download/1.27.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
不要忘了添加权限,
chmod +x /usr/local/bin/docker-compose
完成后,到github上接取项目,
git clone https://github.com/mikecao/umami.git
跟著进入目录,
cd umami/
编辑配置文件,
nano docker-compose.yml
参考以下代码进行修改,
version: '3'
services:
umami:
image: ghcr.io/mikecao/umami:postgresql-latest
ports:
- "3000:3000" #仅监听在本地
environment:
DATABASE_URL: postgresql://username:password@db-umami:5432/umami #这里的数据库和用户名密码要和下方你修改的相同
DATABASE_TYPE: postgresql
HASH_SALT: replace-me-with-a-random-string
depends_on:
- db-umami
db-umami:
image: postgres:12-alpine
environment:
POSTGRES_DB: umami
POSTGRES_USER: username #数据库用户
POSTGRES_PASSWORD: password #数据库密码
volumes:
- ./sql/schema.postgresql.sql:/docker-entrypoint-initdb.d/schema.postgresql.sql:ro
- umami-db-data:/var/lib/postgresql/data
volumes:
umami-db-data:
nano命令的操作方法,方向键移动光標,在需要输入的地方键入內容,最后Ctrl+O保存(按Y確认保存),按Ctrl+X退出nano糢式。
註意username,password以及db-umami这几个字段要上下对应。
然后我们就可以启动docker了,
docker-compose up -d
但还没结束,需要编辑一下反代配置,
nano /etc/nginx/conf.d/umami.conf
另外你需要到你的域名供应商那配置一下你的域名指向(可以是二级域名),记得把你的域名解析到这个VPS的IP上。
umami.conf 这个新建文件为空,直接复製黏贴以下內容进去,保存后退出。
server {
listen 80;
server_name 域名; #换成你的域名
client_max_body_size 0;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
添加HTTPS(可选)
想用HTTPS可以自动签发一个证书,使用以下命令,过程中需要输入信箱和Y进行確认。
certbot --nginx
检查nginx配置
nginx -t
没问题的话可以访问你的域名了,打开的是英文界面,用户名为admin,密码为umami
但是我首次使用碰到了 Internal Server Error 错误提示。
如何解决Umami Internal Server Error 错误?
一般多是跟数据库相关的错误配置。
我重新仔细检查了 docker-compose.yml 和 umami.conf 两个文件,对比网上搜寻的资料,用 nano 命令修改了一些错误。
建议大家仔细核对以上两个配置文件。
最后,关键是,
docker-compose up
就是说,如果你修正了一些配置文件错误,要再次启动一次docker,
当时等待启动完成后,重新整理下页面我就进去 Umami 了。
更多详细的使用方式,例如点击跟踪、多用户、环境变量以及 API 操作,可以查看官网文档。