0%

手把手自建Supabase服务-墙内


Supabase作为开源的后端即服务(BaaS)平台,支持开发者快速构建应用,同时提供灵活的自建部署选项。

alt text

alt text

本文将基于官方Docker部署教程,结合实践经验,详细说明自部署流程与注意事项。

环境准备

  • 安装Docker与Docker Compose
    确保系统已安装Docker及Docker Compose工具。
1
2
docker --version
docker compose version
  • 生成安全密钥
    访问Supabase密钥生成页面,生成以下密钥并保存至安全位置:

    • JWT_SECRET
    • ANON_KEY
    • SERVICE_ROLE_KEY
  • 部署步骤

    • 克隆Supabase代码库
    1
    2
    git clone --depth 1 https://github.com/supabase/supabase
    cd supabase/docker
    • 配置环境变量
      复制示例配置文件并编辑, 将生成安全密钥步骤下生成的密钥,copy到.env文件中对应的位置。
    1
    2
    cp .env.example .env
    vi .env
    • 拉取Docker镜像
      这里推荐墙内镜像地址:dytt.online
    1
    docker compose pull
    • ​启动Supabase服务
    1
    docker compose up -d

    服务启动后,通过docker compose ps检查容器状态,确认所有服务正常运行。

    1
    docker ps
    • ​访问管理界面
      • ​Studio:http://localhost:8000(默认账号:supabase,密码见.env文件)
      • Logflare界面: http://localhost:4000

核心服务

服务名称 功能描述 访问端口
supabase-db PostgreSQL数据库 5432
supabase-auth 用户身份认证 3000
supabase-studio 管理控制台 8000
supabase-analytics Logflare控制台 4000

关闭与卸载

  • 停止服务
1
docker compose down
  • 彻底清理
1
2
docker system prune -a
rm -rf .supabase

一些常见问题

  • VAULT_ENC_KEY字段长度问题:https://github.com/orgs/supabase/discussions/33119
    • 必须32位,而不是32-chars-min
    • 已提交issus
  • 如果supabase-analytics服务一直在重启,则查看容器日志。
1
docker logs --details supabase-analytics

若提示数据库账号密码验证失败,则需要进入supabase-db容器,给每个pgSQL账号设置密码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
docker exec -it supabase-db /bin/bash

# 进入容器后
psql -U postgres -W
# 输入默认密码,比如:postgres
# 进入后查看用户列表
SELECT rolname,rolpassword FROM pg_authid;

# 修改用户密码
ALTER USER supabase_admin WITH PASSWORD 'postgres';
ALTER USER supabase_auth_admin WITH PASSWORD 'postgres';
ALTER USER supabase_storage_admin WITH PASSWORD 'postgres';
...

修改完成后重启容器, 然后访问http://localhost:8000

1
2
3
docker compose down
docker compose up -d

资料参考

  • 官方教程: Self-Hosting with Docker
  • 74.1k!Star分分钟搭建百万用户在线系统?Supabase 帮你轻松实现!
  • 如何使用Docker配置和部署Supabase