惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
T
Threat Research - Cisco Blogs
GbyAI
GbyAI
Y
Y Combinator Blog
美团技术团队
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 【当耐特】
S
SegmentFault 最新的问题
IT之家
IT之家
Recent Announcements
Recent Announcements
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
阮一峰的网络日志
阮一峰的网络日志
T
The Blog of Author Tim Ferriss
Martin Fowler
Martin Fowler
Microsoft Azure Blog
Microsoft Azure Blog
V
Visual Studio Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
U
Unit 42
WordPress大学
WordPress大学
博客园 - Franky
L
LangChain Blog
人人都是产品经理
人人都是产品经理
小众软件
小众软件
博客园 - 叶小钗
罗磊的独立博客
酷 壳 – CoolShell
酷 壳 – CoolShell
大猫的无限游戏
大猫的无限游戏
云风的 BLOG
云风的 BLOG
Vercel News
Vercel News
雷峰网
雷峰网
腾讯CDC
Google DeepMind News
Google DeepMind News
博客园 - 三生石上(FineUI控件)
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Help Net Security
Help Net Security
C
Check Point Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
N
News and Events Feed by Topic
V2EX - 技术
V2EX - 技术
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Schneier on Security
Schneier on Security
博客园 - 聂微东
A
Arctic Wolf
H
Heimdal Security Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Recent Commits to openclaw:main
Recent Commits to openclaw:main
T
The Exploit Database - CXSecurity.com
C
Cyber Attacks, Cyber Crime and Cyber Security
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Google DeepMind News
Google DeepMind News

Hyde Blog

Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog 关于我 关于我 Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog Hyde Blog
Hyde Blog
Hyde · 2025-12-07 · via Hyde Blog

Umami统计 原创

简介 ​

GitHub Release

Umami 是一款开源的、注重隐私的网络分析工具,可作为 Google Analytics 的替代方案。它提供对网站流量、用户行为和性能的重要洞察,同时优先考虑数据隐私。

与许多传统分析平台不同,Umami 不会收集或存储个人数据,从而避免了使用 cookie 的需求,并且符合 GDPR 和 PECR 标准。

Umami 设计轻巧且易于设置,可以自托管,让用户完全控制自己的数据。

安装 ​

有几种不同的方法可以安装 Umami。

  • 从源代码安装:从 GitHub 获取代码并自行构建应用程序。
  • 使用 Docker compose:使用构建您自己的 Docker 容器 docker compose
  • 使用 Docker 镜像:下载预先构建的 Docker 镜像

源代码安装 -V2 ​

要求

  • 具有 Node.js 版本 18.18 或更新版本的服务器。
  • 数据库:Umami 支持 MySQL(最低版本 v8.0)和 PostgreSQL(最低版本 v12.14)数据库。

bash

git clone https://github.com/Umami-software/Umami.git
cd umami
git checkout v2
yarn install

配置 Umami ​

  • 在 Umami 项目的根目录下创建一个名为 .env 的文件

md

.
│ ├──src
├── .env # 配置文件
├── package.json
├── README.md
├── yarn.lock

连接 url 格式如下:

提示

username mypassword mydb 替换成实际的数据库用户名密码数据库名

bash

DATABASE_URL=postgresql://username:mypassword@localhost:5432/mydb

DATABASE_URL=mysql://username:mypassword@localhost:3306/mydb

我的配置如下:

bash

DATABASE_URL=mysql://root:root@localhost:3306/umami

初始化数据库 ​

注意

  • 默认使用PostgreSQL数据库。Umami v3 不再支持 MySQL 数据库,仅支持 PostgreSQL
  • 打开Navicat左上角新建 MySQL 连接

PixPin_2025-11-24_13-42-58.jpg

  • 连接名:umami
  • 主机名:localhost
  • 端口:3306
  • 用户名:root
  • 密码:mypassword

PixPin_2025-11-24_13-45-16.jpg

  • 双击umami打开链接右键新建数据库

    • 数据库名称:输入 umami
    • 字符集:建议选择 utf8mb4(支持 Unicode 字符)
    • 排序规则:选择 utf8mb4_general_ci
    • 点击 “确定”,此时左侧列表中会出现 umami 数据库。

1764344920740.png

构建 ​

提示

首次运行构建时,它将在数据库中创建所有必需的数据库表。它还将创建一个用户名为 admin、密码为 umami 的登录帐户。

启动 ​

1745665814726.png

重启 ​

您可以直接运行 yarn start 来启动 Umami,但强烈建议您使用像 PM2 这样的进程管理器来为您处理重启。

要使用 PM2 运行:

bash

yarn global add pm2
cd umami
pm2 start yarn --name umami -- start
pm2 startup
pm2 save

配置 ​

  • 点击上面菜单的设置,添加网站,输入网站名称和网址保存

1745665990188.png

  • 添加完成后,点击编辑-跟踪代码获取页面埋点链接 1745666088808.png

    1745666124826.png

  • 将该链接添加到你网站的页面头部或者底部即可

ts

[
    "script",
    {
      src: "http://localhost:3000/script.js",
      "data-website-id": "7a2817d2-xxxx-xxxx-xxxx-8401f59642f1",
      defer: "defer",
    },
  ],

效果 ​

1745665712851.png

源代码安装 -V3 ​

V3源代码安装教程请参考 Umami 源代码安装-V3 版本

docker-compos 安装 ​

bash

sudo apt install docker-compose

拉取镜像 ​

接着安装完成后进行下面操作

bash

# 进入服务器目录 /root/下
cd /root

# 新建umami文件夹,并进入umami文件夹
mkdir umami
cd umami

# 拉取 PostgreSQL 支持的 Umami Docker 映像
docker pull ghcr.io/umami-software/umami:postgresql-latest

# 新建doker-compose.yaml文件并进行编辑
vi docker-compose.yaml

配置文件 ​

复制粘贴以下内容,完成后按下 ESC 键,然后输入:wq 保存

提示

里面 ports 是后面进行反向代理的端口,可以自行设置

yaml

---
version: "3"
services:
  umami:
    image: ghcr.io/umami-software/umami:postgresql-latest
    ports:
      - "3300: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:

启动容器 ​

验证 ​

bash

docker-compose ps -a

# 看到下面输出表示成功
[root@VM-4-16-centos umami]# docker-compose ps -a
    Name                   Command                  State                        Ports
--------------------------------------------------------------------------------------------------------
umami_db_1      docker-entrypoint.sh postgres    Up (healthy)   5432/tcp
umami_umami_1   docker-entrypoint.sh yarn  ...   Up             0.0.0.0:3300->3000/tcp,:::3300->3000/tcp
  • 访问 Umami

打开浏览器,访问 http://localhost:3300。 (这里用自己云服务器 ip 访问: http://云服务器公网 ip:3300) 默认管理员账号和密码: 用户名:admin 密码:umami

反向代理 ​

注意

我的反向代理使用的是 Nginx,如果你使用的是其他的反向代理,请自行修改。路径在:/etc/nginx/conf.d/umami.conf,以你为准

bash

# umami.seasir.top 域名的 HTTP -> HTTPS 重定向
server {
    listen 80;
    listen [::]:80;
    server_name umami.seasir.top;

    # 配置 HTTP 到 HTTPS 的重定向
    return 301 http://$host$request_uri;
}

# umami.seasir.top 域名的 HTTPS 反向代理
server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name umami.seasir.top;

    location / {
        proxy_pass http://你的云服务器ip:3300/;  # 反向代理到实际 umami 服务
        include /etc/nginx/common_configs/common_proxy_params.conf;  # 引入反向代理公用参数
    }
}
  • 配置后重启 nginx

拓展 ​

  • 停止 Umami 容器

bash

cd umami
docker-compose down
  • 重启容器

bash

cd umami
docker-compose up -d
  • 删除 Umami 及其数据

bash

cd umami
docker-compose down -v
  • 拉取最新镜像

bash

cd umami
docker-compose pull

Vercel 部署 ​

建立数据库 ​

Neon PostgreSQL 是一个基于 PostgreSQL 构建的 云原生、Serverless(无服务器)数据库服务,由 Neon.tech 公司提供。

  • 申请 Neon PostgreSQL 账号

  • 创建免费 Neon PostgreSQL 数据库,区域推荐选择离 Umami 后端(Vercel / Netlify / AWS Lambda / VPS)地理位置较近的数据中心以获得更低的数据库连接延迟。如果不清楚自己的后端在哪个云服务器和地区,可选择 新加坡地区

1758962742262.png

  • 点击Projects找到刚刚创建的项目,进入Dashboard页面,点击Connect按钮,接着点击PostgreSQL按钮复制数据库链接并妥善保管,后面部署需要用到!然后点击

1758962936516.png

1758963010542.png

Vercel 部署 ​

  • 申请 Vercel 账号,点击以下按钮将 umami 一键部署到 Vercel Deploy

Deploy

  • 进入 Settings - Environment Variables,添加环境变量 DATABASE_URL,值为前面记录的数据库连接字符串,最后点击Save保存

注意

这里只复制数据库链接单引号就行,不要完整复制!

1758965106948.png

  • 进入 Deployments , 然后在任意一项后面点击更多(三个点) , 然后点击 Redeploy , 最后点击下面的 Redeploy 等待部署完成,部署完成即可

域名配置 ​

  • 部署成功后,修改默认域名为你的子域名,需要去你的域名管理那上修改 DNS 解析。

1758966761472.png

前端配置 ​

参考 源代码安装步骤的前端配置

选项 ​

排除我自己的访问。您想访问自己的网站,但又不想让访问记录出现在您的统计数据中。为此,您需要在浏览器中添加一项设置。

在浏览器中打开开发者控制台:Settings -> More tools -> Developer tools

在控制台中,输入以下代码并点击 Enter:

bash

localStorage.setItem('umami.disabled', 1);

此设置适用于每个网站,因此您需要对要排除的每个网站执行此操作。

要删除设置,请输入以下代码并点击 Enter:

bash

localStorage.removeItem('umami.disabled');

常见问题 ​

  • 为啥没有数据?

检查一下是否添加到网站,并且是否有页面埋点链接添加。可以通过 f12 搜索 umami 查看是否添加成功。如有有添加成功需要设置下反向代理

4e574e97bc39eac7c865a22d57c2125.png