自建网站访问数据统计工具: umami Docker 部署全指南

前言

如果你跟我一样,既想清楚知道自己的网站有多少人看、从哪来,又不想把用户数据拱手交给第三方,更受不了那些动辄弹出 “同意追踪” 的繁琐流程 —— 那 Umami 这工具,你大概率会喜欢。

它不搞花里胡哨,只把访问量、来源渠道、设备类型这些核心数据摆得明明白白,一个页面全看清。关键是能自己部署,数据握在手里,开源免费还不折腾。

如果你想直观感受它的界面,可以访问官方 Demo:Umami Demo,核心数据看板如下:

image-20251109172150130

实时流量监控更是精准到秒,能清晰看到当前访客的浏览行为:

image-20251109161657477

接下来,我们就用 Docker 快速部署一套属于自己的 Umami。

准备工作

在开始部署前,先确认你的服务器满足以下条件:

  • 已安装 Docker 和 Docker Compose(如果未安装,可参考文末的补充命令)
  • 有公网 IP(或本地服务器用于测试)
  • 开放目标端口(默认 3000,可自定义)

为了方便管理 Umami 的配置和数据,我们先创建一个独立的工作目录:

cd ~
mkdir -p ~/opt/umami
cd ~/opt/umami

如果需要通过服务器 IP 直接访问(非反向代理场景),需开放端口(以 3000 为例):

sudo ufw allow 3000/tcp comment 'umami' && sudo ufw reload

配置yml文件

Umami 需要依赖数据库存储数据(支持 PostgreSQL 或 MySQL,这里以 PostgreSQL 为例),我们用 docker-compose 统一管理应用和数据库容器。

~/opt/umami目录下,新建docker-compose.yml文件,将以下内容复制到文件中:

---
version: '3'
services:
  umami:
    # 使用Umami官方最新镜像
    image: ghcr.io/umami-software/umami:latest
    # 端口映射(左侧为服务器端口,右侧为容器内端口,可自定义左侧)
    ports:
      - "3000:3000"
    environment:
      # 数据库连接地址(格式:数据库类型://用户名:密码@数据库容器名:端口/数据库名)
      DATABASE_URL: postgresql://umami:umamipassword@db:5432/umami
      # 数据库类型(postgresql或mysql)
      DATABASE_TYPE: postgresql
      # 用于加密数据的随机字符串
      HASH_SALT: your-random-string-here-123456
    # 依赖数据库容器,确保数据库先启动
    depends_on:
      - db
    # 自动重启
    restart: always
    networks:
      - default 

  db:
    # PostgreSQL镜像(15版本稳定,alpine版本体积更小)
    image: ghcr.io/postgres:15-alpine
    environment:
      # 数据库名(建议保持默认)
      POSTGRES_DB: umami
      # 数据库用户名(建议保持默认)
      POSTGRES_USER: umami
      # 数据库密码(按需修改)
      POSTGRES_PASSWORD: umamipassword
    volumes:
      # 映射数据目录到本地(确保数据持久化,重启容器不丢失)
      - ./data:/var/lib/postgresql/data
    restart: always
    networks:
      - default

networks:
  default:
    # 自定义网络名称,避免与其他容器冲突
    name: umami

所有配置完成后,启动容器:

docker-compose up -d

启动成功后,可检查容器状态:

如果输出中appdb的状态都是Up,说明部署成功!

反向代理

直接通过IP:端口访问不够美观,且缺乏 HTTPS 安全层。我们可以用 Nginx(或 Caddy、Apache)做反向代理,绑定域名并配置 SSL。

步骤 1:解析域名

先在域名解析平台(如阿里云、Cloudflare)将域名(如umami.example.com)解析到服务器 IP。

步骤 2:Nginx 反向代理配置

在 Nginx 配置文件中添加以下内容。反代配置如下图所示:

server
{
    listen 80;
    listen 443 ssl http2;
    server_name umami.example.com;
    root /www/wwwroot/umami.example.com;
    if ($server_port !~ 443){
        rewrite ^(/.*)$ https://$host$1 permanent;
    }

    ####################
    # 其他配置
    ####################

    # 反代配置
    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 X-Forwarded-Proto $scheme;
    proxy_set_header REMOTE-HOST $remote_addr;
    add_header X-Cache $upstream_cache_status;
    # 缓存
    add_header Cache-Control no-cache;
    expires 12h;
  }
}

如果用宝塔面板,操作更简单:在 “网站” 中添加站点,绑定域名后,在 “反向代理” 中设置目标 URL 为http://127.0.0.1:3000即可:

image-20251109165236275

步骤 3:首次登录:初始化设置

访问你的域名(如https://umami.example.com),使用默认账号登录:

  • 用户名:admin
  • 密码:umami

重要! 登录后第一件事:修改默认密码!进入 “设置”→“个人资料”,更新密码为强密码,避免被他人登录。

image-20251109164821166

使用方法

步骤 1:添加被统计网站

进入后台,修改成简体中文后,添加一个网站:

image-20251109165849806

步骤 2:获取跟踪代码

添加网站后,点击网站右侧的 “编辑”→“跟踪代码”,复制生成的脚本:

<script defer src="http://umami.leiting2020.top/script.js" data-website-id="4c3c5b19-7a47-4dd6-ab0f-2542f91fa56a"></script>

image-20251109170124631

步骤 3:安装跟踪代码到网站

将跟踪代码添加到需要统计的网站中,具体位置因平台而异:

  • WordPress:在 “外观”→“主题文件编辑器”→“header.php”,粘贴到<head>标签内
  • Hexo:在主题的_config.yml中找到 “自定义脚本” 配置项进行配置即可
  • 静态 HTML:直接粘贴到<head>标签内

以 WordPress 为例,添加位置如下:

image-20251109171346232

对于本博客使用的Argon主题来说,在页头或者页尾脚本中,添加这一段跟踪代码即可, 添加后保存Argon设置即可生效。

image-20251109170842022

为什么放<head>里? 因为<head>是网页加载时优先解析的部分,能确保跟踪代码尽早执行,避免遗漏短时间访问(如用户刚打开页面就关闭)。

Umami 核心功能:能统计哪些数据?

部署完成后,等待 10-30 分钟(数据有延迟),就能在后台看到详细统计了,核心数据包括:

  • 访问概览:访问量( visitors )、浏览量( pageviews )、平均访问时长、跳出率
  • 实时数据:当前在线人数、正在浏览的页面、访客 IP(匿名化)、设备信息
  • 页面分析:各页面的访问次数、停留时间、入口 / 出口页面
  • 访客分析:设备类型(手机 / 电脑 / 平板)、操作系统、浏览器
  • 来源分析:访客从哪个网站 / 搜索引擎跳转而来(支持识别 Google、百度、必应等)
  • 地理位置:访客所在国家 / 地区(基于 IP,非精确定位)

image-20251109174745725

小结

Umami 作为一款轻量、隐私友好的自建统计工具,完美平衡了功能与简洁性。通过本文的 Docker 部署教程,你可以在 10 分钟内搭建一套属于自己的网站分析系统,摆脱对第三方工具的依赖。

参考

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇