参考资料

  1. 使用 Docker 部署 Umami 推荐的方式
  2. 使用 Docker 部署 Umami 数据库分离的两种常见场景

使用 Docker 部署 Umami 是一种非常方便和推荐的方式。整个过程主要围绕 docker-compose.yml 配置文件展开。

✅ 前提条件

开始前,请确保你的服务器或本地电脑已安装:


🚀 步骤 1:创建 docker-compose.yml 文件

在一个空目录下(比如 umami),新建一个名为 docker-compose.yml 的文件,并填入以下内容。

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:用于加密的强随机字符串,务必修改,建议用密码生成器生成一个长的随机字符串。

  • 端口"3000:3000" 表示将宿主机的 3000 端口映射到容器的 3000 端口。如果 3000 端口被占用,可以改为 "3001:3000"

  • 数据库密码:默认密码 umami 并不安全,请务必修改 POSTGRES_PASSWORD 的值,并同步更新 DATABASE_URL 中的密码。

  • 镜像加速:如果你的服务器在中国大陆,从 GitHub Container Registry (ghcr.io) 拉取镜像可能较慢。可以将 image 换为国内镜像:docker.umami.dev/umami-software/umami:postgresql-latest

🏃 步骤 2:启动服务

保存 docker-compose.yml 文件后,在终端进入该文件所在目录,执行以下命令即可启动:

docker compose up -d
  • -d 参数表示服务将在后台(detached mode)运行。

首次启动会自动拉取所需的镜像并创建容器,整个过程可能需要几分钟。

🔑 步骤 3:验证与登录

  1. 确认服务状态:可运行 docker compose ps 命令,确认 umamidb 服务均为 Up (healthy) 状态。

  2. 访问 Umami 界面:在浏览器中打开 http://你的服务器IP:3000(端口号以你的配置为准)。

  3. 登录:使用初始账号 admin 和密码 umami 登录,建议登录后立即修改

如果无法访问,请检查服务器的防火墙或安全组策略,是否已放行你配置的端口。

🔒 步骤 4:配置反向代理

为了方便使用,通常是采用反向代理软件(如 Nginx),将 Umami 服务绑定到你的域名上。

以下是一段 Nginx 的配置示例,用于将你的域名指向 Umami 服务:

server {
    listen 80;
    server_name your-domain.com;  # 请替换为你的实际域名

    location / {
        proxy_pass http://127.0.0.1:3000;  # 代理地址指向本机的Umami端口
        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;
    }
}

建议同时为你的域名配置 SSL 证书,以保证数据传输的安全性。

### 如何自己生成(更安全)
- **Linux / macOS 终端**:  
  `openssl rand -base64 32`  (结果约 44 个字符)  
  或 `cat /dev/urandom | tr -dc 'a-zA-Z0-9!@#$%^&*' | fold -w 32 | head -n 1`
- **Python 一次性生成**:  
  `python3 -c "import secrets; print(secrets.token_urlsafe(32))"`
- **在线生成**(不推荐用于生产,仅测试):使用 `https://randomkeygen.com/` 等工具,但最佳是离线生成。

🎯 总结与后续

  • 更新镜像:当 Umami 发布新版本时,可在 docker-compose.yml 目录下执行 docker compose pulldocker compose up -d 来更新。

  • 统计数据:成功部署后,登录后台,点击 "添加网站" (Add Website),填入你的网站信息,即可获得一段追踪代码,将其嵌入到你的网站中,就能开始收集数据了。

声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。