Umami部署文档


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 successfulReady in ... 表示启动成功。

验证数据库表创建:

docker exec -it mysql8 mysql -uroot -p你的密码 -D dogstar_umami_db
SHOW TABLES;

正常情况下会看到 _prisma_migrationssessionwebsite 等表。


三、方式二: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

五、初始配置与使用

首次登录

  1. 访问 http://your-server-ip:3000 或配置的域名
  2. 使用默认账户登录:
    • 用户名admin
    • 密码umami ⚠️ 重要:首次登录后请立即修改密码!

添加网站

  1. 点击 SettingsWebsites
  2. 点击 Add website 按钮
  3. 填写网站信息:
    • 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 作为一个轻量级的网站统计工具,在保护用户隐私的同时提供了详尽的数据分析功能。如果你在部署过程中遇到问题,建议:

  1. 仔细检查 Docker 容器日志
  2. 确认网络连接和端口配置
  3. 验证数据库连接字符串格式
  4. 参考 Umami 官方文档 获取最新信息

本文最后更新时间:2025年9月

声明:Hello World|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - Umami部署文档


乌拉乌拉呼呼哈哈哈!