Files
bentopdf/docs/fa/self-hosting/vercel.md

4.7 KiB

استقرار روی Vercel

Vercel ساده‌ترین تجربهٔ استقرار را برای سایت‌های ایستا ارائه می‌دهد.

استقرار با یک کلیک

استقرار با Vercel

استقرار دستی

گام ۱: فورک کردن مخزن

مخزن bentopdf/bentopdf را در حساب GitHub خود فورک کنید.

گام ۲: وارد کردن به Vercel

  1. به vercel.com/new بروید
  2. مخزن فورک‌شدهٔ خود را انتخاب کنید
  3. پروژه را پیکربندی کنید:
تنظیم مقدار
Framework Preset Vite
Build Command npm run build
Output Directory dist
Install Command npm install

گام ۳: متغیرهای محیطی (اختیاری)

در صورت نیاز این موارد را اضافه کنید:

متغیر توضیح
SIMPLE_MODE برای رابط کاربری حداقلی روی true تنظیم کنید
VITE_BRAND_NAME نام برند سفارشی (جایگزین «BentoPDF»)
VITE_BRAND_LOGO مسیر لوگو نسبت به public/ (مثلاً images/my-logo.svg)
VITE_FOOTER_TEXT متن سفارشی پاورقی/حق نشر
VITE_DEFAULT_LANGUAGE زبان پیش‌فرض رابط کاربری (مثلاً fr، de، es)

گام ۴: استقرار

روی «Deploy» کلیک کنید و منتظر بمانید تا ساخت کامل شود.

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

  1. به تنظیمات پروژه بروید
  2. به بخش «Domains» بروید
  3. دامنهٔ سفارشی خود را اضافه کنید
  4. DNS را طبق دستورالعمل پیکربندی کنید

محدودیت‌ها

::: warning فایل‌های بزرگ توابع serverless در Vercel محدودیت ۵۰ مگابایت دارند. از آنجا که BentoPDF یک سایت ایستاست، این موضوع نباید بر شما اثر بگذارد، اما ماژول‌های WASM بزرگ هستند (در مجموع حدود ۱۰۰ مگابایت). مطمئن شوید که از پوشهٔ /public ارائه می‌شوند. :::

عیب‌یابی

پایان زمان ساخت

اگر زمان ساخت به پایان می‌رسد، این را امتحان کنید:

// vercel.json
{
  "buildCommand": "npm run build",
  "outputDirectory": "dist"
}

خطای 404 هنگام تازه‌سازی

برای مسیریابی SPA یک فایل vercel.json اضافه کنید:

{
  "rewrites": [{ "source": "/(.*)", "destination": "/index.html" }]
}

تبدیل Word/ODT/Excel به PDF کار نمی‌کند

تبدیل‌های LibreOffice WASM به SharedArrayBuffer نیاز دارند که آن هم به این هدرهای پاسخ در همهٔ صفحات نیاز دارد:

  • Cross-Origin-Embedder-Policy: require-corp
  • Cross-Origin-Opener-Policy: same-origin

فایل‌های از پیش فشرده‌شدهٔ .wasm.gz و .data.gz نیز به Content-Encoding: gzip نیاز دارند تا مرورگر آن‌ها را از حالت فشرده خارج کند.

این موارد را به vercel.json خود اضافه کنید:

{
  "rewrites": [{ "source": "/(.*)", "destination": "/index.html" }],
  "headers": [
    {
      "source": "/(.*)",
      "headers": [
        { "key": "Cross-Origin-Embedder-Policy", "value": "require-corp" },
        { "key": "Cross-Origin-Opener-Policy", "value": "same-origin" },
        { "key": "Cross-Origin-Resource-Policy", "value": "cross-origin" }
      ]
    },
    {
      "source": "/libreoffice-wasm/soffice.wasm.gz",
      "headers": [
        { "key": "Content-Type", "value": "application/wasm" },
        { "key": "Content-Encoding", "value": "gzip" }
      ]
    },
    {
      "source": "/libreoffice-wasm/soffice.data.gz",
      "headers": [
        { "key": "Content-Type", "value": "application/octet-stream" },
        { "key": "Content-Encoding", "value": "gzip" }
      ]
    }
  ]
}

برای بررسی، Console در DevTools را باز کنید و console.log(window.crossOriginIsolated) را اجرا کنید؛ باید true برگرداند.