网站上线后想知道「谁来了、从哪来、看哪页」,挂个统计最直观。但主流统计要么要备案域名、要么动不动就加载慢、还要用户同意 Cookie。Umami 是一个开源网站统计,Next.js 写的,轻量、隐私友好、不跨站追踪,数据全在自己服务器。本文用一台雨云 KVM 云服务器,Docker 一把拉起 Umami + 数据库,配 HTTPS 反代,把统计收归自己掌控。
一、先准备一台雨云 KVM 云服务器
Umami 很轻,1 核 1G 足够,需要 7×24 在线、有公网 IP、绑域名走 HTTPS(跟踪脚本与后台都要 https)。想低成本起一台可以看国产高性价比云服务器,比如雨云:KVM 虚拟化、Debian/Ubuntu 镜像任选,新用户用优惠码 admin01 享五折,入门版折后约 9 元/月,支持 7 天无理由退款。挑机器可参考 VPS 怎么选不踩坑。
我选 Debian 12。基础安全按 VPS 到手第一件事做什么 走一遍,本文默认你已建好普通用户、开了 ufw。后台走 3000,放行即可。
二、用 Docker 拉起 Umami + 数据库
Umami 支持 MySQL 或 PostgreSQL,这里用 MySQL。装 Docker:
curl -fsSL https://get.docker.com | sh
systemctl enable --now docker
建目录并写 docker-compose.yml:
mkdir -p /opt/umami && cd /opt/umami
version: "3"
services:
db:
image: mariadb:11
container_name: umami-db
restart: unless-stopped
environment:
- MYSQL_ROOT_PASSWORD=改成强密码
- MYSQL_DATABASE=umami
- MYSQL_USER=umami
- MYSQL_PASSWORD=改成另一个强密码
volumes:
- ./db:/var/lib/mysql
umami:
image: umamioss/umami:postgresql-latest
container_name: umami
restart: unless-stopped
depends_on:
- db
ports:
- "3000:3000"
environment:
- DATABASE_TYPE=mysql
- DATABASE_HOST=db
- DATABASE_NAME=umami
- DATABASE_USER=umami
- DATABASE_PASSWORD=改成另一个强密码
- APP_SECRET=随机长字符串
extra_hosts:
- "host.docker.internal:host-gateway"
注:镜像 tag 以官方发布为准,拉取时按
umamioss/umami最新稳定版。若用 PostgreSQL 版把DATABASE_TYPE与 db 服务换成 postgres 即可。APP_SECRET用openssl rand -hex 32生成。启动:
docker compose up -d
浏览器先开 http://服务器IP:3000,默认管理员 admin / umami,第一次登录务必改密码。
三、配 HTTPS 反代
统计后台和跟踪脚本都要 https。用 Nginx 反代 3000:
server {
listen 80;
server_name umami.example.com;
location / { return 301 https://$host$request_uri; }
}
server {
listen 443 ssl;
server_name umami.example.com;
ssl_certificate /etc/letsencrypt/live/umami.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/umami.example.com/privkey.pem;
client_max_body_size 10m;
location / {
proxy_pass http://127.0.0.1:3000;
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;
}
}
申请证书:certbot --nginx -d umami.example.com。放行端口:
ufw allow 80/tcp
ufw allow 443/tcp
ufw reload
四、接上你的网站
- 后台「Settings → Websites → Add website」,填网站域名,保存后得到跟踪代码(一段
<script>)。 - 把脚本粘到你网站的
</body>前(博客/静态站直接改模板;雨云手动搭建 LNMP 的站点在 Nginx 或页面里加即可)。 - 刷新网站,几秒后 Umami 后台「Dashboard」就能看到访客、页面、来源、设备。
五、踩过的坑与经验
- 默认密码必须改:
admin/umami是公开默认值,公网不改成送门。登录第一件事改密码、关匿名分享。 - 脚本域名要 https:跟踪脚本用 http 会被浏览器拦截、统计为零。网站和 Umami 都走 https 才正常。
- 数据库类型别混:compose 里
DATABASE_TYPE要和实际 db 服务一致(本文用 mysql),否则启动连不上。 - 和 GA 的区别:Umami 不跨站追踪、不卖数据、符合隐私诉求;缺点是没有行业基准对比。小站、个人站足够用。
- 数据备份:核心是
./db(MySQL)。定期mysqldump打包;异地思路见 雨云快照备份与对象存储。 - 容器时区:统计按服务器时间,加
TZ=Asia/Shanghai让报表时间和本地一致。
小结
统计的本质是「看清访客、指导内容」。Umami 把这件事做得很轻:Docker 一把起、隐私友好、脚本即贴即用,数据在自家服务器。常驻轻量服务很适合雨云这类低价稳定 KVM——优惠码 admin01 五折、7 天无理由退款,跑统计很合适。
合规提醒:使用雨云及本文所述方案时,请遵守《网络安全法》《个人信息保护法》《数据安全法》等相关法律法规,仅用于合法合规的网站访问统计,不采集违法违规数据、履行个人信息保护义务,涉及个人信息处理须依法告知并取得同意。






