Umami:自建网站统计,不依赖第三方脚本

admin 开源软件 2026-10-27 8 0

先说清定位差异:第三方统计擅长「跨站、多端、开箱即用」;自建方案擅长「数据自主、无第三方请求、可以随便改」。

一、部署

services:
  db:
    image: postgres:16-alpine
    restart: always
    environment:
      - POSTGRES_DB=umami
      - POSTGRES_USER=umami
      - POSTGRES_PASSWORD=改成强密码
    volumes: ["./pgdata:/var/lib/postgresql/data"]

  umami:
    image: ghcr.io/umami-software/umami:postgresql-latest
    restart: always
    depends_on: [db]
    ports: ["3000:3000"]
    environment:
      - DATABASE_URL=postgresql://umami:改成强密码@db:5432/umami
      - DATABASE_TYPE=postgresql
      - APP_SECRET=随便一串长随机字符

默认管理员账号在首次登录时修改,别用默认密码挂在公网上。

二、接入只有一行

<script async src="https://stats.你的域名/script.js"
        data-website-id="站点ID"></script>

放进页面的 <head> 或页脚即可。它默认不做跨站追踪、不写 Cookie、不采集个人身份信息,这也是它比第三方脚本轻的原因。

三、和日志统计的区别

日志统计前端埋点
能测所有请求,含爬虫真实浏览器会话
测不到停留时长、点击事件被广告拦截的访客
准确性不受拦截影响约少一到三成
部署解析日志,无需改页面嵌入脚本

两者是互补的:日志告诉你「服务器被访问了多少次」,埋点告诉你「人在页面上做了什么」。

四、最有用的三张报表

  1. 来源:哪些站点/搜索引擎真的带来访问,决定外链该往哪投;
  2. 页面排行:哪几篇内容撑起流量,决定同类选题该不该继续写;
  3. 设备与分辨率:判断移动端优化值不值得做。

「实时在线」这类指标看着热闹,实际决策价值很低——除非你在做活动或直播。

五、隐私与合规

它默认不写 Cookie、不采集个人身份信息,这让合规工作简单很多。但要注意:

  • 如果开了「事件追踪」记录点击,需要在隐私政策里说明;
  • IP 地址仍会进服务器日志(这是所有网站都有的),保留期限要写清楚;
  • 自建不等于匿名:你仍然可以关联到具体访客,所以内部要有使用规范。

六、被拦截了怎么办

浏览器插件和网络层面的拦截会让一部分访问统计不到。常见的三种缓解手段:

  • 把统计域名放在主域名下(子路径或子域),比独立域名更容易通过;
  • 服务端补充日志统计,两者对照能估算被拦截比例;
  • 接受误差:统计的目标是看趋势,不是精确到个位。

七、什么时候不用它

如果你的需求只是「每天有多少人访问」,站内已有的日志统计方案更省事——不用嵌脚本、不受拦截影响,还顺带能看爬虫。它适合的是「想分析用户行为、且要求数据自主」的场景。

日志统计的做法见 数据合规落地 与 Cookie 退场之后的统计。

相关阅读

评论

访问统计