Heyyy mọi người! Mình đang build một vài ứng dụng AI tích hợp với n8n, mình thấy combo này thật sự rất cần thiết. Nên bài này sẽ giải thích lý do, với hướng dẫn các bạn cách self-host Supabase chi tiết từ A-Z nhé!
Vấn đề mà Supabase giải quyết
Mình đã từng dùng Firebase, nhưng khi bắt đầu làm việc với AI embeddings, vector search, và automation workflows phức tạp với n8n, Firebase trở nên không phù hợp. Đó là lúc mình phát hiện Supabase – một nền tảng backend mã nguồn mở cực kỳ mạnh mẽ dựa trên PostgreSQL.
Tại sao Supabase cần thiết cho ứng dụng AI?
Vector search & AI embeddings
Khi bạn làm việc với các mô hình AI (OpenAI, Anthropic, v.v.), bạn sẽ cần lưu trữ embeddings (những vector đại diện cho dữ liệu). Supabase có hỗ trợ pgvector – một extension PostgreSQL cho phép bạn:
- Lưu trữ embeddings trực tiếp trong database
- Thực hiện vector search cực nhanh (similarity search)
- Kết hợp vector search với full-text search để có hybrid search - tìm kiếm vừa chính xác vừa liên quan
Ví dụ thực tế: Mình xây dựng một chatbot RAG (Retrieval-Augmented Generation). Khi user hỏi, mình convert câu hỏi thành embedding, rồi query Supabase để tìm documents tương tự nhất. Firebase không có tính năng này, phải sử dụng Pinecone bên ngoài – phức tạp và tốn thêm chi phí!
Scalability cho dữ liệu lớn
PostgreSQL của Supabase xử lý phức tạp join queries cực nhanh. Mình từng test performance – Supabase có thể 4x nhanh hơn Firebase cho các read/write phức tạp. Điều này cực kỳ quan trọng khi bạn xử lý hàng triệu embeddings từ mô hình AI.
Realtime features cho chatbots & recommendation systems
Supabase hỗ trợ realtime subscriptions – bạn có thể lắng nghe khi database thay đổi. Perfect cho các ứng dụng như:
- Chatbots cập nhật realtime
- Recommendation systems phản ứng tức thì
- Collaborative AI apps
Tại sao Supabase + n8n là một combo siêu mạnh?
1. Event-driven automation
n8n có thể trigger workflows dựa trên database events từ Supabase. Ví dụ:
- Khi có record mới được insert → tự động gọi AI API để xử lý → lưu kết quả lại vào Supabase
- Khi user upload file → trigger n8n workflow để chạy ML model → store results
2. Secure backend for workflows
Khi self-host Supabase + n8n, bạn kiểm soát toàn bộ dữ liệu. Không phải gửi sensitive data qua các cloud service bên thứ ba. Cực kỳ quan trọng cho enterprise apps.
Ví dụ: Mình có một workflow n8n chạy mỗi 5 phút để:
- Query Supabase lấy documents chưa được embed
- Gọi OpenAI để tạo embeddings
- Update Supabase với embeddings mới
- Khi user search → query vector store → trả kết quả tức thì
Tất cả happen locally, dữ liệu không bao giờ rời khỏi infrastructure của mình!
3. Cost optimization
Supabase dùng PostgreSQL (free khi self-host) trong khi Firebase charge per-operation. Khi làm AI tasks (rất nhiều database calls), chi phí Firebase sẽ lên trên trời. Self-host Supabase chỉ cần bỏ một vài đô cho VPS mỗi tháng.
Hướng dẫn self-host Supabase
Yêu cầu hệ thống
- Docker & Docker Compose
- Git
- VPS hoặc máy chủ (Ubuntu 20.04+ recommended)
- Kiến thức cơ bản Linux
Bước 1: Update server & clone repository
# Update hệ thống
sudo apt update && sudo apt upgrade -y
# Clone Supabase repo
git clone https://github.com/supabase/supabase.git
cd supabase/docker
Bước 2: Thiết lập environment variables
# Copy file env example
cp .env.example .env
# Edit .env để cấu hình
nano .env
Những biến quan trọng cần thay đổi:
# Database
POSTGRES_PASSWORD=your_secure_password_here
# JWT & API
JWT_SECRET=your_jwt_secret_here
JWT_EXP=3600
API_EXTERNAL_URL=https://api.yourdomain.com
# Site URL (nếu muốn auth hoạt động)
SITE_URL=https://yourdomain.com
# SMTP (tùy chọn, cho email verification)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=[email protected]
SMTP_PASS=your-app-password
Bước 3: Chạy Supabase với Docker Compose
# Start tất cả services
docker compose up -d
# Check logs nếu có vấn đề
docker compose logs -f
Docker sẽ spin up:
- PostgreSQL database
- Kong API Gateway
- Supabase Studio (web UI)
- GoTrue (Authentication)
- Storage API
- và các services khác
Bước 4: Truy cập Supabase dashboard
Khi Docker đã chạy, mở trình duyệt:
http://localhost:3000
Bạn sẽ thấy Supabase Studio – nơi bạn tạo tables, manage users, query database, v.v.
Bước 5: Kết nối từ ứng dụng
Để connect từ Node.js app của bạn:
# Install Supabase client
npm install @supabase/supabase-js
import { createClient } from '@supabase/supabase-js'
const supabaseUrl = 'http://localhost:8000' // API URL
const supabaseKey = 'your-anon-key' // Lấy từ Supabase Studio
const supabase = createClient(supabaseUrl, supabaseKey)
// Query example
const { data, error } = await supabase
.from('documents')
.select('*')
.limit(10)
Bước 6: Setup reverse proxy (nếu muốn production)
Nếu bạn muốn expose Supabase ra internet với domain của mình, dùng Nginx:
sudo apt install nginx
# Enable SSL với Let's Encrypt
sudo apt install certbot python3-certbot-nginx
sudo certbot certonly --standalone -d api.yourdomain.com
Config Nginx:
server {
listen 443 ssl http2;
server_name api.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/api.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/api.yourdomain.com/privkey.pem;
location / {
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
Troubleshooting phổ biến
Port 5432 đang sử dụng?
# Tìm process sử dụng port
sudo lsof -i :5432
# Hoặc thay port trong docker-compose.yml
# Change "5432:5432" to "5433:5432"
Docker memory issues?
# Tăng memory cho Docker Desktop hoặc check logs
docker compose logs postgres
Supabase Studio không load?
# Restart Docker
docker compose down
docker compose up -d
Supabase + self-hosting là game-changer cho bất kỳ ai làm AI apps kết hợp n8n. Bạn có:
- Vector search cho embeddings
- Event-driven automation
- Chi phí thấp
- Dữ liệu an toàn
- Flexibility tuyệt đối
Mình muốn nghe cộng đồng đã thử self-host Supabase chưa? Có vấn đề gì không? Hay bạn đang sử dụng Firebase và có thắc mắc? Hãy comment phía dưới nhé!
Đừng quên check repo chính thức tại: https://github.com/supabase/supabase
Top comments (0)