رفتن به محتوا

استقرار روی Cloudflare Pages ​

Cloudflare Pages میزبانی سریع و جهانی سایت‌های ایستا با پهنای باند نامحدود ارائه می‌دهد.

استقرار سریع ​

  1. به Cloudflare Pages بروید
  2. روی "Create a project" کلیک کنید
  3. مخزن GitHub خود را متصل کنید

پیکربندی ساخت ​

تنظیممقدار
Framework presetNone
فرمان ساختnpm run build
پوشهٔ خروجی ساختdist
پوشهٔ ریشه/

متغیرهای محیطی ​

این‌ها را در Settings ← Environment variables اضافه کنید:

متغیرمقدار
NODE_VERSION18
SIMPLE_MODEfalse (اختیاری)
VITE_BRAND_NAMEنام برند سفارشی (اختیاری)
VITE_BRAND_LOGOمسیر لوگو نسبت به public/ (اختیاری)
VITE_FOOTER_TEXTمتن سفارشی پاصفحه یا کپی‌رایت (اختیاری)
VITE_DEFAULT_LANGUAGEزبان پیش‌فرض رابط کاربری، مثلاً fr (اختیاری)

فایل پیکربندی ​

فایل _headers را در پوشهٔ public خود بسازید:

# 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

مهم

سرآیندهای Cross-Origin-Embedder-Policy و Cross-Origin-Opener-Policy برای تبدیل Word/ODT/Excel/PowerPoint به PDF لازم هستند. بدون آن‌ها، SharedArrayBuffer در دسترس نیست و موتور LibreOffice WASM راه‌اندازی نمی‌شود.

فایل _redirects را برای مسیریابی SPA بسازید:

/*    /index.html   200

دامنهٔ سفارشی ​

  1. به پروژهٔ Pages خود بروید
  2. روی "Custom domains" کلیک کنید
  3. دامنهٔ خود را اضافه کنید
  4. اگر دامنه روی Cloudflare باشد، Cloudflare به‌طور خودکار DNS را پیکربندی می‌کند

مزایا ​

  • پهنای باند نامحدود رایگان
  • CDN جهانی با بیش از ۳۰۰ نقطهٔ لبه
  • HTTPS خودکار
  • استقرارهای پیش‌نمایش برای pull requestها
  • ساخت سریع

عیب‌یابی ​

بارگذاری فایل‌های بزرگ ​

Cloudflare Pages از فایل‌هایی تا ۲۵ مگابایت پشتیبانی می‌کند. ماژول‌های WASM باید مشکلی نداشته باشند، اما اگر به محدودیت برخوردید، این را در نظر بگیرید:

bash
# Split large files during build
npm run build

محدودیت اندازهٔ Worker ​

اگر از Cloudflare Workers برای مسیریابی پیشرفته استفاده می‌کنید، به محدودیت ۱ مگابایت در طرح‌های رایگان توجه کنید.

Worker پراکسی CORS (برای امضاهای دیجیتال) ​

ابزار امضای دیجیتال برای دریافت زنجیرهٔ گواهی‌ها به یک پراکسی CORS نیاز دارد. worker همراه را مستقر کنید:

bash
cd cloudflare
npx wrangler login
npx wrangler deploy

ویژگی‌های امنیتی ​

ویژگیتوضیح
محدودیت URLفقط URLهای گواهی مجاز هستند
محدودیت اندازهٔ فایلحداکثر 10MB برای هر درخواست
محدودسازی نرخ۶۰ درخواست برای هر IP در دقیقه (نیازمند 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 و مجوز تجاری.