Umami 网站统计工具完整安装部署指南
前言
Umami 是一个开源、简单快速、注重用户隐私的网站统计工具,相比 Google Analytics 更加轻量化,且完全符合 GDPR 隐私规范。它支持 MySQL(最小版本 8.0)、MariaDB 和 PostgreSQL 等数据库。本教程将详细介绍如何在 Linux 服务器上使用 Docker 和 MySQL 8.0 部署 Umami。
为什么选择 Umami?
- 完全开源:代码透明,可自主控制
- 隐私友好:无需 Cookie,符合 GDPR 规范
- 轻量快速:资源占用小,响应速度快
- 自托管:数据完全掌控在自己手中
- 界面简洁:清晰直观的数据展示
一、环境准备
服务器配置建议
- CPU:2 核心或以上
- 内存:4 GB 或以上
- 存储:20 GB 可用空间
- 系统:Linux(Ubuntu/CentOS/Debian 等)
Docker 镜像加速配置(推荐)
为了提高 Docker 镜像拉取速度,建议配置国内镜像源:
# 编辑 Docker 配置文件
sudo vim /etc/docker/daemon.json
添加以下内容:
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"https://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.ccs.tencentyun.com",
"https://docker.nju.edu.cn",
"https://docker.m.daocloud.io"
]
}
重启 Docker 服务:
sudo systemctl daemon-reload
sudo systemctl restart docker
二、方式一:Docker 手动部署
步骤 1:创建 Docker 网络
docker network create my_mysql_network
步骤 2:部署 MySQL 8.0
拉取 MySQL 镜像:
docker pull mysql:8.0
创建数据持久化目录并启动容器:
# 创建数据目录
mkdir -p /home/apps/docker/mysql_8.0_data
# 启动 MySQL 容器
docker run -d \
--name mysql8 \
--network my_mysql_network \
-p 3306:3306 \
-v /home/apps/docker/mysql_8.0_data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=你的密码 \
mysql:8.0
步骤 3:创建 Umami 数据库
# 进入 MySQL 容器
docker exec -it mysql8 mysql -uroot -p你的密码
# 创建数据库
CREATE DATABASE dogstar_umami_db;
EXIT;
步骤 4:部署 Umami
拉取 Umami MySQL 版本镜像:
docker pull docker.umami.is/umami-software/umami:mysql-latest
启动 Umami 容器:
docker run -d \
--name umami \
--network my_mysql_network \
-e DATABASE_URL=mysql://root:你的密码@mysql8:3306/dogstar_umami_db \
-e HASH_SALT=任意复杂字符串 \
-p 3000:3000 \
docker.umami.is/umami-software/umami:mysql-latest
步骤 5:验证部署
查看 Umami 启动日志:
docker logs -f umami
看到类似 Database connection successful
和 Ready in ...
表示启动成功。
验证数据库表创建:
docker exec -it mysql8 mysql -uroot -p你的密码 -D dogstar_umami_db
SHOW TABLES;
正常情况下会看到 _prisma_migrations
、session
、website
等表。
三、方式二:Docker Compose 部署(推荐)
创建 docker-compose.yml
version: '3.8'
services:
umami:
image: docker.umami.is/umami-software/umami:mysql-latest
ports:
- "3000:3000"
environment:
DATABASE_URL: mysql://umami:umami_password@umami-db:3306/umami
DATABASE_TYPE: mysql
HASH_SALT: 你的随机字符串
depends_on:
umami-db:
condition: service_healthy
restart: unless-stopped
networks:
- umami
umami-db:
image: mysql:8.0
environment:
MYSQL_DATABASE: umami
MYSQL_USER: umami
MYSQL_PASSWORD: umami_password
MYSQL_ROOT_PASSWORD: root_password
volumes:
- ./umami-db-data:/var/lib/mysql
restart: unless-stopped
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
timeout: 5s
retries: 5
networks:
- umami
networks:
umami:
driver: bridge
启动服务
# 启动所有服务
docker compose up -d
# 查看服务状态
docker compose ps
# 查看日志
docker compose logs -f umami
四、Nginx 反向代理配置
基础 HTTP 配置
server {
listen 80;
server_name umami.yourdomain.com;
location / {
proxy_pass http://127.0.0.1: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;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
HTTPS 配置(推荐)
server {
listen 80;
server_name umami.yourdomain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name umami.yourdomain.com;
ssl_certificate /path/to/your/cert.pem;
ssl_certificate_key /path/to/your/key.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
location / {
proxy_pass http://127.0.0.1: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;
proxy_set_header X-Forwarded-Proto https;
}
}
重载 Nginx 配置:
sudo nginx -t
sudo systemctl reload nginx
五、初始配置与使用
首次登录
添加网站
- 点击 Settings → Websites
- 点击 Add website 按钮
- 填写网站信息:
- Name:网站名称
- Domain:网站域名
- Enable share URL:是否启用分享链接
获取追踪代码
添加网站后,点击 View 按钮,在页面中找到追踪代码:
<script defer src="https://umami.yourdomain.com/script.js" data-website-id="your-website-id"></script>
<head>
标签中。
最终结果:

将此代码添加到网站的 六、系统维护与优化
数据备份
定期备份 MySQL 数据:
# 使用 Docker Compose
docker compose exec umami-db mysqldump -u root -p umami > umami_backup_$(date +%Y%m%d).sql
# 手动部署方式
docker exec mysql8 mysqldump -u root -p dogstar_umami_db > umami_backup_$(date +%Y%m%d).sql
日志管理
# 查看容器日志
docker logs umami
# 清理日志(谨慎操作)
echo "" > $(docker inspect --format='{{.LogPath}}' umami)
更新 Umami
# Docker Compose 方式
docker compose pull
docker compose up -d
# 手动方式
docker pull docker.umami.is/umami-software/umami:mysql-latest
docker stop umami
docker rm umami
# 重新运行启动命令
七、故障排除
常见问题
问题1:数据库连接失败
# 检查 MySQL 容器状态
docker ps | grep mysql
# 检查网络连接
docker network ls
docker network inspect my_mysql_network
问题2:Umami 无法启动
# 查看详细错误日志
docker logs umami --tail 50
# 检查环境变量
docker inspect umami | grep -A 10 "Env"
问题3:访问超时
# 检查端口占用
netstat -tlnp | grep 3000
# 检查防火墙设置
sudo ufw status
性能监控
# 监控容器资源使用
docker stats umami mysql8
# 检查数据库性能
docker exec -it mysql8 mysql -uroot -p -e "SHOW PROCESSLIST;"
八、技术规格总览
项目 | 要求 |
---|---|
MySQL 版本 | ≥ 8.0 |
MariaDB 版本 | ≥ 10.5 |
PostgreSQL 版本 | ≥ 12.14 |
Node.js 版本 | ≥ 18.17.0 |
内存要求 | ≥ 4GB |
存储要求 | ≥ 20GB |
快速部署命令总结
# 1. 创建网络
docker network create my_mysql_network
# 2. 启动 MySQL
docker run -d --name mysql8 --network my_mysql_network \
-p 3306:3306 -v $(pwd)/mysql_data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=yourpassword mysql:8.0
# 3. 创建数据库
docker exec -it mysql8 mysql -uroot -pyourpassword \
-e "CREATE DATABASE umami_db;"
# 4. 启动 Umami
docker run -d --name umami --network my_mysql_network \
-e DATABASE_URL=mysql://root:yourpassword@mysql8:3306/umami_db \
-e HASH_SALT=your-random-salt -p 3000:3000 \
docker.umami.is/umami-software/umami:mysql-latest
结语
Umami 作为一个轻量级的网站统计工具,在保护用户隐私的同时提供了详尽的数据分析功能。如果你在部署过程中遇到问题,建议:
- 仔细检查 Docker 容器日志
- 确认网络连接和端口配置
- 验证数据库连接字符串格式
- 参考 Umami 官方文档 获取最新信息
本文最后更新时间:2025年9月
Comments | NOTHING