Sau bài hướng dẫn cài đặt EmDash self-hosted trên Ubuntu 24 VPS, bài viết này sẽ hướng dẫn bạn deploy EmDash lên Cloudflare Workers – nền tảng serverless của Cloudflare. Đồng thời, TND sẽ so sánh chi tiết chi phí giữa các phương pháp triển khai để bạn chọn được giải pháp phù hợp nhất.
Tại sao chọn Cloudflare cho EmDash?
EmDash được thiết kế tối ưu cho Cloudflare ngay từ đầu. Khi deploy lên Cloudflare, bạn được:
- Scale tự động: Từ 0 đến hàng triệu request mà không cần cấu hình gì.
- Chỉ trả theo sử dụng: Không mất tiền khi website không có traffic.
- Plugin sandbox: Sử dụng Cloudflare Dynamic Workers để cách ly plugin hoàn toàn.
- Edge network toàn cầu: Website được serve từ 300+ data center trên thế giới.
- Tích hợp D1, R2, KV: Database, storage và session được quản lý bởi Cloudflare.
Bước 1: Tạo tài khoản Cloudflare
Nếu chưa có tài khoản, đăng ký tại dash.cloudflare.com. Bạn cần upgrade lên plan Workers Paid ($5/tháng) để sử dụng Dynamic Workers – tính năng bắt buộc cho plugin sandbox của EmDash.
Bước 2: Cài đặt Wrangler CLI
Wrangler là CLI của Cloudflare để quản lý Workers:
npm install -g wrangler
wrangler login
Bước 3: Tạo project EmDash
npm create emdash@latest my-cf-website
cd my-cf-website
Khi được hỏi về deployment target, chọn Cloudflare Workers.
Bước 4: Cấu hình cho Cloudflare
Mở file astro.config.mjs và cấu hình sử dụng D1 database và R2 storage:
import { defineConfig } from "astro/config";
import emdash from "emdash/astro";
import { d1 } from "emdash/db";
import cloudflare from "@astrojs/cloudflare";
export default defineConfig({
output: "server",
adapter: cloudflare(),
integrations: [
emdash({
database: d1(),
}),
],
});
Bước 5: Tạo D1 database và R2 bucket
# Tạo D1 database
wrangler d1 create emdash-db
# Tạo R2 bucket cho media storage
wrangler r2 bucket create emdash-media
# Tạo KV namespace cho sessions
wrangler kv namespace create emdash-sessions
Cập nhật file wrangler.toml với các ID từ output phía trên:
name = "my-emdash-site"
compatibility_date = "2024-01-01"
[[d1_databases]]
binding = "DB"
database_name = "emdash-db"
database_id = "your-d1-id-here"
[[r2_buckets]]
binding = "MEDIA"
bucket_name = "emdash-media"
[[kv_namespaces]]
binding = "SESSIONS"
id = "your-kv-id-here"
Bước 6: Deploy lên Cloudflare
# Build project
pnpm build
# Deploy
wrangler deploy
Sau khi deploy, website sẽ có sẵn tại my-emdash-site.your-subdomain.workers.dev. Bạn có thể trỏ tên miền riêng vào trong Cloudflare dashboard.
Bước 7: Cấu hình tên miền (tùy chọn)
Trong Cloudflare dashboard, vào Workers & Pages -> Custom Domains và thêm tên miền của bạn. Cloudflare sẽ tự động cấu hình DNS và SSL.
Deploy nhanh bằng 1 click
EmDash cũng hỗ trợ deploy 1 click qua Cloudflare dashboard. Truy cập GitHub EmDash và nhấn nút “Deploy to Cloudflare Workers” trong phần template Blog.
So sánh chi phí chi tiết: Cloudflare vs Self-Hosted vs WordPress
Dưới đây là bảng so sánh chi phí hàng tháng cho một website có khoảng 50,000-100,000 pageviews/tháng:
1. EmDash trên Cloudflare Workers
| Hạng mục | Free tier | Paid plan |
|---|---|---|
| Workers (compute) | 100,000 req/ngày miễn phí | $5/tháng (10 triệu req) |
| D1 database | 5GB miễn phí | $0.75/GB/tháng |
| R2 storage (media) | 10GB miễn phí | $0.015/GB/tháng |
| KV (sessions) | 100,000 reads/ngày miễn phí | $0.50/triệu reads |
| Tên miền | – | $10-15/năm |
| Tổng | $0/tháng (trong free tier) | $5-8/tháng |
2. EmDash Self-Hosted trên VPS
| Hạng mục | VPS nhỏ | VPS trung bình |
|---|---|---|
| VPS (1 vCPU, 1GB RAM) | $5-6/tháng | – |
| VPS (2 vCPU, 4GB RAM) | – | $15-20/tháng |
| SSL Certificate | Miễn phí (Let’s Encrypt) | Miễn phí (Let’s Encrypt) |
| Backup | $1-2/tháng | $2-5/tháng |
| Tên miền | $10-15/năm | $10-15/năm |
| Tổng | $6-9/tháng | $18-26/tháng |
3. WordPress truyền thống (để so sánh)
| Hạng mục | Shared Hosting | VPS/Managed |
|---|---|---|
| Hosting | $3-10/tháng | $15-50/tháng |
| Theme premium | $50-100/lần | $50-100/lần |
| Plugin premium (SEO, cache, bảo mật) | $100-300/năm | $100-300/năm |
| SSL Certificate | Thường miễn phí | Thường miễn phí |
| Tên miền | $10-15/năm | $10-15/năm |
| Tổng | $5-15/tháng | $25-75/tháng |
Phân tích chi phí theo quy mô
Website nhỏ (dưới 10,000 pageviews/tháng)
Lựa chọn tốt nhất: Cloudflare Free tier – $0/tháng. Với 100,000 request/ngày miễn phí, 5GB D1 và 10GB R2, bạn có thể chạy website hoàn toàn miễn phí. Chỉ cần trả tiền tên miền.
Website trung bình (10,000-100,000 pageviews/tháng)
Lựa chọn tốt nhất: Cloudflare Paid – $5-8/tháng. Rẻ hơn VPS từ 20-50%, không cần quản lý server, auto-scale và có CDN toàn cầu.
Website lớn (trên 100,000 pageviews/tháng)
Tùy thuộc nhu cầu. Nếu cần toàn quyền kiểm soát server và có đội ngũ DevOps, VPS self-hosted có thể tiết kiệm hơn. Nếu muốn đơn giản và không lo scale, Cloudflare vẫn là lựa chọn an toàn với chi phí dự đoán được.
Bảng tóm tắt so sánh
| Tiêu chí | Cloudflare | Self-Hosted VPS | WordPress |
|---|---|---|---|
| Chi phí khởi điểm | $0 | $5/tháng | $3/tháng |
| Chi phí 100k views | $5-8/tháng | $15-20/tháng | $25-75/tháng |
| Auto-scale | Có | Không (cần nâng cấp VPS) | Không |
| Bảo mật plugin | Sandbox hoàn toàn | Không có sandbox | Không có |
| Quản lý server | Không cần | Cần kiến thức Linux | Tùy hosting |
| CDN toàn cầu | Có sẵn (300+ PoP) | Cần cấu hình thêm | Cần plugin/dịch vụ |
| SSL | Tự động, miễn phí | Let’s Encrypt | Tùy hosting |
| Backup | Tự động (D1, R2) | Cần tự cấu hình | Cần plugin |
| Custom code | Hạn chế (serverless) | Toàn quyền | PHP |
Kết luận
Với đa số trường hợp, EmDash trên Cloudflare Workers là lựa chọn tối ưu nhất về chi phí, hiệu suất và bảo mật. Bạn chỉ cần $5/tháng để có một website CMS hoàn chỉnh với CDN toàn cầu, auto-scale, và plugin sandbox – những thứ mà WordPress cần hàng chục dollar/tháng để đạt được.
Tuy nhiên, nếu bạn cần toàn quyền kiểm soát server, chạy các ứng dụng phức tạp bên cạnh CMS, hoặc đã có sẵn hạ tầng VPS, thì self-hosted trên Ubuntu 24 VPS vẫn là lựa chọn tuyệt vời.
Dù bạn chọn cách nào, EmDash đều là bước tiến lớn so với WordPress truyền thống – an toàn hơn, nhanh hơn, và rẻ hơn.
Liên kết hữu ích:


