Umami 统计
Umami 统计

目录
[[toc]]
[toc]
简介
Umami 是一款开源的、注重隐私的网络分析工具,可作为 Google Analytics 的替代方案。它提供对网站流量、用户行为和性能的重要洞察,同时优先考虑数据隐私。
与许多传统分析平台不同,Umami 不会收集或存储个人数据,从而避免了使用 cookie 的需求,并且符合 GDPR 和 PECR 标准。
Umami 设计轻巧且易于设置,可以自托管,让用户完全控制自己的数据。
官网:Umami
来给自己的Teek博客增加一个
Umami 统计功能。😊
版权
警告
本着开源共享、共同学习的精神:
本文是在 《[Hyde Blog](https://teek.seasir.top/)》博主的《[Umami统计](https://teek.seasir.top/pages/84d648)》文章 基础上增加了一些自己的实际操作记录和修改,内容依旧属于原作者所有(感谢原作者分享的手把手文档💖💖💖)。转载无需和我联系,但请注明文章来源。如果侵权之处,请联系博主进行删除,谢谢。
环境
2025.4.27(已解决)
警告
次配置适用于`Teek@1.0.2-2025.4.10`版本(其它版本可自行测试)。
提示
自己开源的 《[vitepress-theme-teek-one-public](https://gitee.com/onlyonexl/vitepress-theme-teek-one-public)》网站模板。
此模板是在《[Young Kbt blog](https://vp.teek.top/)》大佬开源项目《[vitepress-theme-teek ](https://github.com/Kele-Bingtang/vitepress-theme-teek)》基础上修改为自己的风格而成,感谢大佬开发得主题,大佬威武。❤️❤️
源码:
docker镜像:
1docker save ghcr.io/umami-software/umami:postgresql-latest |gzip > umami-postgresql.tar.gz
2docker save postgres:13-alpine |gzip > postgres-13-alpine.tar.gz
3
4
5[root@wiki umami]# ll -ht
6total 256M
7-rw-r--r-- 1 root root 99M Apr 27 21:53 postgres-13-alpine.tar.gz
8-rw-r--r-- 1 root root 157M Apr 27 21:52 umami-postgresql.tar.gz

前提
- 云服务器已安装好docker,docker-compose
- 有自己域名、自己云服务器
- 具有Teek博客
🍊docker-compos 安装
安装 方式
有几种不同的方法可以安装 Umami。
- 从源代码安装:从 GitHub 获取代码并自行构建应用程序。
- 使用 Docker compose:使用构建您自己的 Docker 容器 docker compose。
- 使用 Docker 镜像:下载预先构建的
Docker 镜像。
1、启动容器
(1)下载镜像
1cd /root
2mkdir umami
3cd umami
4docker pull ghcr.io/umami-software/umami:postgresql-latest
5docker pull postgres:13-alpine
(2)配置文件
新建doker-compose.yaml文件并进行编辑
vim docker-compose.yaml
1version: '3.8'
2
3services:
4 db:
5 image: postgres:13-alpine
6 container_name: umami_db
7 environment:
8 POSTGRES_DB: umami
9 POSTGRES_USER: umami
10 POSTGRES_PASSWORD: umami
11 volumes:
12 - umami_db_data:/var/lib/postgresql/data
13 restart: unless-stopped
14
15 app:
16 image: ghcr.io/umami-software/umami:postgresql-latest
17 container_name: umami_app
18 environment:
19 DATABASE_URL: postgresql://umami:umami@db:5432/umami
20 DATABASE_TYPE: postgresql
21 HASH_SALT: replace-me-with-a-random-string
22 ports:
23 - "3000:3000"
24 depends_on:
25 - db
26 restart: unless-stopped
27
28volumes:
29 umami_db_data:

注意:
修改配置文件
- **`DATABASE_URL`**:确保与 `db` 服务的配置一致。(**这里你只需要修改成你自己的数据库密码就行**)
- **`HASH_SALT`**:替换为一个随机字符串,用于加密用户密码。可以使用以下命令生成:
(3)启动容器
1docker-compose up -d
(4)验证
1docker-compose ps -a
2
3# 看到下面输出表示成功
4[root@wiki umami]# docker ps
5CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
65645c2198127 ghcr.io/umami-software/umami:postgresql-latest "docker-entrypoint.s…" 13 hours ago Up 13 hours 0.0.0.0:3000->3000/tcp umami_app
74ae95ec49f4c postgres:13-alpine "docker-entrypoint.s…" 13 hours ago Up 13 hours 5432/tcp umami_db
(5)访问 Umami
- 打开浏览器,访问
http://localhost:3000。 (这里用自己云服务器ip访问:http://云服务器公网ip:3000) - 默认管理员账号和密码:
- 用户名:
admin - 密码:
umami
- 用户名:

2、配置反向代理
如果需要通过域名访问 Umami,可以使用 Nginx 或 Traefik 配置反向代理。以下是我的Nginx 配置示例:
- 配置nginx反向代理
vim /etc/nginx/conf.d/umami.onedayxyy.cn.conf
1server {
2 listen 80;
3 server_name umami.onedayxyy.cn;
4 #配置https重定向
5 return 301 https://$host$request_uri;
6}
7
8server {
9 listen 443 ssl;
10 server_name umami.onedayxyy.cn;
11
12 location / {
13 proxy_pass http://106.75.214.199:3000/;
14 client_max_body_size 100M;
15 proxy_set_header Host $host;
16 proxy_set_header X-Real-IP $remote_addr;
17 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
18 proxy_set_header X-Forwarded-Proto $scheme;
19 }
20
21 ssl_certificate /etc/letsencrypt/live/onedayxyy.cn/fullchain.pem;
22 ssl_certificate_key /etc/letsencrypt/live/onedayxyy.cn/privkey.pem;
23
24 ssl_session_timeout 5m;
25 ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
26 ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
27 ssl_prefer_server_ciphers on;
28 add_header Strict-Transport-Security "max-age=31536000";
29
30 access_log /var/log/nginx/umami.onedayxyy.cn.https.log;
31}
- 配置后重启nginx
nginx -s reload
警告
自己umami域名也需要配置下对应解析的哦,具体如何配置,这里不再做过多解释🤣。
3、配置项目
- 点击上面菜单的设置,添加网站,输入网站名称和网址保存

添加完成后,点击编辑 - 跟踪代码获取页面埋点链接


将该链接添加到你网站的页面头部或者底部即可
1[
2 "script",
3 {
4 src: "http://localhost:3000/script.js",
5 "data-website-id": "7a2817d2-xxxx-xxxx-xxxx-8401f59642f1",
6 defer: "defer",
7 },
8 ],
自己的配置:
1[
2 "script",
3 {
4 src: "https://umami.onedayxyy.cn/script.js",
5 "data-website-id": "c1f1daec-868c-4b7a-963b-93d99a0a959b",
6 defer: "defer",
7 },
8],
- 启用共享数据

将复制好的代码写到docs\.vitepress\config.mts里的script部分。

- 推送teek项目
1gg2 #根据自己方式将teek项目推送。
注意:
这里记得修改下自己admin密码:

4、验证
- 推送后,访问自己网站,观察效果


结束。
总结
通过 docker-compose 部署 Umami 非常简单,只需以下步骤:
创建
docker-compose.yml文件。修改配置文件(如
HASH_SALT)。启动容器:
1docker-compose up -d访问
http://localhost:3000并使用默认账号登录。
如果需要进一步配置(如反向代理或 HTTPS),可以参考相关文档。如果有其他问题,请随时提问!
扩展
停止和删除 Umami
停止 Umami:
1docker-compose down删除 Umami 及其数据:
1docker-compose down -v
更新 Umami
如果 Umami 发布了新版本,可以通过以下步骤更新:
拉取最新镜像:
1docker-compose pull重启容器:
1docker-compose up -d
选项
排除我自己的访问。您想访问自己的网站,但又不想让访问记录出现在您的统计数据中。为此,您需要在浏览器中添加一项设置。
在浏览器中打开开发者控制台:Settings -> More tools -> Developer tools
在控制台中,输入以下代码并点击 Enter:
1localStorage.setItem('umami.disabled', 1);
此设置适用于每个网站,因此您需要对要排除的每个网站执行此操作。
要删除设置,请输入以下代码并点击 Enter:
1localStorage.removeItem('umami.disabled');
源代码安装
提示
这里为hyde的文档,仅做记录。
1git clone https://github.com/Umami-software/Umami.git
2cd Umami
3yarn install
🍊配置 Umami
- 在 Umami 项目的根目录下创建一个名为
.env的文件
1.
2│ ├──src
3├── .env # 配置文件
4├── package.json
5├── README.md
6├── yarn.lock
连接 url 格式如下:
提示
`username` `mypassword` 和 `mydb` 替换成实际的`数据库用户名`、`密码`和`数据库名`
我的配置如下:
1DATABASE_URL=mysql://root:root@localhost:3306/umami
🍊初始化数据库
- 新建 MySQL 链接

双击
umami打开链接右键新建数据库- 数据库名称:输入 umami
- 字符集:建议选择 utf8mb4(支持 Unicode 字符)
- 排序规则:选择 utf8mb4_general_ci
- 点击 “确定”,此时左侧列表中会出现 umami 数据库。

🍊构建
提示
首次运行构建时,它将在数据库中创建所有必需的数据库表。它还将创建一个用户名为 `admin`、密码为 `umami` 的登录帐户。
🍊启动

🍊重启
您可以直接运行 yarn start 来启动 Umami,但强烈建议您使用像 PM2 这样的进程管理器来为您处理重启。
要使用 PM2 运行:
1yarn global add pm2
2cd umami
3pm2 start yarn --name umami -- start
4pm2 startup
5pm2 save
🍊配置
- 点击上面菜单的设置,添加网站,输入网站名称和网址保存

添加完成后,点击编辑 - 跟踪代码获取页面埋点链接


将该链接添加到你网站的页面头部或者底部即可
1[
2 "script",
3 {
4 src: "http://localhost:3000/script.js",
5 "data-website-id": "7a2817d2-xxxx-xxxx-xxxx-8401f59642f1",
6 defer: "defer",
7 },
8 ],
自己配置:
1[
2 "script",
3 {
4 src: "http://服务器ip:3000/script.js",
5 "data-website-id": "c1xxxxxb",
6 defer: "defer",
7 },
8],
🍊效果

关于我
我的博客主旨:
- 排版美观,语言精炼;
- 文档即手册,步骤明细,拒绝埋坑,提供源码;
- 本人实战文档都是亲测成功的,各位小伙伴在实际操作过程中如有什么疑问,可随时联系本人帮您解决问题,让我们一起进步!
🍀 个人网站

🍀 微信二维码
x2675263825 (舍得), qq:2675263825。

🍀 微信公众号
《云原生架构师实战》

🍀 csdn
https://blog.csdn.net/weixin_39246554?spm=1010.2135.3001.5421

🍀 知乎
https://www.zhihu.com/people/foryouone

最后
如果你还有疑惑,可以去我的网站查看更多内容或者联系我帮忙查看。
如果你有更好的方式,评论区留言告诉我。谢谢!
好了,本次就到这里了,感谢大家阅读,最后祝大家生活快乐,每天都过的有意义哦,我们下期见!



- 01snowshot 2025-12-26
- 02博客和文档是否需要拆分开 2025-12-26
- 03我的博客首页截图记录 2025-12-26