之前搭建了一个V2版本的,一直没用起来,连接的数据库也被Supabase暂停了,一看更新的V3版本UI还挺好看的,就立刻更新了一下。
💡安装要求是: 服务器版本 Node.js 18.18 或更高。 Umami 支持 PostgreSQL(最低 v12.14)数据库。(V2版本还支持MYSQL来着)
用到的服务器和数据库是Vercel和Supabase,Umami版本是v3.0.3
新建终端运行:
1.安装 pnpm
npm install -g pnpm
2.获取源代码并安装包
git clone https://github.com/umami-software/umami.git
cd umami
pnpm install
💡Notes:如果clone时一直Operation timed out可以先试试这个查询👇🏻能不能成功,如果成功了再clone(🪜代理用全局模式)或从自己fork好的代码下载
git ls-remote https://github.com/umami-software/umami.git
3.配置Umami
在Umami目录下,创建一个包含以下内容的 .env 文件
DATABASE_URL={connection url}
这里的connection url配置成Supabase中的Connection String
🔗Supabase:https://supabase.com/ 在官网选择 Free 方案,进入 Create a new project 页面,按要求填写相关内容。Name 填写项目名
创建项目成功后,在顶部导航栏项目名称旁边有个按钮“Connect”,点击获取connection url
(找了半天这个在哪,之前在Project setting里,蓦然抬头,竟在这么明显的地方)😅

💡Notes:如果使用Vercel进行部署,Method这里选择Transaction pooler,能支持IPv4,否则Vercel部署时会超时或报错

4.构建应用程序
pnpm build
第一次运行构建时,它会在你的数据库中创建所有必要的数据库表。它还会创建一个登录账户,用户名为admin ,密码为 umami。
💡Notes:我在build时一直报错
> node scripts/build-geo.js
node:events:502
throw er; // Unhandled 'error' event
Node.js v22.13.1
ELIFECYCLE Command failed with exit code 1.
ERROR: "build-geo" exited with 1.
ELIFECYCLE Command failed with exit code 1.
报错发生在 build-geo 阶段,具体的错误是 ECONNREFUSED(连接被拒绝)。
scripts/build-geo.js 这个脚本的作用是尝试从网络下载 MaxMind 的 GeoIP 数据库(用于解析访客的地理位置信息)。由于国内网络环境的原因,连接下载地址(通常是 maxmind.com 或相关 CDN)经常会被阻断,或者网络代理设置有问题,导致无法下载。
💡解决方法:
方法一:直接禁用 Geo 构建(推荐,最快)
如果不介意暂时无法显示访客的精确城市信息(仍然会有国家信息),可以直接跳过这一步。
- 打开项目根目录下的
package.json文件。 - 搜索
"build-geo"。 - 将原本的:JSON
"build-geo": "node scripts/build-geo.js",修改为:"build-geo": "echo 'Skipping Geo Build'", - 保存文件。
- 再次运行:Bash
pnpm build
方法二:手动下载数据库文件(如果需要地理位置功能)
既然脚本无法自动下载,可以手动下载文件并放在正确的位置,然后让脚本不再下载。
- 手动下载文件
需要
GeoLite2-City.mmdb文件。- 下载地址:可以去 MaxMind 官网 (需要注册) 或者搜索 "GeoLite2-City.mmdb github" 找一个最近更新的下载。
- 为了方便,这里有一个 GitHub 上的常见镜像源(如果在国内访问 GitHub 慢,自备🪜):
- P3TERX/GeoLite.mmdb 项目 (下载
GeoLite2-City.mmdb)
- P3TERX/GeoLite.mmdb 项目 (下载
- 放置文件
在 Umami 项目根目录下,新建一个文件夹叫
geo,把文件放进去。 确保路径是:/Users/XXX/Documents/GitHub/umami/geo/GeoLite2-City.mmdb - 修改配置跳过下载
操作同方法一,修改
package.json中的"build-geo"命令为echo 'Skipping...'。 - 重新构建
运行
pnpm build。
5.运行应用程序
pnpm start
默认情况下,会在 http://localhost:3000 启动应用。需要以下一种 通过你的网页服务器请求代理,或者更改端口直接服务应用程序。
进入本地应用admin登录后(能登录成功就是数据库Supabase已经设置好了),点击侧边导航下拉菜单,然后点击设置 。

然后进入个人资料 ,点击更改密码按钮。

6.部署应用程序到Vercel
Vercel:https://vercel.com/ 登录 Vercel 之后,点击右上角 Add New Project,并导入事先 Fork 的项目仓库。在 Configure Project 中需要设置两个环境变量Environment Variables
分别添加
DATABASE_URL
HASH_SALTDATABASE_URL 是上一步在 Subabase 复制的 URL,替换自己的 Password;
HASH_SALT 需要自己随意生成一长串字符串。
最后点击Deploy进行部署。
💡Notes:如果第四步的 package.json
"build-geo": "echo 'Skipping Geo ...'",这个已经修改好了,Vercel部署时还是报错,检查报错原因:
ERROR: "check-db" exited with 1.
ELIFECYCLE Command failed with exit code 1.
这说明在跳过 build-geo 之后,构建流程卡在了上一步:check-db。
check-db 失败的原因通常是:Vercel 的构建服务器无法连接到你的数据库。
💡Notes:如果第五步的环境变量 DATABASE_URL 已经配的是IPv4的URL:
由于 check-db 只是为了验证连接,而 Vercel 环境和生产运行环境有时网络路由不同。你可以直接在构建阶段杀掉这个检查。
- 打开
package.json。 - 找到
"check-db"这一行:"check-db": "node scripts/check-db.js", - 修改为:
"check-db": "echo 'Skipping DB check during build'", - 保存并提交。
💡如果 Umami 服务部署在国外服务器(如 Vercel、AWS 等):国内用户访问 Umami 的统计脚本(script.js)时,可能会因网络延迟或防火墙策略导致加载缓慢或失败,从而影响数据上报。
参考了以下内容:
- Umami的安装文档
- Macin的博客文章
- Gemini(代码问题还得是Gemini老师)