PocketBase Cloud: Chạy 10 side project với giá của 1, và vì sao mình thích cách nó tính tiền
Mình là dev, hiện đang tham gia team làm PocketBase Cloud. Bài này mình viết ở góc kỹ thuật — chia sẻ nền tảng giải quyết vấn đề gì, hoạt động ra sao, và thành thật cả về chỗ nó không phù hợp. Anh em đọc với lưu ý mình là người trong team nhé, nên phần nào thấy "nghe hay quá" thì cứ vặn trong comment, mình trả lời thẳng.
Vấn đề: bạn không thiếu ý tưởng, bạn thiếu ngân sách cho ý tưởng
Dev nào cũng có một nghĩa địa side project. Vấn đề thường không phải code, mà là chi phí duy trì.
Đa số nền tảng backend tính tiền theo từng project. Mỗi app một instance compute, một hoá đơn riêng. Cái project chết từ tháng 3 vẫn âm thầm trừ tiền thẻ mỗi tháng. Đến lúc nào đó bạn ngại làm cái mới — không phải vì hết ý tưởng, mà vì hết ngân sách cho ý tưởng.
Đây chính là bài toán tụi mình muốn giải.
Ý tưởng cốt lõi: trả tiền cho server, không phải cho từng project
Ở gói Pro, bạn thuê một server riêng (từ ~$13/tháng cho 2 core / 4 GB) và chạy bao nhiêu instance tuỳ thích trên đó. Mỗi instance cô lập hoàn toàn: database riêng, credentials riêng, URL riêng.
Vì mỗi instance PocketBase chỉ là một binary ~15 MB, một con server 2 core / 4 GB chạy thoải mái khoảng 10 instance. So sánh nhanh với nền tảng tính theo project:
| Số project | PocketBase Cloud | Nền tảng per-project (vd Supabase) |
|---|---|---|
| 1 | $5/tháng (Starter) | ~$25/tháng |
| 3 | $11/tháng | ~$45/tháng |
| 10 | ~$13/tháng (1 server Pro) | ~$115/tháng |
Chi phí gần như đứng yên trong khi số project tăng lên. Với freelancer/agency deploy theo từng client, hoặc indie hacker ôm cả đống thử nghiệm, đây là con số quyết định.
Deploy trong ~30 giây
Bấm deploy, chọn region, ~30 giây sau bạn có một instance chạy thật kèm URL và admin dashboard tại /_/. Không VPS provisioning, không nginx, không certbot, không viết systemd unit file.
Triết lý cố ý nhàm chán: backend nên là phần bạn không phải nghĩ tới.
Realtime chạy sẵn qua SSE
PocketBase stream thay đổi record qua Server-Sent Events, subscription tự động tôn trọng API rules bạn cấu hình. Không cần dựng thêm hạ tầng realtime riêng:
import PocketBase from "pocketbase";
const pb = new PocketBase("https://your-app.pocketbasecloud.com");
// Lắng nghe realtime — đây là toàn bộ setup
pb.collection("messages").subscribe("*", (e) => {
if (e.action === "create") {
console.log("Tin nhắn mới:", e.record);
}
});
SSE đi qua HTTPS proxy bình thường, không cần hạ tầng WebSocket đặc biệt. Và nó không "đồ chơi" như thiết kế gọn nhẹ khiến ta tưởng: một instance trên 2 core / 4 GB xử lý được 1.000+ kết nối realtime đồng thời.
Bảo mật bạn không phải cấu hình
Mỗi instance được cấp sẵn SSL tự động, firewall rule cục bộ, chống DDoS, và backup tự động. Làm sẵn cho bạn, chứ không phải viết docs để bạn tự làm.
Chỗ mình tâm đắc nhất là backup. Self-host PocketBase nổi tiếng dễ — cho tới ngày bạn nhận ra mình chưa bao giờ test thử đường restore.
Không chỉ host database
Cùng một nền tảng chạy được cả:
- Frontend — static hosting cho bản build (React/Vue/Svelte...), có sẵn trên mọi gói (5 frontend ở Free/Starter, không giới hạn ở Pro)
- Backend custom — Node.js, Deno, Bun, Next.js chạy như process thật trên server Pro của bạn
- Instance PocketBase — tất nhiên
Nghĩa là frontend + backend + database nằm một dashboard, một hoá đơn, không phải ghép Vercel + Railway + VPS rồi debug CORS giữa ba chỗ.
Bản thân mình đang chạy một app xem tỉ số World Cup realtime theo đúng mô hình này: backend Socket.io, React PWA, và instance PocketBase — tất cả trên cùng nền tảng.
Về JS hooks: không tính phí theo lượt gọi
Hooks có sẵn trên mọi gói — thêm API route, xử lý sự kiện record, chạy cron job, gọi HTTP ra ngoài — chạy ngay bên trong instance, sát dữ liệu. Điểm quan trọng: không tính phí theo số lần gọi. Một hook chạy một triệu lần tốn đúng bằng chạy một lần, khác hẳn mô hình edge function tính tiền per-invocation nơi chi phí tăng theo traffic.
6 region
Deploy gần người dùng: 🇩🇪 Falkenstein · 🇩🇪 Nuremberg · 🇫🇮 Helsinki · 🇺🇸 Ashburn (VA) · 🇺🇸 Hillsboro (OR) · 🇸🇬 Singapore. Phủ Âu, Bắc Mỹ, và Châu Á - Thái Bình Dương.
Phần thành thật: khi nào KHÔNG nên dùng
Mình sẽ có lỗi với anh em nếu không nói thẳng chỗ này.
PocketBase dùng SQLite: ghi bị serialize (tuần tự), và bạn scale bằng cách nâng server lớn hơn (scale dọc) chứ không phải trải ngang nhiều node. Nếu workload của bạn ghi nặng ở độ đồng thời cao, hoặc phụ thuộc các extension của Postgres như PostGIS, pgvector, thì hãy dùng Postgres — Supabase làm rất tốt và mình khuyên thật lòng bạn qua đó.
Nhưng phần lớn app là CRUD đọc nhiều: dashboard SaaS, backend mobile, site nội dung. Với những app đó, việc SQLite serialize ghi gần như không bao giờ là nút thắt, đổi lại bạn có một hệ thống đơn giản mà mình hiểu trọn vẹn thay vì một stack nhiều container.
Dùng thử
Gói Free cho 1 instance + 5 frontend ở mức $0, và instance chạy thật, không ngủ đông, không cold start. Đủ để anh em xem thử workflow có hợp không:
Nếu anh em đang ôm một đống side project và phải chia nhỏ ngân sách cho từng cái, mình tò mò anh em sẽ deploy cái nào trước. Có gì thắc mắc hay chê bai cứ để dưới comment — mình là người trong team, trả lời thẳng và mang feedback về cho đội. 🙏
All rights reserved