Skip to content
<

网站流量监控工具umami部署

Umami 是一个开源的、注重隐私的网站分析工具,可以替代 Google Analytics。它轻量、快速,并且完全符合 GDPR 规范,不会收集用户的个人数据。

📋 目录

什么是 Umami

Umami 是一个现代化的网站分析平台,具有以下特点:

  • 开源免费:完全开源,可自行部署
  • 隐私友好:不收集用户个人数据,符合 GDPR
  • 轻量快速:体积小,加载速度快
  • 界面简洁:现代化的仪表板界面
  • 功能完整:支持多网站、实时统计、自定义事件等

为什么选择 Umami

相比传统的 Google Analytics,Umami 的优势:

  1. 隐私保护:不收集用户个人信息,不设置 Cookie
  2. 性能优秀:脚本体积小(约 2KB),不影响网站加载速度
  3. 数据自主:数据完全由自己掌控,存储在自有服务器
  4. 界面友好:简洁直观的仪表板,易于理解
  5. 开源透明:代码开源,可自定义和审计

部署前准备

系统要求

  • Linux 服务器(推荐 Ubuntu 20.04+ 或 CentOS 8+)
  • Docker 和 Docker Compose(推荐方式)
  • 或 Node.js 18+ 和 PostgreSQL 数据库(手动部署)
  • 至少 512MB 内存
  • 域名和 SSL 证书(可选,但推荐)

安装 Docker(如果未安装)

bash
# Ubuntu/Debian
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# CentOS/RHEL
sudo yum install -y docker
sudo systemctl start docker
sudo systemctl enable docker

# 安装 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Docker 部署方式

快速部署(单容器)

最简单的部署方式,适合快速测试:

bash
# 创建数据目录
mkdir -p /opt/umami
cd /opt/umami

# 运行 Umami(使用 SQLite,适合小规模使用)
docker run -d \
  --name umami \
  -p 3000:3000 \
  -e DATABASE_URL=sqlite:///app/data/umami.db \
  -v umami-data:/app/data \
  ghcr.io/umami-software/umami:postgresql-latest

访问 http://your-server-ip:3000 即可使用。

默认登录信息:

  • 用户名:admin
  • 密码:umami

⚠️ 重要:首次登录后请立即修改密码!

Docker Compose 部署

推荐的生产环境部署方式,使用 PostgreSQL 数据库:

1. 创建项目目录

bash
mkdir -p /opt/umami
cd /opt/umami

2. 创建 docker-compose.yml

bash
cat > docker-compose.yml << 'EOF'
version: '3'
services:
  umami:
    image: ghcr.io/umami-software/umami:postgresql-latest
    ports:
      - "3000:3000"
    environment:
      DATABASE_URL: postgresql://umami:umami@db:5432/umami
      DATABASE_TYPE: postgresql
      HASH_SALT: replace-me-with-a-random-string
    depends_on:
      - db
    restart: always
    networks:
      - umami-network

  db:
    image: postgres:15-alpine
    environment:
      POSTGRES_DB: umami
      POSTGRES_USER: umami
      POSTGRES_PASSWORD: umami
    volumes:
      - umami-db-data:/var/lib/postgresql/data
    restart: always
    networks:
      - umami-network

volumes:
  umami-db-data:

networks:
  umami-network:
    driver: bridge
EOF

3. 生成 HASH_SALT

bash
# 生成随机字符串作为 HASH_SALT
openssl rand -base64 32

将生成的字符串替换 docker-compose.yml 中的 replace-me-with-a-random-string

4. 启动服务

bash
# 启动服务
docker-compose up -d

# 查看日志
docker-compose logs -f

# 查看状态
docker-compose ps

5. 访问 Umami

打开浏览器访问 http://your-server-ip:3000,使用默认账号登录:

  • 用户名:admin
  • 密码:umami

手动部署

如果你不想使用 Docker,可以手动部署:

1. 安装依赖

bash
# 安装 Node.js 18+
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs

# 或使用 nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
nvm install 18
nvm use 18

# 安装 PostgreSQL
sudo apt-get install -y postgresql postgresql-contrib

2. 创建数据库

bash
# 切换到 postgres 用户
sudo -u postgres psql

# 在 PostgreSQL 中执行
CREATE DATABASE umami;
CREATE USER umami WITH ENCRYPTED PASSWORD 'your-secure-password';
GRANT ALL PRIVILEGES ON DATABASE umami TO umami;
\q

3. 克隆 Umami 仓库

bash
cd /opt
git clone https://github.com/umami-software/umami.git
cd umami

4. 安装依赖

bash
npm install

5. 配置环境变量

bash
cp .env.example .env
vim .env

编辑 .env 文件:

env
DATABASE_URL=postgresql://umami:your-secure-password@localhost:5432/umami
DATABASE_TYPE=postgresql
HASH_SALT=your-random-hash-salt-here

6. 运行数据库迁移

bash
npm run db:migrate

7. 构建并启动

bash
# 构建
npm run build

# 启动(开发模式)
npm start

# 或使用 PM2 管理(生产环境)
npm install -g pm2
pm2 start npm --name "umami" -- start
pm2 save
pm2 startup

配置说明

环境变量配置

主要的环境变量说明:

变量名说明示例
DATABASE_URL数据库连接字符串postgresql://user:pass@host:5432/dbname
DATABASE_TYPE数据库类型postgresqlmysql
HASH_SALT密码加密盐值随机字符串(必须修改)
APP_ENV应用环境productiondevelopment
NEXT_PUBLIC_BASE_PATH基础路径/umami(如果使用子路径)
NEXT_PUBLIC_APP_URL应用 URLhttps://analytics.example.com

使用 Nginx 反向代理

生产环境建议使用 Nginx 作为反向代理,并配置 SSL:

nginx
server {
    listen 80;
    server_name analytics.example.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name analytics.example.com;

    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        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_cache_bypass $http_upgrade;
    }
}

配置防火墙

bash
# 如果使用 Nginx,只开放 80 和 443 端口
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# 如果直接访问,开放 3000 端口
sudo ufw allow 3000/tcp

使用指南

1. 首次登录

  1. 访问 Umami 地址(如 http://your-server-ip:3000
  2. 使用默认账号登录:
    • 用户名:admin
    • 密码:umami
  3. 立即修改密码:Settings → Profile → Change Password

2. 添加网站

  1. 登录后,点击 "Add Website"
  2. 填写网站信息:
    • Name:网站名称(如:我的博客)
    • Domain:网站域名(如:example.com)
    • Enable tracking:启用追踪
  3. 点击 "Save" 保存

3. 获取追踪代码

  1. 在网站列表中,点击网站名称进入详情
  2. 复制 "Tracking Code"
  3. 将代码添加到你的网站 HTML 中(通常在 </head> 标签前)

追踪代码示例:

html
<script async src="https://analytics.example.com/script.js" data-website-id="your-website-id"></script>

4. 查看统计数据

  • 实时数据:查看当前在线访客
  • 页面浏览:查看页面访问量
  • 访客统计:查看访客来源、设备、浏览器等
  • 事件追踪:自定义事件追踪

5. 多用户管理

  1. 进入 Settings → Users
  2. 点击 "Add User" 添加新用户
  3. 设置用户权限(管理员或查看者)

常见问题

1. 无法访问 Umami

检查服务状态

bash
# Docker 方式
docker-compose ps
docker-compose logs

# 手动部署
pm2 status
pm2 logs umami

检查端口

bash
# 检查端口是否被占用
sudo netstat -tlnp | grep 3000

# 检查防火墙
sudo ufw status

2. 数据库连接失败

检查数据库

bash
# Docker 方式
docker-compose exec db psql -U umami -d umami

# 手动部署
sudo -u postgres psql -d umami

检查环境变量

确保 DATABASE_URL 配置正确,格式为:

postgresql://username:password@host:port/database

3. 忘记管理员密码

如果使用 PostgreSQL:

bash
# 进入数据库
docker-compose exec db psql -U umami -d umami

# 重置密码(在 PostgreSQL 中执行)
UPDATE account SET password = crypt('new-password', gen_salt('bf')) WHERE username = 'admin';

4. 性能优化

使用 Redis 缓存(可选):

docker-compose.yml 中添加 Redis:

yaml
redis:
  image: redis:alpine
  restart: always
  networks:
    - umami-network

5. 数据备份

备份数据库

bash
# Docker 方式
docker-compose exec db pg_dump -U umami umami > umami_backup.sql

# 手动部署
pg_dump -U umami umami > umami_backup.sql

恢复数据库

bash
# Docker 方式
docker-compose exec -T db psql -U umami umami < umami_backup.sql

# 手动部署
psql -U umami umami < umami_backup.sql

6. 更新 Umami

Docker 方式

bash
cd /opt/umami
docker-compose pull
docker-compose up -d

手动部署

bash
cd /opt/umami
git pull
npm install
npm run build
pm2 restart umami

总结

Umami 是一个优秀的开源网站分析工具,具有以下优势:

隐私友好:不收集用户个人信息
轻量快速:脚本体积小,不影响网站性能
易于部署:支持 Docker 一键部署
功能完整:满足基本的网站分析需求
开源免费:完全开源,可自行部署和定制

推荐部署方案

  • 个人博客/小网站:使用 Docker Compose + PostgreSQL
  • 快速测试:使用单容器 Docker 部署(SQLite)
  • 生产环境:Docker Compose + PostgreSQL + Nginx 反向代理 + SSL

下一步

  1. ✅ 部署 Umami
  2. ✅ 配置 SSL 证书
  3. ✅ 添加网站追踪代码
  4. ✅ 设置数据备份计划
  5. ✅ 配置监控告警(可选)

希望这篇文章能帮助你成功部署 Umami!🚀