自建网站统计 — Umami

在数据隐私日益受到重视的今天,越来越多的网站运营者开始放弃 Google Analytics 等第三方统计服务,转而选择自建、轻量、开源的替代方案。Umami 正是其中的佼佼者。它界面简洁、资源占用低、功能实用,且完全尊重用户隐私——不使用 Cookie,不追踪用户行为细节,仅记录必要的访问数据。本文将介绍 Umami 的核心功能、详细部署步骤(含 Docker Compose 配置),并展示其实际效果。


一、Umami 是什么?

Umami 是一个开源的网站分析工具,由 @mikecao 开发,采用 MIT 许可证发布。其设计理念是“简单、快速、隐私优先”,适用于个人博客、企业官网、小型项目等场景。

主要功能包括:

  • 实时访问统计:展示当前在线人数、页面浏览量(PV)、独立访客数(UV)。
  • 多站点支持:一个 Umami 实例可管理多个网站,通过不同跟踪 ID 区分。
  • 设备与浏览器分析:自动识别访问者的设备类型(桌面/移动)、操作系统、浏览器。
  • 来源与地域分析:统计流量来源(直接访问、搜索引擎、外部链接)及访客国家/地区。
  • 页面路径与入口/出口页:了解用户最常访问的页面及跳出情况。
  • 自定义事件追踪:通过 JavaScript API 手动上报自定义行为(如按钮点击)。
  • 无 Cookie 设计:默认不使用 Cookie,符合 GDPR 等隐私法规要求。
  • 响应式界面:支持 PC 与移动端访问后台。

与 Matomo 等重型方案相比,Umami 更轻量(前端仅 ~5KB JS 文件),部署简单,资源消耗极低,非常适合自建。


二、使用 Docker Compose 部署 Umami

Umami 官方提供了完善的 Docker 镜像,推荐使用 Docker Compose 方式一键部署。以下是详细步骤。

前提条件

  • 一台运行 Linux 的服务器(如 Ubuntu 20.04+)
  • 已安装 Docker 和 Docker Compose
  • 域名(可选,用于 HTTPS 访问)

1. 创建项目目录

mkdir umami && cd umami

2. 编写 docker-compose.yml 文件

创建 docker-compose.yml,内容如下:

version: '3.8'

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
      HASH_SALT: your_strong_salt_here  # 建议替换为强随机字符串
    depends_on:
      - db
    restart: always

  db:
    image: postgres:16-alpine
    environment:
      POSTGRES_DB: umami
      POSTGRES_USER: umami
      POSTGRES_PASSWORD: umami
    volumes:
      - umami-db-data:/var/lib/postgresql/data
    restart: always

volumes:
  umami-db-data:

说明

  • 使用 PostgreSQL 作为数据库(官方推荐,性能优于 SQLite)。
  • HASH_SALT 用于加密用户密码,请务必修改为一个高强度随机字符串(如 openssl rand -hex 32 生成)。
  • 服务默认监听 3000 端口,可通过 Nginx 反向代理绑定域名并启用 HTTPS。

3. 启动服务

umami 目录下执行:

docker-compose up -d

首次启动会自动初始化数据库和管理员账户,过程约需 1–2 分钟。

4. 访问管理后台

浏览器访问 http://你的服务器IP:3000,默认管理员账号为:

  • 用户名admin
  • 密码umami

⚠️ 首次登录后请立即在 Settings → Account 中修改密码!


三、接入网站并查看统计效果

1. 添加网站

登录后台后,点击 Websites → Add website,填写网站名称和域名(如 example.com),系统会生成一个唯一的 Tracking ID(格式如 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)。

2. 嵌入统计代码

将以下代码添加到你网站的 <head> 标签中(替换 YOUR_TRACKING_IDYOUR_UMAMI_URL):

<script async src="http://your-umami-domain.com/umami.js" data-website-id="YOUR_TRACKING_ID"></script>

若通过 HTTPS 访问 Umami,则使用 https://...

提示:为提升加载速度,可将 umami.js 缓存或使用 CDN。

3. 查看统计效果

部署完成后,访问你的网站,稍等几秒即可在 Umami 后台看到实时数据。典型界面包括:

  • 概览面板:显示今日 PV/UV、在线人数、热门页面。
  • 流量来源:区分直接访问、搜索引擎(如 Google、Bing)、社交平台等。
  • 设备分布:桌面 vs 移动端占比,主流浏览器类型。
  • 地理分布:基于 IP 的国家/地区热力图(需数据库支持,Umami 默认集成轻量 GeoIP)。

界面清爽直观,无广告、无干扰,真正聚焦核心数据。

image-nqarhvwg.png


四、进阶建议

  • 配置 HTTPS:使用 Nginx + Let's Encrypt 为 Umami 启用 HTTPS,保障数据传输安全。
  • 备份数据库:定期备份 umami-db-data 卷,防止数据丢失。
  • 限制访问:可通过 Nginx 添加 Basic Auth 或 IP 白名单,保护管理后台。
  • 性能优化:对于高流量站点,可调整 PostgreSQL 配置或使用独立数据库实例。

结语

Umami 以极简的设计、强大的隐私保护和零成本的自建能力,成为替代商业统计工具的理想选择。借助 Docker Compose,部署过程只需几分钟,后续维护成本极低。对于注重数据主权与用户体验的开发者和站长而言,Umami 不仅是一个工具,更是一种对“干净网络”的实践。

官方网站:https://umami.is
GitHub 仓库:https://github.com/umami-software/umami