跳至內容

部署到 Cloudflare Pages ​

Cloudflare Pages 提供快速、全球化且頻寬無上限的靜態網站託管。

快速部署 ​

  1. 前往 Cloudflare Pages
  2. 點選「Create a project」
  3. 連結您的 GitHub 儲存庫

建置設定 ​

設定項目值
Framework presetNone
Build commandnpm run build
Build output directorydist
Root directory/

環境變數 ​

在 Settings → Environment variables 中加入以下項目:

變數值
NODE_VERSION18
SIMPLE_MODEfalse(選填)
VITE_BRAND_NAME自訂品牌名稱(選填)
VITE_BRAND_LOGO相對於 public/ 的標誌路徑(選填)
VITE_FOOTER_TEXT自訂頁尾/版權文字(選填)
VITE_DEFAULT_LANGUAGE預設介面語言,例如 fr(選填)

設定檔 ​

在您的 public 資料夾中建立 _headers:

# 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

重要

Word/ODT/Excel/PowerPoint 轉 PDF 需要 Cross-Origin-Embedder-Policy 與 Cross-Origin-Opener-Policy 標頭。缺少它們時,SharedArrayBuffer 將無法使用,LibreOffice WASM 引擎會初始化失敗。

為 SPA 路由建立 _redirects:

/*    /index.html   200

自訂網域 ​

  1. 前往您的 Pages 專案
  2. 點選「Custom domains」
  3. 加入您的網域
  4. 若網域位於 Cloudflare 上,Cloudflare 會自動設定 DNS

優點 ​

  • 免費且無上限的頻寬
  • 全球 CDN,擁有 300 個以上的邊緣節點
  • 自動 HTTPS
  • 針對 pull request 的預覽部署
  • 快速建置

疑難排解 ​

大型檔案上傳 ​

Cloudflare Pages 支援最大 25 MB 的檔案。WASM 模組應該沒問題,但若遇到限制,可以考慮:

bash
# Split large files during build
npm run build

Worker 大小限制 ​

若使用 Cloudflare Workers 進行進階路由,請注意免費方案有 1 MB 的限制。

CORS 代理 Worker(用於數位簽章) ​

數位簽章工具需要 CORS 代理來擷取憑證鏈。請部署內附的 worker:

bash
cd cloudflare
npx wrangler login
npx wrangler deploy

安全功能 ​

功能說明
URL 限制僅允許憑證 URL
檔案大小限制每個請求最大 10MB
速率限制每 IP 每分鐘 60 次(需要 KV)
私人 IP 封鎖封鎖 localhost 與內部 IP

啟用速率限制 ​

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

以代理 URL 建置 ​

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

或使用 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 .

注意: HMAC 簽章設定請參閱 README。

以 AGPL-3.0 與商業授權雙重授權。