宝塔面板Docker部署Umami统计,并绑定域名与解决数据不显示
宝塔面板Docker部署Umami统计,并绑定域名与解决数据不显示
宝塔面板Docker部署Umami统计,并绑定域名与解决数据不显示
你是否已经厌倦了谷歌分析那不符合国人习惯的界面,或者担心国内统计工具某天突然停服?自建网站统计系统无疑是最终极的省心方案。本文将手把手教你如何通过宝塔面板,用Docker Compose轻松部署开源、隐私友好的Umami网站统计工具,并详细讲解如何绑定域名以及解决后台不显示数据的关键问题。

一、 为什么选择Umami?
在开始部署之前,先简单了解一下我们为何选择Umami:
- 数据自控:所有数据掌握在自己手中,无需担心第三方服务关闭或数据泄露。
- 隐私友好:遵守GDPR等隐私法规,不跟踪用户个人身份信息。
- 界面简洁:专注于展示你真正关心的核心流量数据,没有信息噪音。
- 轻量高效:跟踪脚本非常小巧,对网站速度影响极微。
二、 准备工作:安装宝塔面板与Docker环境确保已安装宝塔面板:这是本教程的基础,请提前在你的VPS上安装好宝塔面板。
安装Docker环境:
- 登录宝塔面板,在左侧菜单栏中找到并进入 “Docker” 栏目。 - 新版本的宝塔面板已将Docker集成到顶级菜单,非常容易找到。进入后,系统会提示你安装,点击安装即可。#### 三、 核心步骤:使用Docker Compose部署Umami
我们使用docker-compose来一键部署Umami及其依赖的PostgreSQL数据库。
在宝塔面板的 “Docker” 栏目下,找到 “容器编排” 功能。
点击 “添加容器编排”。
填写以下信息:
- 编排名称:可以自定义,如 umami。 - Compose内容:将以下配置完整复制粘贴到文本框中。yaml
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
APP_SECRET: replace-me-with-a-random-string
depends_on:
db:
condition: service_healthy
restart: always
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
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
interval: 5s
timeout: 5s
retries: 5
volumes:
umami-db-data:
重要提醒:请务必将配置中的 APP_SECRET: replace-me-with-a-random-string 替换为一个随机的、复杂的字符串,这是保障你应用安全的关键!
点击 “确定”。宝塔会自动执行编排,拉取镜像并启动Umami和数据库容器。
四、 初始访问与配置
部署完成后,打开浏览器,访问 http://你的服务器IP:3000。
使用默认账号登录:
- 用户名:admin - 密码:umami(重要)安全措施:登录后,请第一时间在Umami后台的设置中修改默认的用户名和密码!
五、 绑定域名并通过Cloudflare加速(可选但推荐)
直接通过IP和端口访问不美观也不安全,我们将其绑定到一个专业的域名上。
第一步:准备域名与DNS解析
假设你的主域名是 example.com,我们为Umami创建一个子域名 umami.example.com。
登录 Cloudflare 控制台,进入你的域名管理。
进入 DNS → Records,点击 Add record。
添加一个 A记录:
- Type: A - Name: umami (或其他你喜欢的子域名) - IPv4 address: 填写你的VPS的IP地址 - Proxy status: 点击橙色云朵,设置为 Proxied (开启CDN和代理) - 点击 Save。第二步:宝塔面板配置反向代理
登录宝塔面板,进入 网站,点击 添加站点。
域名填写你刚解析的域名,例如 umami.example.com。根目录可以随意设置,因为后续会用反向代理。
添加站点后,进入该站点的设置页面,找到 反向代理 功能。
点击 添加反向代理,配置如下:
- 代理名称:umami - 目标URL:http://127.0.0.1:3000完成后,宝塔会自动生成Nginx配置。你需要确认或手动在 配置文件 中确保包含以下关键指令,以正确传递用户真实IP和处理WebSocket:
nginx
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;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
第三步:配置Cloudflare SSL
由于我们使用了Cloudflare代理,SSL证书可以在Cloudflare层面统一处理。
在Cloudflare控制台,进入 SSL/TLS → Overview。
选择加密模式:
- 如果你的宝塔站点没有配置SSL,选择 Flexible。 - 如果你的宝塔站点也配置了SSL证书(推荐),选择 Full 或 Full (strict) 更安全。现在,你应该可以通过 https://umami.example.com 安全地访问你的Umami后台了。
六、 疑难解答:网站添加代码后后台不显示数据?
这是部署过程中最常见的问题,通常由以下原因导致:
CORS跨域问题
- 现象:Umami和你的网站部署在不同域名下,浏览器因安全策略拦截了跟踪请求。 - 解决:检查浏览器开发者工具的控制台是否有CORS报错。确保Umami部署时 APP_SECRET 已正确设置,并且通过反向代理绑定域名后,该问题通常能得到解决。
HTTPS/HTTP混合内容问题
- 现象:你的网站是HTTPS,但Umami的跟踪脚本地址是HTTP。 - 解决:确保你嵌入网站的跟踪脚本中的URL是HTTPS协议,且与你绑定的域名一致。
防火墙/安全组配置
- 现象:数据根本无法发送到服务器。 - 解决:检查你的VPS安全组/防火墙是否放行了Umami服务端口(默认3000)。如果你已通过域名和80/443端口访问,则无需额外放行3000端口。
网站ID或域名配置错误
- 现象:请求能发出,但Umami后台无法关联数据。 - 解决: - 在Umami后台 设置 → 网站 中,检查你添加的网站 域名 字段是否与你部署的实际域名完全一致(例如,不要将 www.example.com 和 example.com 弄混)。 - 检查嵌入网站的跟踪代码中的 data-website-id 是否正确无误。#### 七、 项目地址
Umami是一个开源项目,你可以在GitHub上查看其源码、文档和最新动态: https://github.com/umami-software/umami