C2. DEPLOYMENT (CLOUDFLARE PAGES)
Ba site đều chạy trên Cloudflare Pages và được build từ cùng một repository. Chỉ dùng Cloudflare: Vercel đã bị tắt bằng vercel.json ("git": { "deploymentEnabled": false }) ở thư mục gốc và trong website/.
| Site | Thư mục | Pages project | Output | Cách deploy |
|---|---|---|---|---|
| danghong.me | website/ | (đã có sẵn) | website/out | Cloudflare Pages kết nối Git (thiết lập trên Dashboard) |
| docs.danghong.me | docs/ | danghong-docs | docs/.vitepress/dist | GitHub Actions + wrangler pages deploy |
| media.danghong.me | media/ | danghong-media | media/dist | GitHub Actions + wrangler pages deploy |
1. WEBSITE (danghong.me)
- Build command:
npm run build(thư mục gốc của project:website). - Output:
out/(Next.jsoutput: "export"). - Headers:
website/public/_headers. - Environment Variables: Không cần. Nếu sau này có, quản lý trên Cloudflare Dashboard (không push file
.env).
2. DOCS & MEDIA (WRANGLER QUA GITHUB ACTIONS)
Workflow .github/workflows/deploy-docs.yml và deploy-media.yml chạy khi có push vào main làm thay đổi docs/** hoặc media/** (hoặc chạy tay trong tab Actions → Run workflow). Mỗi workflow:
- Cài dependency và build site.
- Tạo Pages project nếu chưa có (
wrangler pages project create … --production-branch main). - Deploy bằng
wrangler pages deploy … --branch main.
Cấu hình project nằm trong docs/wrangler.toml và media/wrangler.toml.
2.1. Thiết lập một lần
Tạo API token tại Cloudflare Dashboard → My Profile → API Tokens → Create Token → Custom token, quyền Account › Cloudflare Pages › Edit, chọn đúng account đang giữ domain
danghong.me.Lấy Account ID ở trang Workers & Pages (cột bên phải).
Thêm GitHub secrets tại repo → Settings → Secrets and variables → Actions:
CLOUDFLARE_API_TOKENCLOUDFLARE_ACCOUNT_ID
Chạy workflow lần đầu (Actions → Deploy docs / Deploy media → Run workflow). Project
danghong-docsvàdanghong-mediasẽ được tạo.Gắn custom domain: Workers & Pages → chọn project → Custom domains → Set up a custom domain:
danghong-docs→docs.danghong.medanghong-media→media.danghong.me
Vì
danghong.međã ở trên Cloudflare, bản ghi DNS (CNAME) được tạo tự động.
2.2. Deploy từ máy cá nhân (tùy chọn)
npx wrangler login
cd docs && npm run deploy
cd media && npm run deploy3. KIỂM TRA SAU KHI DEPLOY
https://docs.danghong.memở được trang chủ tài liệu và ô tìm kiếm hoạt động.https://media.danghong.me/api/index.jsontrả về JSON, header cóAccess-Control-Allow-Origin: *.- Tab Deployments của từng project hiển thị commit mới nhất của
main.