Chuyển đến nội dung

Triển khai lên Cloudflare Pages ​

Cloudflare Pages cung cấp dịch vụ lưu trữ trang tĩnh toàn cầu, nhanh, với băng thông không giới hạn.

Triển khai nhanh ​

  1. Vào Cloudflare Pages
  2. Nhấp "Create a project"
  3. Kết nối kho GitHub của bạn

Cấu hình build ​

Cài đặtGiá trị
Framework presetNone
Build commandnpm run build
Build output directorydist
Root directory/

Biến môi trường ​

Thêm các biến này trong Settings → Environment variables:

BiếnGiá trị
NODE_VERSION18
SIMPLE_MODEfalse (tùy chọn)
VITE_BRAND_NAMETên thương hiệu tùy chỉnh (tùy chọn)
VITE_BRAND_LOGOĐường dẫn logo tương đối so với public/ (tùy chọn)
VITE_FOOTER_TEXTVăn bản chân trang/bản quyền tùy chỉnh (tùy chọn)
VITE_DEFAULT_LANGUAGENgôn ngữ giao diện mặc định, ví dụ fr (tùy chọn)

Tệp cấu hình ​

Tạo _headers trong thư mục public của bạn:

# Required security headers for SharedArrayBuffer (used by LibreOffice WASM)
/*
  Cross-Origin-Embedder-Policy: require-corp
  Cross-Origin-Opener-Policy: same-origin
  Cross-Origin-Resource-Policy: cross-origin

# Pre-compressed LibreOffice WASM binary
/libreoffice-wasm/soffice.wasm.gz
  Content-Type: application/wasm
  Content-Encoding: gzip
  Cache-Control: public, max-age=31536000, immutable

# Pre-compressed LibreOffice WASM data
/libreoffice-wasm/soffice.data.gz
  Content-Type: application/octet-stream
  Content-Encoding: gzip
  Cache-Control: public, max-age=31536000, immutable

# Cache WASM files aggressively
/*.wasm
  Cache-Control: public, max-age=31536000, immutable
  Content-Type: application/wasm

# Service worker
/sw.js
  Cache-Control: no-cache

Quan trọng

Các header Cross-Origin-Embedder-Policy và Cross-Origin-Opener-Policy là bắt buộc cho việc chuyển Word/ODT/Excel/PowerPoint sang PDF. Nếu thiếu, SharedArrayBuffer sẽ không khả dụng và engine LibreOffice WASM sẽ không khởi tạo được.

Tạo _redirects cho định tuyến SPA:

/*    /index.html   200

Tên miền tùy chỉnh ​

  1. Vào dự án Pages của bạn
  2. Nhấp "Custom domains"
  3. Thêm tên miền của bạn
  4. Cloudflare sẽ tự động cấu hình DNS nếu tên miền nằm trên Cloudflare

Ưu điểm ​

  • Băng thông không giới hạn, miễn phí
  • CDN toàn cầu với hơn 300 điểm biên
  • HTTPS tự động
  • Bản triển khai xem trước cho pull request
  • Build nhanh

Khắc phục sự cố ​

Tải lên tệp lớn ​

Cloudflare Pages hỗ trợ tệp tối đa 25 MB. Các module WASM thường ổn, nhưng nếu bạn chạm giới hạn, hãy cân nhắc:

bash
# Split large files during build
npm run build

Giới hạn kích thước Worker ​

Nếu dùng Cloudflare Workers cho định tuyến nâng cao, lưu ý giới hạn 1 MB cho gói miễn phí.

CORS Proxy Worker (cho chữ ký số) ​

Công cụ Chữ ký số cần một CORS proxy để lấy chuỗi chứng chỉ. Hãy triển khai worker đi kèm:

bash
cd cloudflare
npx wrangler login
npx wrangler deploy

Tính năng bảo mật ​

Tính năngMô tả
Hạn chế URLChỉ cho phép URL chứng chỉ
Giới hạn kích thước tệpTối đa 10MB mỗi yêu cầu
Giới hạn tốc độ60 yêu cầu/IP/phút (cần KV)
Chặn IP riêngChặn localhost và các IP nội bộ

Bật giới hạn tốc độ ​

bash
# Create KV namespace
npx wrangler kv namespace create "RATE_LIMIT_KV"

# Add to wrangler.toml with returned ID:
# [[kv_namespaces]]
# binding = "RATE_LIMIT_KV"
# id = "YOUR_ID"

npx wrangler deploy

Build với URL proxy ​

bash
VITE_CORS_PROXY_URL=https://your-worker.workers.dev npm run build

Hoặc với Docker:

bash
export VITE_CORS_PROXY_URL="https://your-worker.workers.dev"
DOCKER_BUILDKIT=1 docker build \
  --secret id=VITE_CORS_PROXY_URL,env=VITE_CORS_PROXY_URL \
  -t your-bentopdf .

Lưu ý: Xem README để biết cách thiết lập chữ ký HMAC.

Cấp phép kép theo AGPL-3.0 và Giấy phép thương mại.