宝塔面板Docker部署Umami统计,并绑定域名与解决数据不显示

宝塔面板Docker部署Umami统计,并绑定域名与解决数据不显示

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

一、 为什么选择Umami?

在开始部署之前,先简单了解一下我们为何选择Umami:

  • 数据自控:所有数据掌握在自己手中,无需担心第三方服务关闭或数据泄露。
  • 隐私友好:遵守GDPR等隐私法规,不跟踪用户个人身份信息。
  • 界面简洁:专注于展示你真正关心的核心流量数据,没有信息噪音。
  • 轻量高效:跟踪脚本非常小巧,对网站速度影响极微。

二、 准备工作:安装宝塔面板与Docker环境

  1. 确保已安装宝塔面板:这是本教程的基础,请提前在你的VPS上安装好宝塔面板。
  2. 安装Docker环境
    • 登录宝塔面板,在左侧菜单栏中找到并进入 “Docker” 栏目。
    • 新版本的宝塔面板已将Docker集成到顶级菜单,非常容易找到。进入后,系统会提示你安装,点击安装即可。

三、 核心步骤:使用Docker Compose部署Umami

我们使用docker-compose来一键部署Umami及其依赖的PostgreSQL数据库。

  1. 在宝塔面板的 “Docker” 栏目下,找到 “容器编排” 功能。
  2. 点击 “添加容器编排”
  3. 填写以下信息:
    • 编排名称:可以自定义,如 umami
    • Compose内容:将以下配置完整复制粘贴到文本框中。

yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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 替换为一个随机的、复杂的字符串,这是保障你应用安全的关键!

  1. 点击 “确定”。宝塔会自动执行编排,拉取镜像并启动Umami和数据库容器。

四、 初始访问与配置

  1. 部署完成后,打开浏览器,访问 http://你的服务器IP:3000
  2. 使用默认账号登录:
    • 用户名admin
    • 密码umami
  3. (重要)安全措施:登录后,请第一时间在Umami后台的设置中修改默认的用户名和密码!

五、 绑定域名并通过Cloudflare加速(可选但推荐)

直接通过IP和端口访问不美观也不安全,我们将其绑定到一个专业的域名上。

第一步:准备域名与DNS解析

假设你的主域名是 example.com,我们为Umami创建一个子域名 umami.example.com

  1. 登录 Cloudflare 控制台,进入你的域名管理。
  2. 进入 DNS → Records,点击 Add record
  3. 添加一个 A记录
    • Type: A
    • Name: umami (或其他你喜欢的子域名)
    • IPv4 address: 填写你的VPS的IP地址
    • Proxy status: 点击橙色云朵,设置为 Proxied (开启CDN和代理)
    • 点击 Save

第二步:宝塔面板配置反向代理

  1. 登录宝塔面板,进入 网站,点击 添加站点
  2. 域名填写你刚解析的域名,例如 umami.example.com。根目录可以随意设置,因为后续会用反向代理。
  3. 添加站点后,进入该站点的设置页面,找到 反向代理 功能。
  4. 点击 添加反向代理,配置如下:
    • 代理名称:umami
    • 目标URL:http://127.0.0.1:3000
  5. 完成后,宝塔会自动生成Nginx配置。你需要确认或手动在 配置文件 中确保包含以下关键指令,以正确传递用户真实IP和处理WebSocket:

nginx

1
2
3
4
5
6
7
8
9
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层面统一处理。

  1. 在Cloudflare控制台,进入 SSL/TLS → Overview
  2. 选择加密模式:
    • 如果你的宝塔站点没有配置SSL,选择 Flexible
    • 如果你的宝塔站点也配置了SSL证书(推荐),选择 FullFull (strict) 更安全。

现在,你应该可以通过 https://umami.example.com 安全地访问你的Umami后台了。

六、 疑难解答:网站添加代码后后台不显示数据?

这是部署过程中最常见的问题,通常由以下原因导致:

  1. CORS跨域问题
    • 现象:Umami和你的网站部署在不同域名下,浏览器因安全策略拦截了跟踪请求。
    • 解决:检查浏览器开发者工具的控制台是否有CORS报错。确保Umami部署时 APP_SECRET 已正确设置,并且通过反向代理绑定域名后,该问题通常能得到解决。
  2. HTTPS/HTTP混合内容问题
    • 现象:你的网站是HTTPS,但Umami的跟踪脚本地址是HTTP。
    • 解决:确保你嵌入网站的跟踪脚本中的URL是HTTPS协议,且与你绑定的域名一致。
  3. 防火墙/安全组配置
    • 现象:数据根本无法发送到服务器。
    • 解决:检查你的VPS安全组/防火墙是否放行了Umami服务端口(默认3000)。如果你已通过域名和80/443端口访问,则无需额外放行3000端口。
  4. 网站ID或域名配置错误
    • 现象:请求能发出,但Umami后台无法关联数据。
    • 解决
      • 在Umami后台 设置 → 网站 中,检查你添加的网站 域名 字段是否与你部署的实际域名完全一致(例如,不要将 www.example.comexample.com 弄混)。
      • 检查嵌入网站的跟踪代码中的 data-website-id 是否正确无误。

七、 项目地址

Umami是一个开源项目,你可以在GitHub上查看其源码、文档和最新动态:
https://github.com/umami-software/umami