Docker-Compose 自部署 Umami 网站分析工具

1050 字
5 分钟
Docker-Compose 自部署 Umami 网站分析工具

说明: Umami 是一款简单易用、自托管的开源网站访问流量统计分析工具,类似 Google An­a­lyt­ics、Cloud­flare Web An­a­lyt­ics、CNZZ、51LA 等,但 Umami 不使用 Cookie,不跟踪用户,且所有收集的数据都会匿名化处理,符合 GDPR 政策,不会像 Google Analytics 一样被很多浏览器插件拦截,数据相对更加准确,分析的数据内容很丰富,基本的来源国家,来源域名,使用的浏览器、系统、设备,访问的网页这些都有,而且还支持多国语言。Umami 在速度和配置要求上有非常明显的优势,在积累大量数据后依旧能保持快速的响应。

umami
umami

通过 Docker Compose 自部署#

Umami 官方提供了 Docker 镜像,但同时需要搭配数据库使用,这样一来,还是使用 docker compose 部署方便一些,我个人也偏好使用 docker compose 部署,完整的部署过程如下:

检查环境#

你的服务器需要安装 Docker 和 Docker Compose。运行命令检查:

Terminal window
docker -v
docker-compose -v

这两条命令应返回 Docker 和 Docker Compose 版本号。如果没有,请先安装它们。

安装 Docker 与 Docker-Compose

Terminal window
# 安装 Docker
curl -sSL https://get.docker.com/ | sh
systemctl start docker
systemctl enable docker
# 安装 Docker Compose
curl -L https://github.com/docker/compose/releases/download/v2.9.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 赋予 docker-compose 执行权限
chmod +x /usr/local/bin/docker-compose

创建 YML 文件#

创建一个新目录并进入:

Terminal window
mkdir /opt/umami && cd /opt/umami

复制以下内容,创建 docker-compose.yml 文件:

services:
umami:
image: docker.umami.is/umami-software/umami:postgresql-latest
ports:
- "3000:3000"
environment:
DATABASE_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}
DATABASE_TYPE: postgresql
APP_SECRET: replace-this-with-a-random-secret-string
REDIS_URL: redis://:${REDIS_PASSWORD}@redis:6379
depends_on:
db:
condition: service_healthy
redis:
condition: service_started
restart: always
db:
image: postgres:12-alpine
environment:
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- umami-db-data:/var/lib/postgresql/data
restart: always
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
interval: 5s
timeout: 5s
retries: 5
redis:
image: redis:alpine
command: redis-server --requirepass ${REDIS_PASSWORD}
environment:
REDIS_PASSWORD: ${REDIS_PASSWORD}
volumes:
- umami-redis-data:/data
restart: always
watchtower:
image: containrrr/watchtower
container_name: watchtower
restart: always
environment:
- TZ=Asia/Shanghai
volumes:
- /var/run/docker.sock:/var/run/docker.sock
command: --cleanup --interval 1200
volumes:
umami-db-data:
umami-redis-data:

创建 .env 文件#

在 docker-compose.yml 的同级目录下创建 .env文件

# 数据库配置
POSTGRES_USER=umami
POSTGRES_PASSWORD=umamipassword
POSTGRES_DB=umami
# Redis 配置
REDIS_PASSWORD=YourStrongRedisPassword
# Umami 秘钥
APP_SECRET=replace-this-with-a-random-secret-string

⚠️ 注意事项:

  1. 编辑 .env文件中的 POSTGRES_USER(PG数据库用户名)、POSTGRES_PASSWORD(PG数据库密码)、POSTGRES_DB(PG数据库名)、REDIS_PASSWORD(REDIS 密码)这些变量,特别是密码建议设置高强度的密码。
  2. 随机密钥字符串替换为一个长随机字符串。你可以在终端运行 openssl rand -base64 32 来替换它。
  3. 若需要了解更多环境变量的配置细节,请自行查看—>官方文档 进行自定义配置。

启动服务#

在配置文件目录执行:

Terminal window
docker-compose up -d

等待拉取镜像并完成容器的启动。

登录并修改密码#

打开浏览器,访问 http://你的服务器IP:3000

使用初始账号登录:

  • 用户名:admin
  • 密码:umami

登录后,建议立即在后台修改这个默认密码。

更新容器#

# 更新并运行容器
docker-compose pull && docker-compose up -d
# 清理旧镜像/未被使用的镜像
docker image prune -a

Nginx 反向代理#

这里补充一下使用 Nginx 反代来绑定域名的简单示例:

server {
server_name umami.yourdomain.com;
location / {
proxy_pass http://localhost:3000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

获取跟踪代码#

若完成配置反向代理绑定域名,可以通过域名重新进入 Umami 后台管理页面,依次点击 Add website 输入你的 网站名称域名地址 ,将你的网站添加进去。

Save 保存后,列表里会出现你的网站,点击修改图标。

复制专属的跟踪统计代码。

将复制的代码粘贴到网站所有页面的 <head> 前(这是官方的建议),我个人建议放在</footer>之前。代码添加后,访问你的网站。几分钟内,你就能在Umami仪表板上看到访问数据。

至此,已经完成了基础的 Umami 网站统计服务的自部署。

站点跟踪配置#

Umami还支持对站点统计的一些细节做配置,如排除链接参数、避免页面哈希变化导致访问量统计失真、函数回调、以及数据标签(这个很不错,可以做简单的页面埋点区分)等功能。

这部分内容,大家可以参考 -> 跟踪器配置 --- Tracker configuration

微信公众号

搜一搜 IMMOEWAH

技术/人文/思辨/随笔

微信公众号

支持与分享

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

赞助
Docker-Compose 自部署 Umami 网站分析工具
https://blog.moewah.com/posts/4938/
作者
MoeWah
发布于
2021-09-18
许可协议
CC BY-NC-SA 4.0
相关文章 智能推荐
1
不是 VNC!Obsidian 网页版来了:Docker 自托管 Ignis 部署教程
私有化部署 Obsidian 没有官方网页版,Ignis 用兼容层让它在浏览器原生运行。本文用 Docker Compose 三分钟自托管 Ignis:Tailscale 内网访问、Caddy 公网部署、认证与 HTTPS、环境变量调优,数据全在自己手里。
2
Docker-Compose 自部署 MinIO S3 对象存储服务
私有化部署 如何用Docker Compose快速部署MinIO S3对象存储?本文详细拆解环境准备、配置文件编写及启动验证全流程,手把手指导你搭建私有化数据存储平台。支持Lobe-Chat、思源笔记等应用的S3兼容数据同步,确保高效安全的数据管理。
3
Docker-compose 自部署个人代码托管服务:Gitea 极简搭建指南
私有化部署 如何用Docker-compose快速搭建个人代码托管平台?本文详解Gitea的极简部署方案,解决私有化代码管理、避免GitHub依赖问题,提供从环境配置到服务启动的完整实战指南。
4
Docker-Compose自部署RSSHub,打造个人专属信息聚合系统
私有化部署 如何用Docker-Compose自建RSSHub服务?本文详细拆解从环境准备到配置优化的全流程,解决访问速度慢、内容质量差等问题,助你快速搭建属于自己的RSS信息流订阅系统,并提供从安装Docker到配置环境变量的完整指南,让你轻松掌握自建RSS信息流的方法。
5
Docker Volume 与 Bind Mount 怎么选?区别、性能对比、双向迁移实战
虚拟化与运维 Docker Volume 和 Bind Mount 有什么区别?性能差距大吗?一文讲透数据卷与绑定挂载的管理边界、适用场景与迁移便捷性,附双向转换完整命令:卷迁宿主机目录、目录转数据卷,全部实测可抄。数据库用卷、开发热重载用绑定挂载,自部署选型不再纠结。
随机文章 随机推荐

评论区

Profile Image of the Author

关于作者

MoeWah

我是 MoeWah,喵斯基部落的作者。一个折腾自托管、群晖 NAS、虚拟化运维与 SEO/GEO 实践的独立博主,10 年以上的企业站运维与SEO优化经验,文章来自真实部署与踩坑记录。为自己记录,为同路人分享。
专题
分类
站点统计
文章
205
分类
9
标签
449
总字数
413,918
运行时长
0
最后活动
0 天前

目录