Bạn muốn chạy Supabase (Firebase Alternative) trên VPS Fastpanel nhưng gặp lỗi xung đột cổng 8000/3000? Bài viết này hướng dẫn chi tiết cách deploy Supabase với Docker, tách riêng domain cho API và Studio Dashboard để hệ thống hoạt động ổn định nhất.
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 đề Reverse Proxy và Xung đột cổng (Port Conflict).
Mặc định, Supabase sử dụng cổng 8000 cho API Gateway, cổng này thường bị tranh chấp bởi các dịch vụ khác (như Portainer hoặc Nginx mặc định). Ngoài ra, Dashboard quản trị (Supabase Studio) chạy ẩn ở cổng 3000 và cần được cấu hình đúng cách mới truy cập được.
Trong bài viết này, DPS Media sẽ chia sẻ kinh nghiệm triển khai Supabase trên Ubuntu 24.04 sử dụng Fastpanel, với cấu hình tùy chỉnh cổng: API chạy port 8008 và Studio chạy port 3003.
1. Chuẩn bị tài nguyên
- VPS: Ubuntu 22.04 hoặc 24.04 (Khuyên dùng tối thiểu 4GB RAM).
- Fastpanel: Đã được cài đặt sẵn.
- Docker & Portainer: Đã cài đặt (Xem bài hướng dẫn trước).
- Tên miền: Bạn cần chuẩn bị 2 subdomain:
studio.domain.com: Dùng cho giao diện quản lý.spb.domain.com: Dùng cho API backend.
2. Tải mã nguồn Supabase
Truy cập SSH vào VPS với quyền root và tải bộ deploy Docker của Supabase:
Bash
# Di chuyển đến thư mục làm việc
cd /opt
# Tải source code từ Github
git clone --depth 1 https://github.com/supabase/supabase
# Vào thư mục chứa cấu hình Docker
cd supabase/docker
3. Cấu hình Docker Compose (Tránh trùng Port)
Đây là bước quan trọng nhất. Chúng ta sẽ không dùng cổng mặc định (8000) để tránh xung đột với Portainer hay các service khác.
Mở file docker-compose.yml:
Bash
nano docker-compose.yml
Thực hiện 2 thay đổi quan trọng:
- Mở cổng cho Studio (Giao diện): Tìm service
studio, thêm phầnportsđể map cổng 3003 của VPS vào cổng 3000 của container. - Đổi cổng cho Kong (API): Tìm service
kong, sửa map port thành 8008.
Đoạn code sửa đổi sẽ trông như sau:
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. Cấu hình biến môi trường (.env)
Copy file mẫu và chỉnh sửa:
Bash
cp .env.example .env
nano .env
Bạn cần điền các mật khẩu mạnh (Database, JWT Secret) và quan trọng nhất là cấu hình URL cho khớp với 2 subdomain đã chuẩn bị.
Các thông số bắt buộc sửa:
Bash
# 1. Bảo mật (Tự tạo chuỗi ngẫu nhiên mạnh)
POSTGRES_PASSWORD=MatKhauDbCucManh!!!
JWT_SECRET=Chuoi_JWT_Bi_Mat_Dai_It_Nhat_32_Ky_Tu
DASHBOARD_PASSWORD=MatKhauDangNhapWeb!!!
# 2. Cấu hình Port API (Phải khớp với file yml ở trên)
KONG_HTTP_PORT=8008
# 3. Cấu hình Domain (Quan trọng)
# SITE_URL: Là địa chỉ truy cập Giao diện Studio
SITE_URL=https://studio.domain.com
# SUPABASE_PUBLIC_URL: Là địa chỉ API (Studio sẽ gọi vào link này để lấy data)
# LƯU Ý: Phải điền domain API, KHÔNG điền domain Studio
SUPABASE_PUBLIC_URL=https://spb.domain.com
# API Auth: Cũng trỏ về domain API
API_EXTERNAL_URL=https://spb.domain.com
# Redirect URL: Thêm cả domain studio vào để login xong quay về đúng chỗ
ADDITIONAL_REDIRECT_URLS=https://studio.domain.com,https://spb.domain.com
5. Khởi chạy Supabase
Sau khi cấu hình xong, chạy lệnh sau để Docker tải và dựng hệ thống:
Bash
docker compose up -d
Lưu ý: Quá trình này có thể mất 5-10 phút để tải khoảng 1GB images.
6. Cấu hình Reverse Proxy trên Fastpanel
Để truy cập được web mà không cần gõ IP:3003, ta dùng tính năng Proxy của Fastpanel.
Trang 1: Giao diện quản lý (Studio)
- Tạo site mới: Reverse Proxy.
- Domain:
studio.domain.com. - Upstream:
http://127.0.0.1:3003. - Cực kỳ quan trọng: Vào Settings -> Static Content -> TẮT dòng “Use NGINX for static files”.
- Cài SSL Let’s Encrypt.
Trang 2: API Backend (Supabase)
- Tạo site mới: Reverse Proxy.
- Domain:
spb.domain.com. - Upstream:
http://127.0.0.1:8008. - Cũng TẮT dòng “Use NGINX for static files”.
- Cài SSL Let’s Encrypt.
(Lưu ý: Trang spb khi truy cập trực tiếp sẽ báo lỗi 404 Not Found, điều này là bình thường vì API Gateway không có giao diện).
7. Kết quả & Đăng nhập
Bây giờ bạn truy cập vào: https://studio.domain.com
- Đăng nhập bằng tài khoản:
supabase/ Mật khẩu bạn đã đặt trong.env.
Thông số kết nối cho Dev:
- Project URL:
https://spb.domain.com - Anon/Service Key: Lấy trong Dashboard (Settings -> API).
Kết luận
Việc tách biệt Studio (Port 3003) và API (Port 8008) giúp hệ thống Supabase hoạt động mượt mà trên Fastpanel mà không can thiệp vào các dịch vụ mặc định khác. Hy vọng hướng dẫn này giúp bạn tự chủ được hạ tầng Backend mạnh mẽ của mình.
Nguồn: dps.media

