网站流量监控工具umami部署
Umami 是一个开源的、注重隐私的网站分析工具,可以替代 Google Analytics。它轻量、快速,并且完全符合 GDPR 规范,不会收集用户的个人数据。
📋 目录
什么是 Umami
Umami 是一个现代化的网站分析平台,具有以下特点:
- 开源免费:完全开源,可自行部署
- 隐私友好:不收集用户个人数据,符合 GDPR
- 轻量快速:体积小,加载速度快
- 界面简洁:现代化的仪表板界面
- 功能完整:支持多网站、实时统计、自定义事件等
为什么选择 Umami
相比传统的 Google Analytics,Umami 的优势:
- 隐私保护:不收集用户个人信息,不设置 Cookie
- 性能优秀:脚本体积小(约 2KB),不影响网站加载速度
- 数据自主:数据完全由自己掌控,存储在自有服务器
- 界面友好:简洁直观的仪表板,易于理解
- 开源透明:代码开源,可自定义和审计
部署前准备
系统要求
- 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-composeDocker 部署方式
快速部署(单容器)
最简单的部署方式,适合快速测试:
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/umami2. 创建 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
EOF3. 生成 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 ps5. 访问 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-contrib2. 创建数据库
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;
\q3. 克隆 Umami 仓库
bash
cd /opt
git clone https://github.com/umami-software/umami.git
cd umami4. 安装依赖
bash
npm install5. 配置环境变量
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-here6. 运行数据库迁移
bash
npm run db:migrate7. 构建并启动
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 | 数据库类型 | postgresql 或 mysql |
HASH_SALT | 密码加密盐值 | 随机字符串(必须修改) |
APP_ENV | 应用环境 | production 或 development |
NEXT_PUBLIC_BASE_PATH | 基础路径 | /umami(如果使用子路径) |
NEXT_PUBLIC_APP_URL | 应用 URL | https://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. 首次登录
- 访问 Umami 地址(如
http://your-server-ip:3000) - 使用默认账号登录:
- 用户名:
admin - 密码:
umami
- 用户名:
- 立即修改密码:Settings → Profile → Change Password
2. 添加网站
- 登录后,点击 "Add Website"
- 填写网站信息:
- Name:网站名称(如:我的博客)
- Domain:网站域名(如:example.com)
- Enable tracking:启用追踪
- 点击 "Save" 保存
3. 获取追踪代码
- 在网站列表中,点击网站名称进入详情
- 复制 "Tracking Code"
- 将代码添加到你的网站 HTML 中(通常在
</head>标签前)
追踪代码示例:
html
<script async src="https://analytics.example.com/script.js" data-website-id="your-website-id"></script>4. 查看统计数据
- 实时数据:查看当前在线访客
- 页面浏览:查看页面访问量
- 访客统计:查看访客来源、设备、浏览器等
- 事件追踪:自定义事件追踪
5. 多用户管理
- 进入 Settings → Users
- 点击 "Add User" 添加新用户
- 设置用户权限(管理员或查看者)
常见问题
1. 无法访问 Umami
检查服务状态:
bash
# Docker 方式
docker-compose ps
docker-compose logs
# 手动部署
pm2 status
pm2 logs umami检查端口:
bash
# 检查端口是否被占用
sudo netstat -tlnp | grep 3000
# 检查防火墙
sudo ufw status2. 数据库连接失败
检查数据库:
bash
# Docker 方式
docker-compose exec db psql -U umami -d umami
# 手动部署
sudo -u postgres psql -d umami检查环境变量:
确保 DATABASE_URL 配置正确,格式为:
postgresql://username:password@host:port/database3. 忘记管理员密码
如果使用 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-network5. 数据备份
备份数据库:
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.sql6. 更新 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
下一步
- ✅ 部署 Umami
- ✅ 配置 SSL 证书
- ✅ 添加网站追踪代码
- ✅ 设置数据备份计划
- ✅ 配置监控告警(可选)
希望这篇文章能帮助你成功部署 Umami!🚀