- Published on
升级在 Docker 上部署的 Umami
- Authors
- 作者
- 老麦
前言
使用 Umami 已经有一段时间了,作为普通的个人站点来,这样的统计外挂程式其实已经足够了。
我是使用 Docker 来安装 Umami 的,当时安装的版本是 1.4,使用期间后台有过版本的升级提示。但我个人比较懒,并且认为既然能稳定在跑就没有必要升级这样子。直到今天,宿主机上另一个容器需要升级,借此机会决定顺便将 Umami 的版本从 V1 升级到 V2。
升级
由于架构不同,因此 V1 中的数据要转换成适配 V2 的数据。官方有提供一个脚本 @umami/migrate-v1-v2
来让我们进行转换。
升级方法以 Docker 部署为例:
- 进入正在运行的旧版本的 Umami 容器里;
# 查看正在运行的容器
docker ps -a
# 进入旧版本的 Umami 容器
docker exec -it -u 0 容器ID sh
- 在容器内部使用转换脚本;
转换演示:
/app # npx @umami/migrate-v1-v2@latest
Need to install the following packages:
@umami/migrate-v1-v2@0.15.0
Ok to proceed? (y) y
Running v0.15.0
✓ DATABASE_URL is defined.
✓ Database connection successful.
Preparing v1 tables for migration
✓ Dropped v1 database keys.
✓ Dropped v1 database indexes.
✓ Renamed v1 database tables.
✓ Database v1 tables ready for migration.
Database v2 tables not found.
Adding v2 tables...
✓ Ran sql file /db/postgresql/migrations/01_init/migration.sql.
Prisma schema loaded from prisma/schema.prisma
Datasource "db": PostgreSQL database "umami", schema "public" at "db:5432"
Migration 01_init marked as applied.
✓ Database is ready for migration.
✓ Starting v2 data migration. Please do no cancel this process, it may take a while.
✓ Ran sql file /db/postgresql/data-migration-v2.sql.
✓ Data migration from V1 to V2 tables completed.
✔ Do you want to delete V1 database tables? (Y/N) … n
✓ Migration successfully completed.
npm notice
npm notice New major version of npm available! 8.19.3 -> 9.8.1
npm notice Changelog: https://github.com/npm/cli/releases/tag/v9.8.1
npm notice Run npm install -g npm@9.8.1 to update!
npm notice
/app # exit
- 停掉正在启动的容器(旧版本的 Umami);
docker compose down
- 编辑 docker-compose.yml 文件;
---
version: '3'
services:
umami:
image: docker.umami.dev/umami-software/umami:postgresql-latest
ports:
- "3000:3000"
environment:
DATABASE_URL: postgresql://umami:umami@db:5432/umami
DATABASE_TYPE: postgresql
TRACKER_SCRIPT_NAME: laomai.js
HASH_SALT: replace-me-with-a-random-string
depends_on:
- db
restart: always
db:
image: postgres:12-alpine
environment:
POSTGRES_DB: umami
POSTGRES_USER: umami # 数据库用户
POSTGRES_PASSWORD: umami # 数据库密码
volumes:
- ./sql/schema.postgresql.sql:/docker-entrypoint-initdb.d/schema.postgresql.sql:ro
- ./umami-db-data:/var/lib/postgresql/data
restart: always
要修改的地方只有一处,新版本的 TRACKER_SCRIPT_NAME
变量不再自动添加 .js
后缀。至于为什么要自定义跟踪器脚本的名字?原因很简单,Umami 默认的跟踪器脚本已经被大部分的广告插件给屏蔽了,不更改的话就统计不了访问的信息。
- 拉取新版本的镜像;
docker compose pull
- 启动新版本 Umami;
docker compose up --force-recreate
在后台运行:
docker compose up -d
扩展
如果你和我一样将 Umami 部署在国外的一些免费容器服务上,速度相对不够稳定。这时可以通过以下方法进行配置,将跟踪脚本文件放置在访问速度快且稳定的主机或者 CDN 上(实在不行就找朋友帮忙托管一下下)。
接下来就可以按照官方给出的配置进行个性即可,例:
<script async defer
src="https://sdn.qylao.com/laomai.js"
data-website-id="85a9edfb-5859-4f66-8a28-f7f8548a80b3"
data-host-url="https://umami.laomai.org"
data-domains="laomai.org"
></script>
更多配置可查阅官方文档, https://umami.is/docs/tracker-configuration
最后
其实要不是正好宿主机上有别的容器要升级,我也不会主动去升级这个 Umami,毕竟就我个人而言,升级前升级后的体验是一样的。我明确知道自己使用 Umami 的目的是什么,旧版本其实就已经满足我的使用需求了。
当然啦,还是回到那个根本原因里,因为我懒。新版本肯定是好的啊,重构后带来的提升还是很大的。
最后希望大家,折腾得快乐,快乐地折腾。