Skip to content

Umami统计 原创

简介

GitHub Release

Umami 是一款开源的、注重隐私的网络分析工具,可作为 Google Analytics 的替代方案。它提供对网站流量、用户行为和性能的重要洞察,同时优先考虑数据隐私。

与许多传统分析平台不同,Umami 不会收集或存储个人数据,从而避免了使用 cookie 的需求,并且符合 GDPR 和 PECR 标准。

Umami 设计轻巧且易于设置,可以自托管,让用户完全控制自己的数据。

安装

有几种不同的方法可以安装 Umami。

  • 从源代码安装:从 GitHub 获取代码并自行构建应用程序。
  • 使用 Docker compose:使用构建您自己的 Docker 容器 docker compose
  • 使用 Docker 镜像:下载预先构建的 Docker 镜像

源代码安装

要求

  • 具有 Node.js 版本 18.18 或更新版本的服务器。
  • 数据库:Umami 支持 MySQL(最低版本 v8.0)和 PostgreSQL(最低版本 v12.14)数据库。
bash
npm install -g yarn
bash
git clone https://github.com/Umami-software/Umami.git
cd Umami
yarn install

配置 Umami

  • 在 Umami 项目的根目录下创建一个名为 .env 的文件
md
.
│ ├──src
├── .env # 配置文件
├── package.json
├── README.md
├── yarn.lock

连接 url 格式如下:

提示

username mypassword mydb 替换成实际的数据库用户名密码数据库名

bash
DATABASE_URL=postgresql://username:mypassword@localhost:5432/mydb

DATABASE_URL=mysql://username:mypassword@localhost:3306/mydb

我的配置如下:

bash
DATABASE_URL=mysql://root:root@localhost:3306/umami

初始化数据库

  • 新建 MySQL 链接

1745664894830.png

  • 双击umami打开链接右键新建数据库

    • 数据库名称:输入 umami
    • 字符集:建议选择 utf8mb4(支持 Unicode 字符)
    • 排序规则:选择 utf8mb4_general_ci
    • 点击 “确定”,此时左侧列表中会出现 umami 数据库。

1745665295709.png

构建

提示

首次运行构建时,它将在数据库中创建所有必需的数据库表。它还将创建一个用户名为 admin、密码为 umami 的登录帐户。

bash
yarn build

启动

提示

默认情况下,这将在 上启动应用程序 http://localhost:3000。您需要 代理来自 Web 服务器的请求,或更改端口以直接为应用程序提供服务。

bash
yarn start

1745665814726.png

重启

您可以直接运行 yarn start 来启动 Umami,但强烈建议您使用像 PM2 这样的进程管理器来为您处理重启。

要使用 PM2 运行:

bash
yarn global add pm2
cd umami
pm2 start yarn --name umami -- start
pm2 startup
pm2 save

配置

  • 点击上面菜单的设置,添加网站,输入网站名称和网址保存

1745665990188.png

  • 添加完成后,点击编辑-跟踪代码获取页面埋点链接 1745666088808.png

    1745666124826.png

  • 将该链接添加到你网站的页面头部或者底部即可

ts
[
    "script",
    {
      src: "http://localhost:3000/script.js",
      "data-website-id": "7a2817d2-xxxx-xxxx-xxxx-8401f59642f1",
      defer: "defer",
    },
  ],

效果

1745665712851.png

docker-compos 安装

提示

前提,你得先安装 docker-compose 。docker-compose 安装方式参考了 网站统计工具 Umami 的傻瓜安装指南~

bash
sudo apt install docker-compose

拉取镜像

接着安装完成后进行下面操作

bash
# 进入服务器目录 /root/下
cd /root

# 新建umami文件夹,并进入umami文件夹
mkdir umami
cd umami

# 拉取 PostgreSQL 支持的 Umami Docker 映像
docker pull ghcr.io/umami-software/umami:postgresql-latest

# 新建doker-compose.yaml文件并进行编辑
vi docker-compose.yaml

配置文件

复制粘贴以下内容,完成后按下 ESC 键,然后输入:wq 保存

提示

里面 ports 是后面进行反向代理的端口,可以自行设置

yaml
---
version: "3"
services:
  umami:
    image: ghcr.io/umami-software/umami:postgresql-latest
    ports:
      - "3300: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
volumes:
  umami-db-data:

启动容器

bash
docker-compose up -d

验证

bash
docker-compose ps -a

# 看到下面输出表示成功
[root@VM-4-16-centos umami]# docker-compose ps -a
    Name                   Command                  State                        Ports
--------------------------------------------------------------------------------------------------------
umami_db_1      docker-entrypoint.sh postgres    Up (healthy)   5432/tcp
umami_umami_1   docker-entrypoint.sh yarn  ...   Up             0.0.0.0:3300->3000/tcp,:::3300->3000/tcp
  • 访问 Umami

打开浏览器,访问 http://localhost:3300。 (这里用自己云服务器 ip 访问: http://云服务器公网 ip:3300) 默认管理员账号和密码: 用户名:admin 密码:umami

反向代理

注意

我的反向代理使用的是 Nginx,如果你使用的是其他的反向代理,请自行修改。路径在:/etc/nginx/conf.d/umami.conf,以你为准

bash
# umami.seasir.top 域名的 HTTP -> HTTPS 重定向
server {
    listen 80;
    listen [::]:80;
    server_name umami.seasir.top;

    # 配置 HTTP 到 HTTPS 的重定向
    return 301 http://$host$request_uri;
}

# umami.seasir.top 域名的 HTTPS 反向代理
server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name umami.seasir.top;

    location / {
        proxy_pass http://你的云服务器ip:3300/;  # 反向代理到实际 umami 服务
        include /etc/nginx/common_configs/common_proxy_params.conf;  # 引入反向代理公用参数
    }
}
  • 配置后重启 nginx
bash
nginx -s reload

选项

排除我自己的访问。您想访问自己的网站,但又不想让访问记录出现在您的统计数据中。为此,您需要在浏览器中添加一项设置。

在浏览器中打开开发者控制台:Settings -> More tools -> Developer tools

在控制台中,输入以下代码并点击 Enter:

bash
localStorage.setItem('umami.disabled', 1);

此设置适用于每个网站,因此您需要对要排除的每个网站执行此操作。

要删除设置,请输入以下代码并点击 Enter:

bash
localStorage.removeItem('umami.disabled');

拓展

  • 停止 Umami 容器
bash
cd umami
docker-compose down
  • 重启容器
bash
cd umami
docker-compose up -d
  • 删除 Umami 及其数据
bash
cd umami
docker-compose down -v
  • 拉取最新镜像
bash
cd umami
docker-compose pull

常见问题

  • 为啥没有数据?

检查一下是否添加到网站,并且是否有页面埋点链接添加。可以通过 f12 搜索 umami 查看是否添加成功。如有有添加成功需要设置下反向代理

4e574e97bc39eac7c865a22d57c2125.png

最近更新