您想在 Fastpanel VPS 上运行 Supabase(Firebase 替代品),但遇到 8000/3000 端口冲突错误?本文详细指导使用 Docker 部署 Supabase,为 API 和 Studio Dashboard 分离域名,使系统运行最稳定。.
Supabase 是 Firebase 的优秀开源替代方案。然而,在已安装控制面板(例如 Fastpanel、CyberPanel…)的 VPS 上自托管(Self-host)Supabase 通常会遇到许多困难,特别是 反向代理 和 端口冲突(Port Conflict).
默认情况下,Supabase 使用端口 8000 用于 API Gateway,此端口通常被其他服务(如 Portainer 或默认 Nginx)占用。此外,管理仪表板(Supabase Studio)在端口 3000 隐秘运行,需要正确配置才能访问。.
在本文中,, DPS 媒体 将分享在 Ubuntu 24.04 上使用 Fastpanel 部署 Supabase 的经验,采用自定义端口配置: API 运行端口 8008 和 Studio 运行端口 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 个重要更改:
- 为 Studio(界面)打开端口: 查找 service
工作室, 添加部分端口将 VPS 的 3003 端口映射到容器的 3000 端口。. - 更改 Kong (API) 的端口: 查找 service
kong, 将映射端口改为 8008。.
修改后的代码段将如下所示:
YAML
services:
studio:
image: supabase/studio:2025...
# ... 其他配置保持不变
ports:
- "3003:3000" # 映射主机 3003 -> 容器 3000
kong:
image: kong:2.8.1
# ... 其他配置保持不变
ports:
- "8008:8000/tcp" # 映射主机 8008 -> 容器 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)
- 创建新站点: 反向代理.
- 域名:
studio.domain.com. - 上游:
http://127.0.0.1:3003. - 极其重要: 进入 Settings -> Static Content -> 关闭 行 “Use NGINX for static files”.
- 安装 SSL Let’s Encrypt。.
页面 2:API 后端(Supabase)
- 创建新站点: 反向代理.
- 域名:
spb.domain.com. - 上游:
http://127.0.0.1:8008. - 也 关闭 行 “Use NGINX for static files”.
- 安装 SSL Let’s Encrypt。.
(注意:页面 spb 直接访问时会报 404 Not Found 错误,这是正常的,因为 API Gateway 没有界面)。.
7. 结果 & 登录
现在您访问: https://studio.domain.com
- 使用账号登录:
supabase/ 您在设置中的密码.env.
开发连接参数:
- 项目 URL:
https://spb.domain.com - 匿名/服务密钥: 在 Dashboard(Settings -> API)中获取。.
总结
分离 Studio (端口 3003) 和 API (端口 8008) 帮助 Supabase 系统在 Fastpanel 上顺畅运行,而不干扰其他默认服务。希望这个指南能帮助你自主掌控强大的 Backend 基础设施。.
来源: dps.media
