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

Hướng Dẫn Tự Host Hệ Sinh Thái Supabase Edge Functions (Deno) Trên VPS Để Vận Hành Serverless Function Tự Chủ

6 tháng 6, 2026

1. Đặt vấn đề: Tại sao nên tự host Supabase Edge Functions?

Trong kỷ nguyên của kiến trúc hiện đại, Serverless Functions (FaaS) đã trở thành một thành phần không thể thiếu giúp các nhà phát triển tối ưu hóa thời gian đưa sản phẩm ra thị trường. Supabase, một nền tảng mã nguồn mở thay thế Firebase mạnh mẽ, cung cấp Edge Functions dựa trên Deno runtime, mang lại tốc độ khởi động nhanh (low cold-start) và hiệu năng vượt trội.

Tuy nhiên, khi quy mô hệ thống lớn dần, chi phí sử dụng dịch vụ Cloud trả phí của Supabase có thể tăng tiến theo số lượng request. Hơn nữa, đối với các doanh nghiệp có tiêu chuẩn khắt khe về bảo mật và chủ quyền dữ liệu (data sovereignty), việc gửi mã nguồn và dữ liệu lên hạ tầng của bên thứ ba không phải lúc nào cũng là lựa chọn tối ưu. Giải pháp hoàn hảo chính là tự host (Self-hosting) hệ sinh thái Supabase Edge Functions trên VPS cá nhân. Việc này không chỉ giúp bạn tiết kiệm chi phí mà còn mang lại sự tự do và khả năng kiểm soát tuyệt đối đối với hạ tầng của mình.

2. Kiến trúc cốt lõi của Supabase Edge Functions

Trước khi bắt tay vào triển khai, chúng ta cần hiểu rõ cách thức hoạt động của hệ thống này dưới nền tảng hạ tầng tự host. Không giống như các Node.js runtime thông thường, Supabase Edge Functions sử dụng các thành phần cốt lõi sau:

  • Deno Runtime: Một môi trường thực thi JavaScript và TypeScript an toàn, bảo mật theo mặc định và hỗ trợ trực tiếp các web API tiêu chuẩn.
  • Supabase Edge Runtime: Máy chủ mã nguồn mở được thiết kế để điều phối, định tuyến (routing) và thực thi các function của bạn trong môi trường độc lập.
  • Kong API Gateway: Đóng vai trò là cổng vào duy nhất, chịu trách nhiệm xác thực JWT, điều hướng traffic và bảo vệ các service bên trong.
Kiến trúc này cho phép các function khởi động gần như ngay lập tức (vài mili-giây) nhờ vào cơ chế V8 isolates của Deno, thay vì phải khởi động toàn bộ một container như AWS Lambda truyền thống.

3. Chuẩn bị môi trường trên VPS

Để quá trình cài đặt diễn ra suôn sẻ, VPS của bạn cần đáp ứng các điều kiện tiên quyết sau:

  1. Hệ điều hành: Ubuntu Server 22.04 LTS trở lên.
  2. Đã cài đặt Docker và Docker Compose phiên bản mới nhất.
  3. Cấu hình phần cứng tối thiểu: 2 vCPU, 4GB RAM (để đảm bảo hiệu năng xử lý đa luồng).
  4. Tên miền (Domain) đã trỏ về IP của VPS và cấu hình SSL (Nginx/Certbot).

Cài đặt Supabase CLI trên máy local

Để quản lý và deploy function, bạn cần cài đặt Supabase CLI trên máy tính cá nhân của mình:

npm install -g supabase

4. Triển khai Supabase Edge Runtime qua Docker Compose

Để tự host hệ thống, phương pháp tối ưu và nhanh chóng nhất là sử dụng Docker Compose. Dưới đây là tệp cấu hình chi tiết để thiết lập hệ sinh thái chạy Edge Functions hoàn chỉnh.

Hãy tạo một file mang tên docker-compose.yml trên VPS của bạn với nội dung cấu hình như sau:

version: '3.8'

services:
  supabase-edge-runtime:
    image: supabase/edge-runtime:v1.44.5
    container_name: supabase-edge-runtime
    ports:
      - "9000:9000"
    environment:
      - JWT_SECRET=your_super_secret_jwt_key
      - SUPABASE_URL=http://localhost:8000
    volumes:
      - ./functions:/home/deno/functions
    command: start --main-service /home/deno/functions/main.js
    restart: unless-stopped

  kong:
    image: kong:2.8.1-alpine
    container_name: supabase-kong
    routing:
      - "8000:8000"
    environment:
      KONG_DATABASE: 'off'
      KONG_DECLARATIVE_CONFIG: /etc/kong/kong.yml
    volumes:
      - ./kong.yml:/etc/kong/kong.yml
    restart: unless-stopped

Trong file cấu hình trên, hãy đặc biệt chú ý đến biến JWT_SECRET. Đây là chìa khóa dùng để xác thực các request. Bạn phải giữ chuỗi này cực kỳ bảo mật và không được tiết lộ ra bên ngoài.

5. Tạo và Deploy Function đầu tiên

Bước 1: Khởi tạo Project

Tại máy local của bạn, khởi tạo một dự án Supabase mới bằng lệnh:

supabase init

Bước 2: Tạo Edge Function mới

Tạo một function có tên là hello-world:

supabase functions new hello-world

Hệ thống sẽ tự động tạo cấu trúc thư mục. Mở file index.ts vừa tạo và cập nhật đoạn code sau:

import { serve } from "[https://deno.land/[email protected]/http/server.ts](https://deno.land/[email protected]/http/server.ts)"

serve(async (req) => {
  const data = { message: "Xin chào từ Supabase Edge Function tự host trên VPS!" }
  return new Response(
    JSON.stringify(data),
    { headers: { "Content-Type": "application/json" } },
  )
})

Bước 3: Đồng bộ mã nguồn lên VPS

Sau khi viết xong mã nguồn, bạn tiến hành đồng bộ thư mục functions lên VPS vào đúng vị trí volume đã cấu hình trong tệp Docker Compose (./functions). Bạn có thể sử dụng các công cụ như rsync hoặc thông qua CI/CD pipeline bằng GitHub Actions.

6. Kiểm tra và Vận hành hệ thống

Khi các container đã khởi chạy thành công trên VPS, bạn có thể kiểm tra xem function của mình có hoạt động chính xác hay không bằng cách sử dụng lệnh curl hoặc các công cụ test API như Postman:

curl -X POST http://YOUR_VPS_IP:9000/hello-world \
  -H "Authorization: Bearer your_super_secret_jwt_key" \
  -H "Content-Type: application/json"

Nếu phản hồi trả về định dạng JSON với thông điệp "Xin chào từ Supabase Edge Function tự host trên VPS!", hệ thống của bạn đã vận hành hoàn hảo.

7. Các lưu ý quan trọng về Bảo mật và Tối ưu hiệu năng

Khi tự quản lý hạ tầng Serverless, trách nhiệm duy trì sự ổn định thuộc về bạn. Dưới đây là những khuyến nghị cốt lõi từ các chuyên gia hệ thống:

  • Giới hạn tài nguyên (Resource Limiting): Sử dụng các flag của Docker để giới hạn CPU và RAM cho container Edge Runtime, tránh trường hợp một function bị lỗi lặp vô hạn (infinite loop) làm nghẽn toàn bộ VPS.
  • Cấu hình Reverse Proxy & SSL: Luôn đặt Edge Runtime phía sau một Reverse Proxy như Nginx hoặc Caddy và cài đặt chứng chỉ SSL miễn phí từ Let's Encrypt để mã hóa toàn bộ dữ liệu trên đường truyền.
  • Giám sát hệ thống (Monitoring): Tích hợp các công cụ thu thập log như Prometheus và Grafana để theo dõi lượng tài nguyên tiêu thụ, số lượng request/giây, và kịp thời phát hiện các dấu hiệu bất thường hoặc các cuộc tấn công DDoS.

8. Lời kết

Việc tự host Supabase Edge Functions trên VPS mang lại sự cân bằng hoàn hảo giữa tính linh hoạt của mô hình Serverless và khả năng tối ưu chi phí, quyền làm chủ dữ liệu của hạ tầng tự quản lý. Hy vọng bài viết này đã cung cấp cho bạn một cái nhìn toàn diện và các bước thực hiện cụ thể để làm chủ công nghệ tiên tiến này. Hãy bắt đầu triển khai ngay hôm nay để nâng cấp hệ thống công nghệ của doanh nghiệp bạn lên một tầm cao mới!