OpenCode.io.vn
Quay lại Blog
20 tháng 9, 2026OpenCode Vietnam11 phút đọc

Thoát phụ thuộc Supabase: khi nào tự host backend lên VPS rẻ hơn

Một câu hỏi trong nhóm vibe coding: phụ thuộc Supabase quá thì đi đâu? Ba đường thoát, toán chi phí VPS 99K/tháng so với Supabase Pro $25/tháng, và lộ trình dọn sang VPS trong một tuần.

#supabase#vibe-coding#vps#self-host#deploy#backend#chi-phi#huong-dan

Thoát phụ thuộc Supabase: khi nào tự host backend lên VPS rẻ hơn

Tuần trước một bạn trong nhóm vibe coding đăng một câu hỏi ngắn:

"Bữa giờ tự mò vibe code cũng khá, mình cũng làm ra thành phẩm và dùng được. Nay có vấn đề về backend Supabase thấy phụ thuộc nó quá. Có bên nào ổn hơn lâu dài, hướng free hoặc trả phí ít không?"

Thread nổ ra gần chục bình luận, chia hai phe rõ rệt. Phe tự host: cài Supabase self-host lên VPS, Docker, Coolify, kèm cả một stack đầy đủ NestJS + Postgres + Nginx + CI/CD. Phe cảnh báo: "nếu không có nền tảng IT thì đừng build riêng, không sẽ có một ngày hối hận", "free hoài làm sao được, nhiều người dùng là xuống tiền".

Thú vị là cả hai phe đều đúng — mỗi phe đúng một nửa. Câu hỏi thực sự không phải "Supabase có tệ không" (không tệ, nó giúp bạn ship nhanh nhất trong giai đoạn demo), mà là: bạn đang phụ thuộc nó ở tầng nào, và tầng đó đáng bao nhiêu tiền khi app chuyển từ "chạy được" sang "chạy lâu dài". Đây là bước ngoặt mà gần như mọi vibe coder đều đi qua.

Bài này mổ xẻ thread đó bằng số liệu thật, trả lời ba câu: phụ thuộc ở đâu, có mấy đường thoát, và toán tiền ra sao. Giá và giới hạn lấy từ trang chính thức của Supabase và Cloudflare, khảo sát 20/09/2026.

VPS cho coder & vibe coding

Deploy app, chạy agent dài hoặc giữ môi trường thử nghiệm tách khỏi máy chính

Link affiliate Tino Group: OpenCode Vietnam có thể nhận hoa hồng, giá bạn trả không đổi.


Bạn phụ thuộc Supabase ở chỗ nào mà không nhận ra

Khi vibe code, Supabase biến mất sau một dòng supabase.from(...). Nó làm việc của nó quá trơn tru tới mức bạn không nhận ra logic của app đang nằm dần trong hệ sinh thái của người khác. Đếm kỹ thì có ba lớp:

  1. Edge Functions — logic chạy trên runtime Deno của họ, deploy bằng CLI của họ. Code là của bạn, nhưng nơi chạy thì không phải.
  2. Postgres RPC — business logic viết thành function nằm ngay trong database. Ngon khi demo: client gọi một hàm là xong đâu vào đấy. Nhưng logic càng nằm sâu trong DB, cái giá rời đi càng cao.
  3. Auth + Storage — user data, JWT, file upload. Layer này theo chuẩn mở nên migrate được, nhưng vẫn là việc.

Một bình luận trong thread gợi ý khá chuẩn: "Hỏi thêm AI tại sao không nên dùng Edge Functions và Postgres RPC nếu app có dự định chạy lâu dài." Ý của gợi ý đó chính là hai lớp đầu — nơi gắn logic của bạn vào hệ sinh thái đóng sâu nhất. SDK thì thay được trong một buổi, business logic nằm trong RPC thì không.

Trần của free tier

Số liệu free plan hiện tại (theo trang giá Supabase, khảo sát 20/09/2026):

Hạng mụcFree plan
Database500 MB
Egress5 GB + 5 GB cached/tháng
File storage1 GB
Edge Functions500.000 invocations/tháng
Auth50.000 MAU
Project active song song2
Realtime200 connections, 2 triệu messages/tháng

Với app nội bộ vài chục người dùng, các con số này rất thoải mái. Cái đánh vào side project trước tiên không phải dung lượng — là chính sách pause: project free tự tạm dừng sau 7 ngày không hoạt động, đo chủ yếu theo API request vào (theo docs chính thức). App ít người dùng, bạn quên mở hai buổi cuối tuần, thứ hai mở dashboard thấy project đang ngủ. Không mất dữ liệu, nhưng không phải trải nghiệm của một dịch vụ "đang chạy thật".

💡

Giữ project free không bị pause: đặt một GitHub Actions chạy cron ping endpoint mỗi 5–6 ngày. Cộng đồng dùng trick này phổ biến. Nhưng nó là băng dán — bạn đang giữ hệ sống bằng hơi thở nhân tạo, và đó là tín hiệu app đã tới nơi cần nghiêm túc hơn.

Rồi tới lượt dung lượng: 500 MB database với app có bảng log, hoặc 1 GB storage với app cho upload ảnh, là chuyện vài tháng. Lúc đó phương án duy nhất của hệ sinh thái là Pro — $25/tháng. Và đó là lúc câu hỏi "phụ thuộc quá" trở thành câu hỏi về tiền.


Ba đường thoát, ba mức cam kết

Thread cho ra ba hướng, mình xếp theo mức cam kết tăng dần.

Đường 1 — Ở lại, nhưng khử lock-in

Không rời Supabase, chỉ cắt dây neo:

  • Tách logic khỏi Edge Functions và RPC thành backend riêng gọi thẳng vào Postgres (Supabase cho kết nối trực tiếp). Làm từng feature một, không cần big bang.
  • Dọn file sang Cloudflare R2: free tier 10 GB storage và — điểm quan trọng nhất — egress miễn phí (theo trang giá Cloudflare, khảo sát 20/09/2026). Storage là thứ phình nhanh nhất trong mọi app có upload. Một bình luận trong thread tóm gọn: "R2 lưu file, Supabase chỉ lưu tag map sang — hoàn toàn free."

Kết quả: Supabase bị hạ xuống vai trò một cụm Postgres + auth, đều là phần chuẩn mở. Muốn đi lúc nào cũng đi được, còn ở lại thì cứ ở.

Đường 2 — Self-host Supabase trên VPS

Supabase là open source, có bộ Docker compose chính thức. Compose hiện tại chạy 11 service: studio, envoy, auth, rest, realtime, storage, imgproxy, meta, edge-functions, db, pooler (đếm từ repo chính thức, 20/09/2026). Bạn giữ nguyên hệ sinh thái và dashboard quen thuộc, chỉ đổi chỗ chạy — và cắt hoá đơn.

Đổi lại: bạn nuôi 11 container. RAM 2 GB trở lên là mức tối thiểu tử tế, và toàn bộ việc vận hành (backup, update version, chứng chỉ, dò log) chuyển sang vai bạn.

Đường 3 — Rời hẳn, stack riêng

Đây là stack một bình luận trong thread chia sẻ, đầy đủ nhất từ A đến Z:

  • NestJS viết backend, React viết frontend
  • Postgres làm DB, Valkey làm cache
  • Nginx reverse proxy + Certbot lấy SSL tự động
  • Up code lên GitLab, CI build docker image, CD deploy image lên server
  • Domain trên Cloudflare, file để trên R2

Tóm lại: trả tiền bằng thời gian. Kiểm soát tối đa, ràng buộc tối thiểu, nhưng mọi thứ tự dựng.

So sánh nhanh

Đường 1: khử lock-inĐường 2: self-host SupabaseĐường 3: stack riêng
Chi phí/tháng~0đ (free tier + R2 free)VPS từ ~99KVPS từ ~99K
Độ khóThấp — dọn từng phầnTrung bình — dựng lại hạ tầngCao — viết lại lớp API
Giữ được gìToàn bộ data + dashboardToàn bộ + hệ sinh tháiChỉ data (pg_dump)
Vấn đề còn lạiVẫn chịu trần free tierVẫn chạy theo roadmap SupabaseTự lo backup, security, uptime
Hợp với aiCó user thật, budget 0Quen Supabase, muốn cắt hoá đơnSản phẩm nghiêm túc dài hạn

Toán chi phí: VPS và Supabase Pro chênh nhau bao nhiêu

Supabase Pro hiện $25/tháng cho mỗi project: 8 GB disk, 250 GB egress, 100 GB storage, 2 triệu Edge Function invocations, kèm $10 compute credit — vừa đủ một Micro instance. Cần thêm compute thì Micro $10/tháng, Small (2 GB RAM) $15/tháng. Chính trang giá của họ đưa ví dụ: organisation Pro chạy 2 project Micro tốn $35/tháng (khảo sát 20/09/2026).

Một Cloud VPS NVMe của Tino có gói từ 99K/tháng (giá Tino công bố, khảo sát 09/2026) — tương đương khoảng $4. Quy đổi ra năm để cảm nhận độ lớn:

Kịch bảnChi phí/thángChi phí/năm
Supabase Free + cron ping0đ — nhưng trần 500 MB/1 GB, 2 project
Supabase Pro, 1 project Micro$25 (~650Kđ)~7,8 triệu đồng
Supabase Pro, 2 project Micro$35 (~910Kđ)~10,9 triệu đồng
VPS tự host Postgres + backend + Nginxtừ 99Kđ~1,2 triệu đồng

(Tỷ giá quy đổi ~26.000đ/USD, tính sơ bộ thời điểm viết — chỉ để cảm nhận độ lớn, không phải báo giá.)

Chênh lệch gấp 6–9 lần. Trên cùng một con VPS đó, frontend tĩnh để miễn phí trên Cloudflare Pages (chính site cộng đồng này chạy thế), còn backend + Postgres + Nginx + vài service nhỏ chạy cạnh nhau thoải mái với app nhẹ. App nặng hơn — build lớn, nhiều process — thì lên gói AMD từ 126K/tháng hoặc cao hơn. Và nếu bạn chọn đường 2 (self-host cả bộ Supabase 11 service), hãy bắt đầu từ mức 2 GB RAM trở lên, đừng tin gói rẻ nhất.

Chi phí ẩn — phần không ai thích nhắc

Thread có một bình luận đáng ghi nhớ: "Nếu không có nền tảng IT thì đừng build riêng, nếu không sẽ có một ngày hối hận." Self-host đổi tiền lấy trách nhiệm:

  • Server sập lúc 2 giờ sáng — người bị đánh thức là bạn, hoặc không ai.
  • Backup không tự có. Phải tự đặt cron pg_dump và copy ra ngoài (R2 là chỗ để bản backup tốt).
  • Security update, firewall, SSH hardening — hết thảy là việc của bạn.
  • Thay vì mỗi lần deploy gõ một lệnh CLI quen thuộc, bạn docker compose up rồi tự dò log khi container không lên.

Vì vậy đừng đọc bài này thành "VPS luôn rẻ hơn". Chuẩn hơn: VPS rẻ hơn về tiền, đắt hơn về trách nhiệm — và cái đổi đó chỉ đáng khi app đã có người dùng thật.


Lộ trình dọn sang VPS trong một tuần

Nếu chọn đường 2 hoặc 3, đây là lịch mình tổng hợp từ thread, xếp theo thứ tự làm:

Ngày 1–2 — hạ tầng. Thuê VPS, trỏ domain về Cloudflare DNS (miễn phí). Cài Docker + Coolify hoặc Dokploy — hai công cụ này biến VPS thành mini-PaaS có UI, tự cấp SSL. Như một bình luận trong thread nói: "nhờ AI dùng Coolify build app dưới dạng PaaS cho dễ quản lý."

Ngày 3–4 — data + logic. pg_dump bên Supabase rồi restore vào Postgres trên VPS. Data là của bạn và Postgres là chuẩn mở, nên đây là bước nhẹ hơn mọi người tưởng. Sau đó tách từng Edge Function thành API riêng (NestJS hoặc Express) gọi vào Postgres — giữ proxy từ URL cũ để client không vỡ giữa chừng.

Ngày 5–6 — vận hành. Nginx hoặc Coolify làm reverse proxy + SSL. Dựng CI/CD từ GitHub hoặc GitLab: push code → build image → deploy lên server.

Ngày 7 — phòng hờ. Backup tự động (cron pg_dump đẩy lên R2), uptime ping tối thiểu, và một file ghi lại vài lệnh chữa cháy cho chính mình sau này.

Và đây là bộ keyword mà thread gom lại — đúng tinh thần vibe coding, bạn mang từng cụm bỏ vào AI hỏi là có lộ trình học:

VPS · Docker · Coolify · Dokploy · Cloudflare DNS
Cloudflare R2 · Postgres · pg_dump · NestJS · Valkey
Nginx reverse proxy · Certbot · CI/CD · GitHub Actions

Khi nào không nên tự host

Bình luận "free cũng có giới hạn, nhiều người dùng thì xuống tiền" đúng — nhưng chiều ngược cũng đúng: chưa có người dùng thật thì chưa có gì để tiết kiệm. App 5 người dùng nội bộ sống sót thoải mái trên free tier với một cron ping. Đừng tự host để "tiết kiệm" $0 — thứ bạn tiêu không phải tiền, là sự tập trung vào sản phẩm.


Kết luận: chọn theo tình huống, không theo trào lưu

  • Demo, hackathon, side project chưa có user → ở lại free tier, thêm cron ping chống pause. Chưa có gì để tối ưu.
  • Có user thật, budget 0 → đường 1: tách logic khỏi Edge Functions/RPC, dọn file sang R2. Giảm phụ thuộc mà không thêm đồng hoá đơn nào.
  • Sản phẩm ổn định, định sống dài hạn → VPS tự host: đường 2 nếu muốn giữ hệ sinh thái Supabase, đường 3 nếu muốn stack riêng gọn. Bắt đầu từ một VPS từ 99K/tháng thay cho $25/tháng cộng compute.

Free tier cho bạn tốc độ lúc bắt đầu. VPS cho bạn quyền sở hữu lúc ở lại. Còn ở giữa hai thời điểm đó, thứ đáng mua không phải là server — là sự rõ ràng về việc app của bạn đang đứng ở đâu.


Đọc thêm

Bạn đang đứng ở nẻo nào — free tier sắp chạm trần, hay đã cầm hoá đơn Pro trong tay? Vào nhóm OpenCode Vietnam chia sẻ thêm, thread gốc trong bài cũng từ đó mà ra.