Quay lại danh sách
Tin tức công nghệ

Đưa Serverless Về Nhà: Hướng Dẫn Tự Host Hệ Sinh Thái Supabase Edge Functions Trên VPS

6 tháng 6, 2026

Giới thiệu: Xu hướng đưa Serverless về nhà (Bring Serverless Home)

Trong những năm gần đây, kiến trúc Serverless đã trở thành một cuộc cách mạng trong thế giới phát triển phần mềm nhờ vào khả năng mở rộng linh hoạt và mô hình thanh toán theo lượng sử dụng (pay-as-you-go). Supabase, một nền tảng mã nguồn mở thay thế cho Firebase, đã nhanh chóng chiếm được cảm tình của cộng đồng công nghệ nhờ tích hợp sẵn Supabase Edge Functions được vận hành bởi Deno runtime. Công nghệ này cho phép các nhà phát triển triển khai các hàm TypeScript gọn nhẹ ở quy mô toàn cầu với độ trễ cực thấp.

Tuy nhiên, khi quy mô hệ thống lớn dần hoặc do các quy định khắt khe về bảo mật dữ liệu, việc phụ thuộc hoàn toàn vào hạ tầng đám mây quản lý sẵn (managed cloud) có thể dẫn đến chi phí tăng phi mã và làm giảm quyền kiểm soát của doanh nghiệp. Đó là lý do xu hướng "Self-hosting" (Tự host) đang quay trở lại mạnh mẽ. Bài viết này sẽ hướng dẫn bạn cách đưa toàn bộ hệ sinh thái Supabase Edge Functions về vận hành trực tiếp trên máy chủ ảo (VPS) cá nhân của bạn, giúp tối ưu hóa chi phí mà vẫn giữ nguyên trải nghiệm lập trình hiện đại.

Tại sao lại chọn Supabase Edge Functions và Deno?

Trước khi đi sâu vào kỹ thuật triển khai, chúng ta cần hiểu tại sao kiến trúc này lại đáng giá để đầu tư hạ tầng riêng:

  • Khởi động tức thì (Zero Cold Starts): Không giống như các nền tảng dựa trên Docker hoặc Node.js truyền thống (như AWS Lambda cũ), Deno sử dụng cơ chế V8 Isolate, cho phép khởi tạo một hàm mới chỉ trong vài mili-giây.
  • Bảo mật mặc định: Deno chặn tất cả các quyền truy cập vào file hệ thống, mạng, và môi trường trừ khi được cấp phép rõ ràng.
  • Hỗ trợ TypeScript nguyên bản: Không cần cấu hình Webpack hay Babel, bạn có thể chạy trực tiếp file .ts hoặc .tsx.

Kiến trúc hệ thống khi tự host trên VPS

Khi sử dụng dịch vụ đám mây của Supabase, họ quản lý toàn bộ hạ tầng định tuyến (routing) và phân phối tải (load balancing). Khi đưa về VPS, chúng ta cần tái lập lại môi trường này. Hệ sinh thái này sẽ bao gồm:

  1. Docker & Docker Compose: Công cụ cốt lõi để đóng gói và chạy môi trường Supabase mã nguồn mở.
  2. Supabase Edge Runtime: Máy chủ chính thức của Supabase dùng để thực thi các Edge Functions dựa trên mã nguồn mở của Deno.
  3. Reverse Proxy (Nginx hoặc Caddy): Đóng vai trò tiếp nhận các yêu cầu HTTPS từ ngoài Internet, mã hóa SSL và chuyển tiếp (forward) vào bên trong hệ thống nội bộ của VPS.
Mẹo chuyên nghiệp: Việc sử dụng Caddy làm Reverse Proxy sẽ giúp bạn tự động cấu hình và gia hạn chứng chỉ SSL miễn phí từ Let's Encrypt mà không cần cấu hình thủ công như Nginx.

Hướng dẫn từng bước triển khai Supabase Edge Functions trên VPS

Bước 1: Chuẩn bị môi trường máy chủ

Đầu tiên, bạn cần một VPS chạy hệ điều hành Ubuntu Server (khuyến nghị phiên bản 22.04 LTS hoặc mới hơn) với cấu hình tối thiểu 2 vCPU và 2GB RAM để đảm bảo hệ thống vận hành mượt mà. Hãy tiến hành cập nhật hệ thống và cài đặt Docker:

sudo apt update && sudo apt upgrade -y
sudo apt install docker.io docker-compose -y

Bước 2: Cấu hình Supabase CLI và Khởi tạo dự án

Supabase cung cấp một công cụ CLI cực kỳ mạnh mẽ để quản lý cấu hình tự host. Thay vì tải toàn bộ stack cơ sở dữ liệu nếu bạn đã có Database riêng, chúng ta sẽ tập trung vào việc kích hoạt container edge-runtime. Hãy cài đặt Supabase CLI trên máy local hoặc trực tiếp trên VPS của bạn:

npx supabase init

Lệnh này sẽ tạo ra một thư mục supabase chứa cấu hình hệ thống. Tại đây, bạn tạo một function mẫu bằng lệnh:

npx supabase functions new hello-world

Cấu trúc thư mục sẽ xuất hiện file index.ts bên trong thư mục supabase/functions/hello-world/. Bạn có thể chỉnh sửa logic code tại đây bằng ngôn ngữ TypeScript chuẩn của Deno.

Bước 3: Thiết lập Docker Compose cho Edge Runtime

Để container chạy liên tục trên VPS, chúng ta tạo một file docker-compose.yml để định nghĩa dịch vụ supabase-edge-runtime. Dưới đây là cấu hình mẫu chuẩn công nghiệp:

version: '3.8'
services:
  edge-runtime:
    image: supabase/edge-runtime:latest
    ports:
      - "9000:9000"
    environment:
      - JWT_SECRET=your_super_secret_jwt_key_here
      - SUPABASE_URL=http://localhost:9000
    volumes:
      - ./supabase/functions:/home/deno/functions
    command: start --main-service /home/deno/functions/main.ts
    restart: always

Hãy lưu ý thay thế your_super_secret_jwt_key_here bằng chuỗi khóa bảo mật thực tế của doanh nghiệp bạn để đảm bảo không ai có thể kích hoạt hàm trái phép.

Bước 4: Cấu hình Routing và Reverse Proxy

Để gọi được hàm từ ứng dụng phía Client (Web/Mobile App) qua Internet, bạn cần cấu hình một tên miền (domain) trỏ về IP của VPS. Cấu hình Caddy dưới đây sẽ giúp chuyển hướng các request từ [api.yourdomain.com/functions/v1/name](https://api.yourdomain.com/functions/v1/name) vào đúng container đang chạy ở port 9000:

api.yourdomain.com {
    reverse_proxy localhost:9000
}

Những lưu ý quan trọng về hiệu năng và bảo mật khi tự host

Tự vận hành hạ tầng đi đôi với trách nhiệm lớn. Khi đưa Serverless về VPS, bạn cần đặc biệt lưu ý các yếu tố sau:

  • Quản lý Tài nguyên (Resource Limiting): Deno Isolate tiêu tốn rất ít RAM, nhưng một vòng lặp vô hạn trong mã nguồn có thể làm nghẽn CPU của VPS. Hãy sử dụng các tùy chọn giới hạn CPU của Docker trong file compose để bảo vệ máy chủ.
  • Bảo mật JWT: Luôn luôn bật tính năng xác thực token (JWT Verification) đối với các hàm xử lý dữ liệu nhạy cảm. Không chia sẻ mã bí mật này ra ngoài môi trường client.
  • Chiến lược Backup: Mặc dù bản chất Edge Functions là không lưu trạng thái (stateless), phần cấu hình và mã nguồn trên VPS cần được đồng bộ liên tục với các kho lưu trữ mã nguồn như GitHub hoặc GitLab thông qua các pipeline CI/CD tự động.

Kết luận

Tự host Supabase Edge Functions trên VPS là một giải pháp kiến trúc xuất sắc cho các doanh nghiệp muốn dung hòa giữa trải nghiệm phát triển hiện đại và sự tối ưu chi phí hạ tầng. Bằng cách làm chủ Edge Runtime của Deno, bạn không còn bị khóa chặt vào hệ sinh thái của các nhà cung cấp cloud lớn (Vendor Lock-in) mà hoàn toàn tự do mở rộng hệ thống theo cách mình mong muốn. Hãy bắt đầu thử nghiệm ngay hôm nay để thấy được sự linh hoạt mà giải pháp này mang lại cho doanh nghiệp của bạn.