lisa主机lisa主机

使用Docker自建一个简洁美观的网站统计(分析)Umami

发布于:2022-05-16 Docker 9条评论

2022年5月10日U-Web(CNZZ(友盟))对所有未付费账号关闭服务,参考:《关于友盟+ U-Web 统计分析产品功能调整的公告》。其实可替代的产品挺多的,比如国内的百度统计、51la,国外的Google Analytics。如果你都不爽,还可以自建网站统计,比如umami、Plausible、matomo,今天来聊一聊自建方案之一的umami。

关于Umami

官网是这样介绍的:

Umami 是一个简单、易于使用、自托管的网络分析解决方案。目标是为您提供一个更友好、注重隐私的 Google Analytics 替代方案,以及一个免费、开源的付费解决方案替代方案。Umami 只收集您关心的指标,所有内容都放在一个页面上。

使用Docker搭建Umami

前提条件:

我的场景:

因为每个人的环境可能不一样,所以这篇文章不一定适合所有人,但是可以用于参考。xiaoz已经在服务器本机安装了MySQL数据库,所以我在使用Docker部署的时候没有在额外安装MySQL服务,而是直接利用现有的MySQL

导入数据库:

  1. 您需要自行创建一个MySQL数据库用来给Umami使用
  2. 然后下载官方的初始数据导入到数据库中,这是初始SQL语句下载地址:https://raw.githubusercontent.com/mikecao/umami/master/sql/schema.mysql.sql

我这里已经创建好了一个名为umami的数据库,并导入了初始数据schema.mysql.sql

docker-compose部署Umami

如果您还没有安装docker-compose,请先参考官方文档安装:https://docs.docker.com/compose/install/

使用docker-compose部署的目的是方便后续维护和管理,您需要新建一个docker-compose.yaml的文件,里面的内容如下:

---
version: '3'
services:
  umami:
    image: ghcr.io/mikecao/umami:mysql-latest
    ports:
      - "3000:3000"
    environment:
      DATABASE_URL: mysql://username:password@127.0.0.1:3306/umami
      DATABASE_TYPE: mysql
      HASH_SALT: replace-me-with-a-random-string
    restart: always
    network_mode: "host"

参数含义如下,请根据自己的情况修改:

  • username:MySQL用户名
  • password:MySQL密码
  • 127.0.0.1:3306:MySQL连接地址和端口
  • umami:MySQL数据库名称

这里我使用了HOST网络,network_mode: "host",原因是我MySQL在宿主机上搭建的,如果不指定为HOST网络无法和Docker通信。

接着使用命令docker-compose up -d启动即可。

访问Umami

搭建完毕后,Umami默认使用3000端口,输入http://IP:3000就可以访问了,默认用户名:admin,密码为umami

默认为英文界面,登录后点右上角的“地球”图标,可以修改为中文。

Nginx反向代理

通过IP + 端口的访问方式只适合临时测试,显然不太适合用于生产,我们可以通过Nginx反向代理实现域名访问。

以下是nginx反向代理配置,仅做参考,请根据实际情况修改:

server
{
    listen 80;
    listen 443 ssl http2;
    server_name domain.com;
    index index.php index.html index.htm default.php default.htm default.html;

    #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
    #error_page 404/404.html;
    #HTTP_TO_HTTPS_START
    if ($server_port !~ 443){
        rewrite ^(/.*)$ https://$host$1 permanent;
    }
    #HTTP_TO_HTTPS_END
    ssl_certificate    /www/server/panel/vhost/cert/domain.com/fullchain.pem;
    ssl_certificate_key    /www/server/panel/vhost/cert/domain.com/privkey.pem;
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    add_header Strict-Transport-Security "max-age=31536000";
    error_page 497  https://$host$request_uri;

    #SSL-END

    #ERROR-PAGE-START  错误页配置,可以注释、删除或修改
    #error_page 404 /404.html;
    #error_page 502 /502.html;
    #ERROR-PAGE-END

    #PHP-INFO-START  PHP引用配置,可以注释或修改
    #清理缓存规则

    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 REMOTE-HOST $remote_addr;

        add_header X-Cache $upstream_cache_status;

        #Set Nginx Cache

        set $static_fileceZTfEud 0;
        if ( $uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$" )
        {
            set $static_fileceZTfEud 1;
            expires 12h;
            }
        if ( $static_fileceZTfEud = 0 )
        {
        add_header Cache-Control no-cache;
        }
    }

    access_log  /www/wwwlogs/domain.com.log;
    error_log  /www/wwwlogs/domain.com.error.log;
}

如果是宝塔用户的话也可以直接使用宝塔提供的反向代理功能,按照截图设置即可。

Umami使用体验

Umami的功能比较简单,总共选项也不多,上手没有难度。功能上来说只能说够用,比较适合个人或者小公司使用。

总结

  1. Umami的安装依赖MySQL或Postgresql数据库
  2. 安装前需要先导入初始数据
  3. 默认用户名为admin,密码为umami
  4. Umami界面简洁美观,支持多种语言
  5. Umami功能比较简单,但数据不够丰富,功能上比起百度统计、Google Analytics还差很远,想要替代这些商业统计还有很长的路要走

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注


已有 9 条评论

  1. Magiz

    Umami 这套自建方案我犹豫了很久要不要切,你这篇 Docker 部署步骤写得挺清晰,跟着走应该能一次过。UI 简洁也是我放弃 Matomo 选择 Umami 的主要原因,多谢整理踩坑笔记。

  2. Collaigo

    学习一下,留个脚印,日后会用到。

  3. Temp Mail

    我的临时邮箱就用的umami做的统计分析,很直观,比谷歌统计好很多

    1. xiaoz Temp Mail

      功能应该没有Google分析强大,但是比较简单易用。

      1. Temp Mail xiaoz

        是的,我本来打算订阅Umami cloud,但是转眼一想Umami cloud要20美元一个月,2个月就可以买一台轻量云了。奈何囊中羞涩,所以使用docker独立部署了Umami🤣🤣🤣

  4. ATzzz

    还是用matomo好点,虽然配置麻烦点,不过也可以docker-compose 部署,

    1. xiaoz ATzzz

      matomo数据确实更加丰富,但是看到好几个反馈说数据大了之后很卡。

  5. 天天忽悠

    不错不错,去我的收藏夹吃灰吧~