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

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

前言#

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

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

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

image-20251109172150130

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

image-20251109161657477

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

准备工作#

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

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

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

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

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

Terminal window
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

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

Terminal window
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 分钟内搭建一套属于自己的网站分析系统,摆脱对第三方工具的依赖。

参考#

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
自建网站访问数据统计工具: umami Docker 部署全指南
https://blog.leihub.cn/archives/951/
作者
阿雷
发布于
2025-11-09
许可协议
CC BY-NC-SA 4.0
相关文章智能推荐
1
群晖照片异地备份到 Unraid + Immich 相册搭建详细教程:rsync 同步与踩坑全记录
NAS & 云服务搭建我家里同时有白群晖和 unRAID 两台 NAS ,准备把群晖里攒了几年的照片进行异地备份,单盘 NAS 一旦坏了,照片可就全没了。 我自己折腾了两天,踩了一堆坑,终于跑通了一套「unRAID 定时拉取群晖 + Immich 相册」的方案。
2
西上东下:梵净山雾中徒步记
城市短途漫游朋友嚷嚷了一年的梵净山,最近终于找到了爬山窗口,做足了攻略的我们,直接选择来一波特种兵爬梵净山。 一、周五晚上10点,株洲站出发 我们几个都是从株洲出发的,火车是晚上的卧铺车,10 点出发,第二天凌晨 5:40 到铜仁。一张硬卧 138 块
3
NotionNext 个人博客搭建教程:腾讯云 EdgeOne 部署
博客搭建 & 运维前言 目前主流的博客搭建方案可大致分为两类,且各有局限:一类是以 WordPress 为代表的动态博客系统,依赖独立服务器运行,运维与硬件成本较高;另一类是以 Hexo 为代表的静态博客框架,采用本地 Markdown 编写,无实时预览能力
4
Uptime Kuma 2025最新Docker部署教程,轻量高效监控网站连通性
Docker 容器折腾一、前言 作为一名业余时间维护个人网站博主,有时候遇到网站宕机几小时才发现,访客流失不说,搜索引擎收录还可能受影响。之前试过Uptime Robot、Pingdom等工具,最终被开源免费、功能全、颜值高的Uptime Kuma圈粉。今天就把
5
Docker 部署 Chevereto 个人图床,搭配 EdgeOne 实现免费公网访问
Docker 容器折腾前言 之前一直用腾讯云 COS 存博客图片,之前也写过一篇博文来介绍typora+picgo+cos+cdn搭建个人写作环境 - 阿雷的小窝,每月虽然花不了多少钱,但总觉得被厂商绑着,而且流量多了之后费用也不少。之前也试过 Lsky这些图床
随机文章随机推荐

评论区

Profile Image of the Author
阿雷
一个小趴菜
公告
本站已从 WordPress 迁移到 Astro,访问更快、更清爽。文章链接保持原样(/archives/文章ID/),评论数据正在陆续恢复中。
分类
标签
最新动态
站点统计
文章
76
分类
15
标签
99
总字数
318,421
运行时长
0
最后活动
0 天前
站点信息
构建平台
EdgeOne Pages
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0
文章目录