您想在 Fastpanel VPS 上运行 Supabase(Firebase 替代品),但遇到 8000/3000 端口冲突错误?本文详细指导使用 Docker 部署 Supabase,为 API 和 Studio Dashboard 分离域名,使系统运行最稳定。.

Supabase là một giải pháp thay thế mã nguồn mở tuyệt vời cho Firebase. Tuy nhiên, việc tự host (Self-host) Supabase trên một VPS đã cài sẵn Control Panel (như Fastpanel, CyberPanel…) thường gặp nhiều khó khăn, đặc biệt là vấn đề 反向代理端口冲突(Port Conflict).

默认情况下,Supabase 使用端口 8000 用于 API Gateway,此端口通常被其他服务(如 Portainer 或默认 Nginx)占用。此外,管理仪表板(Supabase Studio)在端口 3000 隐秘运行,需要正确配置才能访问。.

在本文中,, DPS 媒体 将分享在 Ubuntu 24.04 上使用 Fastpanel 部署 Supabase 的经验,采用自定义端口配置: API 运行端口 8008Studio 运行端口 3003.

1. 准备资源

  • VPS: Ubuntu 22.04 或 24.04(建议至少 4GB RAM)。.
  • Fastpanel: 已预装。.
  • Docker & Portainer: 已安装(查看前面的指南)。.
  • 域名: 您需要准备 2 个子域名:
    • studio.domain.com: 用于管理界面。.
    • spb.domain.com: 用于 API 后端。.

2. 下载 Supabase 源代码

使用 root 权限 SSH 访问 VPS 并下载 Supabase 的 Docker 部署包:

Bash

# 移动到工作目录
cd /opt

# 从 Github 下载源代码
git clone --depth 1 https://github.com/supabase/supabase

# 进入 Docker 配置目录
cd supabase/docker

3. 配置 Docker Compose(避免端口冲突)

这是最重要的一步。我们将不使用默认端口 (8000) 以避免与 Portainer 或其他服务冲突。.

打开文件 docker-compose.yml:

Bash

nano docker-compose.yml

进行 2 个重要更改:

  1. 为 Studio(界面)打开端口: 查找 service 工作室, 添加部分 端口 将 VPS 的 3003 端口映射到容器的 3000 端口。.
  2. 更改 Kong (API) 的端口: 查找 service kong, 将映射端口改为 8008。.

修改后的代码段将如下所示:

YAML

services:
  studio:
    image: supabase/studio:2025...
    # ... các config khác giữ nguyên
    ports:
      - "3003:3000"  # Map Host 3003 -> Container 3000

  kong:
    image: kong:2.8.1
    # ... các config khác giữ nguyên
    ports:
      - "8008:8000/tcp" # Map Host 8008 -> Container 8000 (API)
      - "${KONG_HTTPS_PORT}:8443/tcp"

4. 配置环境变量(.env)

复制示例文件并编辑:

Bash

cp .env.example .env
nano .env

您需要填写强密码(数据库、JWT 密钥),最重要的是配置 URL 以匹配已准备的 2 个子域名。.

必须修改的参数:

Bash

# 1. 安全(自生成强随机字符串)
POSTGRES_PASSWORD=MatKhauDbCucManh!!!
JWT_SECRET=Chuoi_JWT_Bi_Mat_Dai_It_Nhat_32_Ky_Tu
DASHBOARD_PASSWORD=MatKhauDangNhapWeb!!!

# 2. API 端口配置(必须与上面的 yml 文件匹配)
KONG_HTTP_PORT=8008

# 3. 域名配置(重要)
# SITE_URL: 是访问 Studio 界面的地址
SITE_URL=https://studio.domain.com

# SUPABASE_PUBLIC_URL: 是 API 地址(Studio 将调用此链接获取数据)
# 注意:必须填写 API 域名,不要填写 Studio 域名
SUPABASE_PUBLIC_URL=https://spb.domain.com

# API Auth: 也指向 API 域名
API_EXTERNAL_URL=https://spb.domain.com

# 重定向 URL: 添加 studio 域名,以便登录后返回正确位置
ADDITIONAL_REDIRECT_URLS=https://studio.domain.com,https://spb.domain.com

5. 启动 Supabase

配置完成后,运行以下命令让 Docker 下载并构建系统:

Bash

docker compose up -d

注意:此过程可能需要 5-10 分钟下载约 1GB 镜像。.

6. 在 Fastpanel 上配置反向代理

要访问网页而无需输入 IP:3003, 我们使用 Fastpanel 的 Proxy 功能。.

页面 1:管理界面(Studio)

  1. 创建新站点: 反向代理.
  2. 域名: studio.domain.com.
  3. 上游: http://127.0.0.1:3003.
  4. 极其重要: 进入 Settings -> Static Content -> 关闭“Use NGINX for static files”.
  5. Cài SSL Let’s Encrypt.

页面 2:API 后端(Supabase)

  1. 创建新站点: 反向代理.
  2. 域名: spb.domain.com.
  3. 上游: http://127.0.0.1:8008.
  4. 关闭“Use NGINX for static files”.
  5. Cài SSL Let’s Encrypt.

(注意:页面 spb 直接访问时会报 404 Not Found 错误,这是正常的,因为 API Gateway 没有界面)。.

7. Kết quả & Đăng nhập

现在您访问: https://studio.domain.com

  • 使用账号登录: supabase / 您在设置中的密码 .env.

开发连接参数:

  • 项目 URL: https://spb.domain.com
  • 匿名/服务密钥: 在 Dashboard(Settings -> API)中获取。.

总结

分离 Studio (端口 3003)API (端口 8008) 帮助 Supabase 系统在 Fastpanel 上顺畅运行,而不干扰其他默认服务。希望这个指南能帮助你自主掌控强大的 Backend 基础设施。.


来源: dps.media

DPS.MEDIA