Umami 是一个开源的轻量化网站统计程序。
为何选择 Umami
- Umami 等自建统计程序不会像 Google Analytics 一样被很多浏览器插件拦截,数据相对更加准确。
- 在类似的自建统计程序中,Umami 在速度和配置要求上有非常明显的优势,在积累大量数据后依旧能保持快速的响应。
部署程序
安装 Docker
较新版本中 Docker Compose 已以插件的形式集成在 Docker 中,无需额外安装
以 Ubuntu 为例,其他操作系统可参考Docker官方文档
请注意,第二条命令会将主机上的旧版 Docker 卸载。
sudo apt update
sudo apt remove docker docker-engine docker.io containerd runc
# 国内机器可将 download.docker.com 替换为 mirrors.aliyun.com/docker-ce
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
2022/05/17 更新
据反馈阿里云的机器可能会找不到add-apt-repository
命令,执行sudo apt install software-properties-common
安装即可。
使用 Compose 部署程序
2024/01/16 更新
Umami 运行最低需要 MySQL v5.7 或 PostgreSQL v12.14
用MySQL的话个人建议最好是8.0,觉得内存占用大可以考虑MariaDB,之前就出现过数据库迁移脚本用了MySQL8.0才兼容的语法导致一堆用5.7的升级失败了,过了几个月才修复。
创建 docker-compose.yml
文件,以下均以MySQL数据库为例
选项一:使用宿主机数据库
version: '3'
services:
umami:
image: ghcr.io/umami-software/umami:mysql-latest
restart: always
network_mode: "host"
environment:
DATABASE_TYPE: mysql
DATABASE_URL: mysql://username:password@localhost:3306/databasename
APP_SECRET: replace-me-with-a-random-string
container_name: umami
选项二:使用Docker部署数据库
version: '3'
services:
umami:
image: ghcr.io/umami-software/umami:mysql-latest
restart: always
depends_on:
- umami-db
ports:
- 3000:3000
environment:
DATABASE_TYPE: mysql
DATABASE_URL: mysql://umami:password@umami-db:3306/umami
APP_SECRET: replace-me-with-a-random-string
container_name: umami
umami-db:
image: mysql:5.7
restart: always
volumes:
- ./data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: umami
MYSQL_USER: umami
MYSQL_PASSWORD: password
container_name: umami-db
如需使用 PostgreSQL ,将 image
替换为 ghcr.io/umami-software/umami:postgresql-latest
,将 DATABASE_URL
替换为 postgresql://username:password@db:5432/databasename
,DATABASE_TYPE
替换为 postgresql
即可。
将 DATABASE_URL
内的 username
等替换为对应的数据库配置,将 APP_SECRET
后的内容替换为随机字符串。
因为 Umami 分发镜像使用的是 Github 的 Package 功能,国内机器拉取镜像的速度大概率十分感人,如有需要可尝试我在腾讯云的镜像ccr.ccs.tencentyun.com/orilight/umami-mysql:latest
可将latest换为1.38.0
等版本号(不需要带v)拉取指定版本的镜像
配置完成后保存关闭文件在终端执行 docker compose up -d
即可
Umami 默认运行在 主机ip:3000
上,如无法访问建议检查 Umami 的运行状态与主机的防火墙和安全组等设置,默认账号:admin
,默认密码:umami
后续更新
当 umami 更新后,运行下列命令即可更新 umami。
注意是在保存docker-compose.yml
文件的目录下执行命令。
docker compose pull
docker compose up -d --remove-orphans
yarn run v1.22.19
$ npm-run-all check-db update-tracker start-server
$ node scripts/check-db.js
✓ DATABASE_URL is defined.
✓ Database connection successful.
✓ Database version check successful.
✗ Command failed: prisma migrate deploy
Error: P3009
migrate found failed migrations in the target database, new migrations will not be applied. Read more about how to resolve migration issues in a production database: https://pris.ly/d/migrate-resolve
The `05_add_visit_id` migration started at 2024-05-12 11:22:28.640 UTC failed
Error: P3009
migrate found failed migrations in the target database, new migrations will not be applied. Read more about how to resolve migration issues in a production database: https://pris.ly/d/migrate-resolve
The `05_add_visit_id` migration started at 2024-05-12 11:22:28.640 UTC failed
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
数据库服务器
服务器: 127.0.0.1 via TCP/IP
服务器类型: MariaDB
服务器连接: SSL 未被使用 文档
服务器版本: 10.11.7-MariaDB-log - Source distribution
协议版本: 10
用户: root@127.0.0.1
服务器字符集: UTF-8 Unicode (utf8mb4)
大佬能帮忙看看吗
参考 https://github.com/umami-software/umami/issues/2645,原因是 MariaDB 不支持数据库迁移脚本里的 BIN_TO_UUID 函数,解决需要修改迁移脚本的 UUID 生成函数。
如果要追 Umami 新版本的话建议直接用 MySQL 8.0,不然这次解决了下次数据库升级大概率还是会出问题。
这个对MySQL的版本有要求吗,我的是MySQL5.6,一直没安装成功
官网文档有写最低需要MySQL 5.7
这个镜像太漂亮了!
umami-umami-1 | ✗ Unable to connect to the database.
umami-umami-1 | error Command failed with exit code 1.
umami-umami-1 | info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
umami-umami-1 | ERROR: "check-db" exited with 1.
弄了半天连不到数据库,各种环境下都不行
你数据库是在哪里运行的,数据库运行在主机上要把 umami 容器加入 host 网络,数据库地址填 127.0.0.1
数据库也是 docker 里运行的话要把两个容器加入同一个 bridge 网络,然后数据库连接地址那里填数据库容器的名字
多谢!确实忘记给数据库配网络了,但是配了也不行。后来把一些command删了,environment从短语法改成键值对语法,这才可以😂。
折腾一天没有成功。呜……
具体是哪里有问题呢,只要docker安装成功了后面都很简单的
官方提供的实在太慢了,多谢
现在1.40.0的Docker好像还没出。
是说腾讯云的镜像吗,我这边是可以拉取到 1.40.0 版本的,拉取镜像的时候版本号不需要加v
类似这样:
ccr.ccs.tencentyun.com/orilight/umami-mysql:1.40.0
「ghcr.io/umami-software/umami:mysql-latest」这个官方发布的镜像可以直接通过docker compose启动并正常使用,但只能在amd64架构的机器上,而且这个镜像似乎并不是它源码中的dockerfile直接生成的。
因为我需要在arm64的架构上运行docker image,所以准备重建镜像,但是发现并不能够建立和「ghcr.io/umami-software/umami:mysql-latest」一样的镜像。大佬知道怎么搞么?
在构建命令后面加`--build-arg DATABASE_TYPE=mysql`这个参数试试
或者直接把Dockerfile这个地方手动指定为mysql,`ENV DATABASE_TYPE mysql`
https://github.com/umami-software/umami/blob/ab4a60f81498faa026190ed10d9389f96fecc89e/Dockerfile#L18