使用 Supabase 免费部署 PostgreSQL 数据库
- 本教程相较于 Neon 数据库部署,需要一定的动手能力
- 若使用 Supabase 数据库部署,则请参照本教程的后半部分在 Vercel 上部署 Umami,而不是使用 使用 Vercel 免费部署自托管 Umami 教程中的方案
本教程为 使用 Vercel 免费部署自托管 Umami 的一部分,默认你已经注册过 Vercel 账号
1. 部署 PostgreSQL 数据库
- 登录 Vercel 仪表盘,在左边导航栏点击 Storage

- 点击 Create Database,选择 Supabase,点击 Continue

这里可能会要求同意用户协议,阅读后同意即可下一步
- 选择一个地区,下方保持默认的免费方案就好,点击 Continue
地区推荐选择 Tokyo, Japan (Northeast) Hnd1,地理位置上距离中国大陆最近。
请记住这个地区,后续部署 Umami 的时候可以选择相同/相近的地区以提高数据库响应速度。

- 为你的数据库取一个好记的名字,比如
umami,点击 Continue

- 点击 Done 以完成数据库部署
注意!从这里开始与 Neon 平台的教程存在差异!
- 回到 Vercel 仪表板的 Storage 页面,点开刚刚创建的数据库

- 在数据库页面点击 Open in Supabase

- 在左侧导航栏选择 Database

- 在左侧菜单栏的
CONFIGURATION下选择 Settings,注意不是“Project Settings”

- 下滑在
SSL configuration中找到 SSL Certificate,点击右边的 Download certificate,下载 SSL 证书,保存好,在接下来的部署中会用到

(可选)可以顺手开启上面的 Enforce SSL on incoming connections,提高安全性
2. 在 Vercel 上部署 Umami
-
将 https://github.com/umami-software/umami 项目 Fork 到你的 GitHub 帐户
-
在你 Fork 的仓库中,找到
prisma/schema.prisma这个文件,添加directUrl = env("DIRECT_DATABASE_URL")并提交
6 collapsed lines
generator client { provider = "prisma-client" output = "../src/generated/prisma" engineType = "client"}
datasource db { provider = "postgresql" url = env("DATABASE_URL")
directUrl = env("DIRECT_DATABASE_URL") relationMode = "prisma"}...请确保 prisma/schema.prisma 路径正确!至本文截稿时官网文档给出的仍然是错误的路径
-
在 Vercel 仪表板页面上点击导入项目,然后指定你在 GitHub 上 Fork 的项目 URL,连按确定继续,等待自动部署完成
-
回到 Vercel 仪表盘,前往 Storage → <你的数据库名>,找到
POSTGRES_PRISMA_URL和POSTGRES_URL_NON_POOLING并分别复制等号右边的值(记得在右边点开Show secret显示明文) -
打开你的 Umami 项目,在 Settings → Environment Variables → Add Environment Variable 填入两个环境变量:
- Key 填写
DATABASE_URL,Value 粘贴POSTGRES_PRISMA_URL等号右边的值 - Key 填写
DIRECT_DATABASE_URL,Value 粘贴POSTGRES_URL_NON_POOLING等号右边的值
按 Save 保存
- Key 填写

-
保存后 Vercel 会弹窗提示你重新部署,在弹出的窗口中点击 Redeploy 确认即可

右下角的蓝色弹窗,点击 Redeplay 
在新窗口中点击 Redeplay 确认部署
POSTGRES_PRISMA_URL的形式为:postgres://[db-user].[project-ref]:[db-password]@aws-0-[aws-region].pooler.supabase.com:6543/[db-name]?pgbouncer=true&connection_limit=1DIRECT_DATABASE_URL的形式为:postgres://postgres.[my-supabase-project-id]:[db-password]@aws-0-[aws-region].pooler.supabase.com:5432/postgres
- 完成!接下来的步骤和 Neon 平台一样了!请 接着这篇教程继续吧
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!