Cloudflare Deployment
Hướng dẫn này bao gồm việc triển khai Cloudflare được monorepo sử dụng: CMS API chạy như một Worker và ứng dụng tài liệu được triển khai như một static site trên Cloudflare Pages.
Prerequisites
- Node.js 22 trở lên.
pnpmkhớp với trườngpackageManagerở gốc.- Wrangler đã xác thực với tài khoản có quyền ghi Workers, Pages, KV, R2, Hyperdrive và Durable Objects.
- Giá trị production cho PostgreSQL, Cloudflare Access và các secret JWT của CMS.
Kiểm tra đăng nhập:
pnpm exec wrangler whoami
CMS Worker
Worker nằm ở apps/cms và sử dụng apps/cms/wrangler.toml.
Tạo hoặc gắn các binding production trước khi triển khai:
pnpm exec wrangler hyperdrive create lumibase-hyperdrive \
--connection-string="postgres://user:pass@host:5432/lumibase"
pnpm exec wrangler kv namespace create CONFIG_CACHE
pnpm exec wrangler r2 bucket create lumibase-media
Cập nhật apps/cms/wrangler.toml với các ID được trả về. Giữ các giá trị mặc định local trong khối [vars] cấp cao nhất, và giữ các giá trị không nhạy cảm cùng binding cho staging/production trong các profile có tên [env.staging] và [env.production]. Không đặt các giá trị secret production trong wrangler.toml; hãy lưu trữ chúng dưới dạng Cloudflare secrets:
cd apps/cms
pnpm exec wrangler secret put JWT_SECRET --env production
pnpm exec wrangler secret put CF_ACCESS_CERTS_URL --env production
pnpm exec wrangler secret put CF_ACCESS_AUDIENCE --env production
Chạy release guard trước khi triển khai. Nó xác nhận rằng production không sử dụng dev auth, secret JWT phát triển không xuất hiện, và các secret bắt buộc tồn tại trong biến môi trường CI hoặc Cloudflare secrets:
pnpm release:check
Build và triển khai:
pnpm --filter @lumibase/cms build:production
pnpm --filter @lumibase/cms deploy:production
Sau khi triển khai, hãy xác minh:
curl -fsS https://<worker-host>/health
Documentation Site
Docs viewer đọc markdown từ thư mục docs/ ở gốc và build ra apps/docs/dist.
pnpm --filter @lumibase/docs build
pnpm docs:deploy
Script deploy ở gốc chạy:
wrangler pages deploy apps/docs/dist --project-name lumibase-docs
Production Notes
- Không triển khai production với
LUMIBASE_DEV_AUTH="true"hoặcJWT_SECRETphát triển;pnpm release:checksẽ chặn các giá trị này trướcwrangler deploy. - Giữ các migration của Durable Object trong các mục
[[migrations]]cấp cao nhất trongwrangler.toml. - Chạy các migration của database trước khi công khai bản build API mới nếu mã phụ thuộc vào các thay đổi schema.
- Giữ việc triển khai docs và Worker riêng biệt để các thay đổi chỉ liên quan đến tài liệu không buộc phải triển khai lại API.