自托管Supabase:如何通过Node.js与Prisma连接及迁移应用
自托管Supabase的数据库URI查找与应用迁移指南
一、找到自托管Supabase的数据库URI
有两个实用途径:
- 查看部署配置文件:你部署Supabase时用到的
.env文件(或docker-compose.yml里的环境变量)中,POSTGRES_URL就是Prisma需要的完整DB URI,格式大致为postgresql://<用户名>:<密码>@<主机>:<端口>/<数据库名>?schema=<schema>。如果是Docker部署,默认用户名是postgres,密码是你部署时设置的POSTGRES_PASSWORD,本地应用连接的话主机填localhost,端口默认5432,数据库名postgres,schema默认public。 - 通过Supabase控制台查看:登录你的
<ip-address>:3000控制台,进入设置→数据库页面,里面会直接显示数据库的连接URI,要是已经配置了自定义域名,记得把主机部分换成你的域名或者虚拟机IP。
二、从在线版Supabase迁移到自托管版本的流程
按以下步骤操作:
- 导出在线版数据库数据
- 登录在线Supabase控制台,进入设置→数据库→备份,下载最新的SQL备份文件;也可以用
pg_dump命令导出:pg_dump "postgres://<在线版DB URI>" -f supabase-backup.sql
- 登录在线Supabase控制台,进入设置→数据库→备份,下载最新的SQL备份文件;也可以用
- 导入数据到自托管数据库
- 如果是Docker部署的自托管Supabase,先进入PostgreSQL容器:
docker exec -it <supabase-db容器名> bash - 用
docker cp把备份文件传到容器内,然后执行导入命令:psql -U postgres -d postgres -f /容器内的备份文件路径
- 如果是Docker部署的自托管Supabase,先进入PostgreSQL容器:
- 迁移存储桶数据(如果用了Supabase Storage)
- 在线版控制台进入存储,手动下载所有桶内的文件;或者用Supabase CLI的
supabase storage download命令批量导出 - 登录自托管控制台,创建和在线版同名的存储桶,上传导出的文件
- 在线版控制台进入存储,手动下载所有桶内的文件;或者用Supabase CLI的
- 更新Node.js应用配置
- 把Prisma的
DATABASE_URL替换成自托管的数据库URI - 如果用了Supabase Auth或Storage SDK,更新
supabaseUrl为你的自定义域名(或虚拟机IP加54321端口,自托管API默认端口是54321),supabaseKey换成自托管.env文件里的ANON_KEY
- 把Prisma的
- 测试应用核心功能
- 运行
npx prisma migrate deploy确保数据库结构和Prisma schema匹配 - 启动Node.js应用,测试数据库读写、用户登录、文件访问等功能,确认所有流程正常
- 运行
- 切换用户流量
- 确认自托管版本稳定后,把应用域名解析指向自托管虚拟机IP,逐步切换用户流量,完成迁移
内容的提问来源于stack exchange,提问作者Manas S. Roy
相关产品推荐
相关产品推荐

