Ubuntu使用Docker Compose安装Umami并监控网站

Tch
Tch
发布于 2025-11-22 / 3 阅读
0
0

1. 数据看板

大佬Handsome新做了个数据可视化的插件——数据看板,颜值上还挺好看的,而且比腾讯云EdgeOne和百度统计看着都方便。

2. Umami

使用插件之前需要先部署Umami,👇🏻附上文档地址。

https://umami.zhcndoc.com/docs

我选择使用Docker Compose安装,在我看来这是最方便的方式了。只是在文档里并没有提供docker-compose.yml内容,好在在github的代码库里找到了。

https://github.com/umami-software/umami/blob/master/docker-compose.yml

docker-compose.yml

---
services:
  umami:
    image: ghcr.io/umami-software/umami: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
    init: true
    restart: always
    healthcheck:
      test: ["CMD-SHELL", "curl http://localhost:3000/api/heartbeat"]
      interval: 5s
      timeout: 5s
      retries: 5
  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:

是数据库使用的是postgres,而我的服务器上已经安装了mysql,且本站就是使用的mysql,也没必要再去安装一个postgres

修改后的docker-compose.yml内容如下,删除了和数据库相关的镜像,直接使用已安装的mysql数据库。

services:
  umami:
    image: ghcr.io/umami-software/umami:mysql-latest
    container_name: umami
    network_mode: "host"
    environment:
      DATABASE_URL: mysql://username:password@127.0.0.1:3306/umami
      DATABASE_TYPE: mysql
      APP_SECRET: replace-me-with-a-random-string
    init: true
    restart: always
    healthcheck:
      test: ["CMD-SHELL", "curl http://localhost:3000/api/heartbeat"]
      interval: 5s
      timeout: 5s
      retries: 5

APP_SECRET,需要生成一个密钥,用于加密会话和保证数据安全。推荐使用👇🏻命令生成。

openssl rand -base64 32

3. 安装部署Umami

先建数据库,不然服务启不起来。

create schema umami collate utf8mb4_general_ci;

docker-compose.yml弄到服务器上,拉取镜像并启动容器,这一过程可能会持续很长时间。

docker compose up -d

结束以后查看一下镜像和容器,也都有了。

docker images
docker ps -a

可以看到之前建的数据库umami里已经新建了好多个表。

提醒:在访问umami之前要先检查3000端口是否可以访问。

4. 访问umami

http://ip:3000

登录成功后就可以去配置了。

5. 通过域名访问

以后不可能一直通过ip访问,这样也太不优雅了。

域名和SSL证书就不说了,贴一下Nginx的配置。

# umami

server {
    listen 80;
    server_name umami.xxx;

    # 将HTTP请求重定向到HTTPS
    return 301 https://$host$request_uri;
}

server {
  listen 443 ssl http2;

  #填写证书绑定的域名
  server_name umami.xxx;

  #证书,密钥
  ssl_certificate cert/umami.tch.cool/umami.xxx.pem;
  ssl_certificate_key cert/umami.tch.cool/umami.xxx.key;

  ssl_session_cache shared:SSL:1m;
  ssl_session_timeout 5m;
  
  #TLS协议的类型以及加密套件
  ssl_protocols TLSv1.2 TLSv1.3;
  ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
  ssl_prefer_server_ciphers off;
            
  # 允许最大 1MB 的请求体
  client_max_body_size 1m;

  add_header X-Content-Type-Options "nosniff" always;
  add_header X-XSS-Protection "1; mode=block" always;
  add_header X-Frame-Options "SAMEORIGIN" always;


  location / {
    proxy_pass http://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;
  }
}

#负载均衡
upstream umami {
    server 127.0.0.1:3000;
}

就可以通过域名访问了(不要忘记关闭3000端口的访问)。

6. Umami配置

先在个人资料里修改密码。

然后添加网站,具体的操作文档里都有。

把这段<script>贴到网站的<head>部,就可以收集数据了。

7. 插件

安装【数据看板】插件,并按照插件文档进行配置。

https://docs.lik.cc/docs/plugins/data-statistics/usage

新建一个页面,用于统计数据的展示。

插件提供了如下两个统计组件。

选择【网站统计图表】组件,【标签统计、分类统计、文章趋势、评论排行、热门文章】五个模块我都需要就都选择了。

选择【umami统计】组件的【流量统计】模块,展示一个月的数据。

再次添加【umami统计】组件,选择【近30分钟网站活动】模块。

至此自定义页面已完成,组件和模块可根据实际情况灵活选择。也可通过注入HTML代码的方式添加到网站的任意位置,文档里都有详细说明。

点击👇🏻直达本站数据统计页。

https://tch.cool/umami

以上。


评论