Supabase 开源 Firebase 替代方案部署教程

Supabase 是一款开源的 Firebase 替代方案,基于 PostgreSQL 构建,提供数据库、认证、实时订阅、文件存储和 Edge Functions 等完整的后端服务。与 Firebase 不同的是,Supabase 使用标准的 SQL 数据库而非 NoSQL,让你既能享受 BaaS 的便利,又能利用 PostgreSQL 的强大功能。本文将介绍如何在搬瓦工 VPS 上自托管 Supabase。部署前请确保已安装好 Docker 和 Docker Compose

一、系统要求

  • 操作系统:Ubuntu 20.04+ 或 Debian 11+。
  • 内存:至少 2GB,建议 4GB 以上(Supabase 运行多个服务)。
  • 磁盘:至少 20GB 可用空间。
  • CPU:至少 2 核心。
  • 域名:建议绑定域名并配置 SSL。

二、获取 Supabase 项目文件

从 Supabase 官方 GitHub 仓库克隆 Docker 配置:

git clone --depth 1 https://github.com/supabase/supabase /opt/supabase
cd /opt/supabase/docker

复制环境变量模板:

cp .env.example .env

三、配置环境变量

编辑 .env 文件,修改以下关键配置。首先生成必要的密钥:

# 生成 JWT Secret
openssl rand -hex 32

# 生成 Anon Key 和 Service Role Key(需要使用 JWT 工具)
# 可以使用在线工具或 CLI 生成

修改 .env 中的核心配置项:

# 数据库密码(务必修改)
POSTGRES_PASSWORD=your_strong_password

# JWT 密钥
JWT_SECRET=your-jwt-secret-at-least-32-characters

# API 密钥
ANON_KEY=your-anon-key
SERVICE_ROLE_KEY=your-service-role-key

# 站点 URL
SITE_URL=https://supabase.yourdomain.com
API_EXTERNAL_URL=https://supabase.yourdomain.com

# SMTP 配置(用于邮件认证)
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_USER=your-email@example.com
SMTP_PASS=your-smtp-password
SMTP_SENDER_NAME=Supabase
SMTP_ADMIN_EMAIL=admin@example.com

四、启动 Supabase

cd /opt/supabase/docker
docker compose up -d

Supabase 会启动以下核心服务:

  • PostgreSQL:主数据库。
  • GoTrue:认证服务。
  • PostgREST:自动生成 REST API。
  • Realtime:实时数据订阅。
  • Storage:文件存储服务。
  • Kong:API 网关。
  • Studio:管理控制台。

查看服务状态:

docker compose ps

五、配置 Nginx 反向代理

Supabase Studio 默认运行在 3000 端口,API 通过 Kong 网关在 8000 端口提供。配置 Nginx:

apt install nginx certbot python3-certbot-nginx -y

cat > /etc/nginx/sites-available/supabase <<'EOF'
server {
    listen 80;
    server_name supabase.yourdomain.com;

    client_max_body_size 100M;

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}
EOF

ln -s /etc/nginx/sites-available/supabase /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
certbot --nginx -d supabase.yourdomain.com

六、访问 Supabase Studio

Supabase Studio 是一个功能丰富的管理控制台。访问 http://your-server-ip:3000 或配置好域名后通过域名访问。Studio 提供以下功能:

  • 表编辑器:可视化管理数据库表结构和数据。
  • SQL 编辑器:直接执行 SQL 查询。
  • 认证管理:查看和管理用户。
  • 存储管理:管理文件和存储桶。
  • API 文档:自动生成的 API 文档。

七、客户端连接示例

使用 JavaScript 客户端连接 Supabase:

# 安装客户端库
npm install @supabase/supabase-js

初始化并使用:

import { createClient } from '@supabase/supabase-js'

const supabase = createClient(
  'https://supabase.yourdomain.com',
  'your-anon-key'
)

// 查询数据
const { data, error } = await supabase
  .from('posts')
  .select('*')
  .order('created_at', { ascending: false })

八、数据库管理

Supabase 基于 PostgreSQL,你可以使用任何 PostgreSQL 客户端直接连接数据库进行管理:

# 通过 Docker 连接数据库
docker exec -it supabase-db psql -U postgres

# 或使用外部客户端(需在 .env 中开放端口)
psql -h your-server-ip -p 5432 -U postgres

Supabase 还支持 Row Level Security(RLS)策略,可以在数据库层面实现细粒度的访问控制。

九、数据备份与恢复

# 备份数据库
docker exec supabase-db pg_dump -U postgres > /opt/supabase/backup_$(date +%Y%m%d).sql

# 恢复数据库
cat backup_file.sql | docker exec -i supabase-db psql -U postgres

建议设置定期自动备份:

cat > /opt/supabase/backup.sh <<'EOF'
#!/bin/bash
BACKUP_DIR="/opt/supabase/backups"
mkdir -p $BACKUP_DIR
DATE=$(date +%Y%m%d_%H%M%S)
docker exec supabase-db pg_dump -U postgres > $BACKUP_DIR/supabase_$DATE.sql
gzip $BACKUP_DIR/supabase_$DATE.sql
find $BACKUP_DIR -name "*.gz" -mtime +14 -delete
EOF
chmod +x /opt/supabase/backup.sh
echo "0 2 * * * /opt/supabase/backup.sh" | crontab -

十、常见问题

Studio 无法连接 API

检查 .env 中的 API_EXTERNAL_URL 是否正确配置为可访问的域名或 IP 地址。

实时订阅不工作

确保 Nginx 反向代理配置中包含 WebSocket 升级头,并且 Realtime 服务容器正常运行:

docker compose logs realtime

内存占用高

Supabase 默认配置适合生产环境,如果 VPS 内存有限,可以调整 PostgreSQL 的内存参数。在 volumes/db/postgresql.conf 中修改:

shared_buffers = 256MB
effective_cache_size = 512MB
work_mem = 4MB

总结

Supabase 是一个功能强大的开源 Firebase 替代方案,以 PostgreSQL 为核心提供完整的后端服务。自托管 Supabase 可以让你完全掌控数据,同时享受云服务般的开发体验。建议选择内存 4GB 以上的搬瓦工方案来运行 Supabase。更多教程请参考:Appwrite 部署PocketBase 部署Directus 部署。选购搬瓦工 VPS 请参考全部方案,购买时使用优惠码 NODESEEK2026 可享受 6.77% 的循环折扣。

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。