通过 Docker 自托管 Supabase

内容纲要

Supabase 是一个开源的 Firebase 替代品,提供了数据库、身份验证、存储等后端功能。通过 Docker,我们可以轻松地在本地或私有服务器上部署 Supabase,完全掌控数据和服务配置。本文将带您一步步实现 Supabase 的 Docker 自托管,并分享如何将其无缝集成到您的开发流程中。

准备工作

首先,确保你的系统已安装 Docker 和 Docker Compose。然后,克隆 Supabase 的官方仓库:

# 克隆 Supabase 仓库
git clone --depth 1 https://github.com/supabase/supabase

配置环境

进入 Supabase 的 Docker 目录,并复制示例环境文件:

# 进入docker目录
cd supabase/docker

# 复制示例环境文件
cp .env.example .env

# 编辑配置文件(按需修改)
nano .env

接下来,编辑 .env 文件以配置环境变量。关键配置项:

# 数据库配置
POSTGRES_PASSWORD=your_strong_password  # 设置一个强密码

# JWT 配置
JWT_SECRET=your_jwt_secret_key  # 设置一个安全的 JWT 密钥

# API 密钥配置
ANON_KEY=  # 匿名访问密钥
SERVICE_ROLE_KEY=  # 服务角色密钥

# Dashboard 配置
DASHBOARD_USERNAME=supabase  # Dashboard 用户名
DASHBOARD_PASSWORD=  # Dashboard 密码

# 服务 URL 配置
SITE_URL=http://localhost:3000  # Supabase Studio 地址
API_EXTERNAL_URL=http://localhost:8000  # API 外部访问地址

# 邮件认证配置
ENABLE_EMAIL_SIGNUP=true  # 启用邮件注册
ENABLE_EMAIL_AUTOCONFIRM=false  # 禁用自动确认邮件
SMTP_ADMIN_EMAIL=  # 管理员邮箱
SMTP_HOST=smtp.feishu.cn  # SMTP 服务器地址
SMTP_PORT=465  # SMTP 端口
SMTP_USER=  # SMTP 用户名
SMTP_PASS=  # SMTP 密码
SMTP_SENDER_NAME=  # 发件人名称

# 其他配置
ENABLE_ANONYMOUS_USERS=false  # 禁用匿名用户
SUPABASE_PUBLIC_URL=http://localhost:8000  # Supabase 公共 URL
OPENAI_API_KEY=  # OpenAI API 密钥(可选)

POOLER_TENANT_ID=your-tenant-id

启动服务

配置完成后,可以通过以下命令启动 Supabase 服务:

cd supabase/docker

# 使用自动初始化脚本(首次运行)
docker compose -f docker-compose.yml up

# 或手动初始化(推荐生产环境)
docker compose pull
docker compose up -d
  • 自动初始化脚本:适合首次运行,会自动拉取镜像并启动服务。
  • 手动初始化:推荐用于生产环境,先拉取镜像再启动服务,确保稳定性。
    所有服务启动后,您可以看到它们在后台运行:

    
    docker compose ps

所有服务都应有状态running (healthy)。如果您看到的状态为created但不是running,请尝试使用 手动启动该服务docker compose start 。

## 验证服务
访问以下端点确认运行状态:
API: http://localhost:8000/rest/v1/
Studio: http://localhost:8000
Auth: http://localhost:8000/auth/v1/