【Docker项目】基于Umami搭建自己的网站流量统计工具
1.前言
因为搭建博客网站,在弄SEO的过程中发现需要对网站流量进行监控和管理,找到了一款简单但功能强大、开源和隐私友好的网站流量监控工具-----Umami。看来官网的简介果断弄来自己博客站上试试。
2.Umami介绍
Umami是一个自托管的网络分析解决方案。简单来说就是站点流量统计工具,个人也是第一次接触,参考了官网和他人的搭建教程,总结了如下一些特点:
简单分析: 只衡量您关心的重要指标,所有内容都显示在一个易于浏览的页面上。
访客洞察: 获取有关访问者的详细细分,包括他们使用的浏览器、操作系统和设备。
自定义事件: 跟踪的不仅仅是网页浏览量。捕获您网站上的任何事件,例如按钮点击和表单条目。
强大的过滤器: 使用易于应用的筛选器更深入地了解数据。按浏览器、操作系统和国家/地区等任何指标对用户进行细分。
实时数据: 实时查看您当前的网站流量。查看访问者登陆的确切页面。
多语言: 已被非常活跃的开源社区翻译成许多不同的语言。
无限的站点: 能够从单个安装中跟踪无限数量的网站。您甚至可以跟踪子域和单个URL。
多个帐户: 可用于为朋友或客户托管数据。只需创建一个单独的帐户,他们就可以开始在自己的仪表板上跟踪自己的网站。
适合移动设备: 界面已针对移动设备进行了优化,因此您可以从任何地方查看统计信息。
绕过广告拦截器: 托管在自己的域下,因此可以可靠地避免广告拦截器。
重量轻: 跟踪脚本很小(只有 2KB),加载速度快如闪电。它永远不会减慢您的网站速度。
共享数据: 如果您想公开分享统计信息,可以使用生成的网址来实现。
官网地址:https://umami.is/
Github 地址:https://github.com/umami-software/umami
3.搭建前的环境准备
服务器:可以是购买的VPS也可以是家里自己的电脑,自己电脑需要有公网IP,没有公网的话要做内网穿透,这个后面有机会专门写一篇文章讲讲如何内网穿透以及当前主流的工具和方案。我这里是用的甲骨文云的服务器,arm架构4核24g内存。
系统:Ubuntu或者Debian,我用的是Ubuntu22.04 arm64
软件:Docker,Docker-compose,Nginx(我用的Nginx Proxy Manager配置方便一点)
其他:最好还要有一枚域名
4.开始搭建
先进入自己的服务器,将必要的软件安装好
4.1 Docker安装
#使用官方安装脚本
wget -qO- get.docker.com | bash
#上面命令安装完成后查看 docker 版本确认安装成功
docker -v
# 设置docker开机自动启动
systemctl enable docker
4.2 Docker-compose安装
可以去github上下载对应架构的release版本,我是arm v8架构下载的是docker-compose-linux-aarch64,这里根据自己服务器架构选择。
Docker-compose下载地址:https://github.com/docker/compose/releases
我是arm64架构下按如下命令下载文件重命名为docker-compose放在 /usr/local/bin/目录下,这里根据自己服务器架构选择对应版本。
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-linux-aarch64" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose #更改文件权限
docker-compose --version #查看 docker-compose 版本
4.3 Nginx Proxy Manager安装
创建Nginx Proxy Manager安装目录:
sudo -i
mkdir -p /root/data/docker_data/npm
cd /root/data/docker_data/npm
编写docker-compose.yml
vim docker-compose.yml
输入如下内容:
version: '3'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80' # 冒号左边可以改成自己服务器未被占用的端口
- '81:81' # 冒号左边可以改成自己服务器未被占用的端口
- '443:443' # 冒号左边可以改成自己服务器未被占用的端口
volumes:
- ./data:/data # 冒号左边可以改路径,现在是表示把数据存放在在当前文件夹下的 data 文件夹中
- ./letsencrypt:/etc/letsencrypt # 冒号左边可以改路径,现在是表示把数据存放在在当前文件夹下的 letsencrypt 文件夹中
docker-compse下载镜像并运行容器
docker-compose up -d
浏览器输入http://ip地址:81 就可以访问npm面板了,这里的端口号就是上面yml文件中对应映射的端口号这里是81端口。
默认账号密码如下
Email: admin@example.com
Password: changeme
4.4 Umami安装
拉取官方git库,创建Umami的安装目录:
sudo -i
cd /root/data/docker_data/umami
git clone https://github.com/umami-software/umami.git
cd ./umami
vim docker-compose.yml
yml文件可选择修改如下内容:
---
version: '3'
services:
umami:
image: ghcr.io/umami-software/umami:postgresql-latest
ports:
- "3000:3000"
environment:
DATABASE_URL: postgresql://umami:umami@db:5432/umami
DATABASE_TYPE: postgresql
APP_SECRET: replace-me-with-a-random-string
depends_on:
db:
condition: service_healthy
restart: always
db:
image: postgres:15-alpine
environment:
POSTGRES_DB: umami
POSTGRES_USER: umami
POSTGRES_PASSWORD: umami
volumes:
- ./umami-db-data:/var/lib/postgresql/data
restart: always
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
interval: 5s
timeout: 5s
retries: 5
yml文件保存好下载镜像运行容器
docker-compose up -d
容器运行后,访问 http://服务器ip地址:3000 就可以进入界面了
默认用户名:admin
默认密码:umami
登入后记得及时更改账户密码。
4.5 给Umami配置反向代理
配置域名指向服务器地址,我的域名DNS是在cloudflare中设置的如下:
登入服务器Nginx proxy manager面板中设置域名反向代理,因为是docker安装可以直接填写本地docker路由地址,配置如下:
开启SSL证书,我这里是用的泛域名通配符的证书。
4.6 Umami添加站点
登入Umami面板后,点击去设置,然后点击添加网站,填写需要监控网站的域名。
刚刚保存的网站点击编辑。
选择跟踪代码,复制代码内容。
将刚刚复制的跟踪代码粘贴到需要监控站点的head标签中。
总结
类似的统计服务还有百度统计、谷歌统计、Matoma 等等。