前言

Umami 是一款开源的、注重隐私的网站流量统计分析工具,可以方便直观的观察到网站数据,并且不像谷歌统计过多地收集用户的隐私信息,而自建服务可以避免 Adblock 插件屏蔽导致统计不准的问题。 仓库地址如下:umani 部署所用工具:

部署

Vercel

首先 Fork Umami 的仓库,然后在 Supabase 新建一个项目,记住数据库密码,待项目新建完毕后,进入项目,依次点击 Project Settings-Database,在 Connecting string 复制 URLSupabase 接下来在 Vercel 新建一个项目,导入 Github Fork 的仓库,添加下面的环境变量:

NAMEVALUE
DATABASE_URL复制的 URL
TRACKER_SCRIPT_NAME自定义脚本名称,如 myscript
COLLECT_API_ENDPOINT自定义 endpoint 路径,如 /api/mycol
HASH_SALT随机字符串

将复制的 url[YOUR-PASSWORD] 换位数据库的密码,并在 url 最后添加 ?pgbouncer=true,最终链接如下形式: postgres://postgres.xxxxxxxxxxxx:[YOUR-PASSWORD]@aws-0-us-east-1.pooler.supabase.com:5432/postgres?pgbouncer=true

待部署完成后须添加自定义域名,否则 Vercel 域名被墙,会无法正常使用,打开部署的网站后,默认用户名为 admin,默认密码为 umami。 添加网站后在设置-网站-跟踪代码 处复制统计代码,添加到自己网站 </body>前即可。 Supabase

Docker

docker-compose 文件如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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
    healthcheck:
      test: ["CMD-SHELL", "curl http://localhost:3000/api/heartbeat"]
      interval: 5s
      timeout: 5s
      retries: 5
  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:

参考