Files
bentopdf/docs/be/self-hosting/netlify.md
T

5.7 KiB
Raw Blame History

Разгортванне на Netlify

Netlify прапануе выдатны хостынг статычных сайтаў са шчодрым бясплатным тарыфам.

Разгортванне адным клікам

Разгарнуць на Netlify

Ручное разгортванне

Крок 1: Падключыце рэпазіторый

  1. Увайдзіце ў Netlify
  2. Націсніце "Add new site" → "Import an existing project"
  3. Падключыце свой уліковы запіс GitHub
  4. Выберыце свой форк BentoPDF

Крок 2: Наладзьце параметры зборкі

Налада Значэнне
Build command npm run build
Publish directory dist
Версія Node 18+

Крок 3: Разгортванне

Націсніце "Deploy site" і пачакайце завяршэння зборкі.

Файл канфігурацыі

Стварыце netlify.toml у корані праекта:

[build]
  command = "npm run build"
  publish = "dist"

[build.environment]
  NODE_VERSION = "18"

# Required security headers for SharedArrayBuffer (used by LibreOffice WASM)
[[headers]]
  for = "/*"
  [headers.values]
    Cross-Origin-Embedder-Policy = "require-corp"
    Cross-Origin-Opener-Policy = "same-origin"
    Cross-Origin-Resource-Policy = "cross-origin"

# Pre-compressed LibreOffice WASM binary - must be served with Content-Encoding
[[headers]]
  for = "/libreoffice-wasm/soffice.wasm.gz"
  [headers.values]
    Content-Type = "application/wasm"
    Content-Encoding = "gzip"
    Cache-Control = "public, max-age=31536000, immutable"

# Pre-compressed LibreOffice WASM data - must be served with Content-Encoding
[[headers]]
  for = "/libreoffice-wasm/soffice.data.gz"
  [headers.values]
    Content-Type = "application/octet-stream"
    Content-Encoding = "gzip"
    Cache-Control = "public, max-age=31536000, immutable"

# Cache other WASM files
[[headers]]
  for = "*.wasm"
  [headers.values]
    Cache-Control = "public, max-age=31536000, immutable"
    Content-Type = "application/wasm"

# SPA routing
[[redirects]]
  from = "/*"
  to = "/index.html"
  status = 200

::: warning Важна Загалоўкі Cross-Origin-Embedder-Policy і Cross-Origin-Opener-Policy патрэбныя для пераўтварэнняў Word/ODT/Excel/PowerPoint у PDF. Без іх SharedArrayBuffer недаступны, і рухавік LibreOffice WASM не ініцыялізуецца.

Загалоўкі Content-Encoding: gzip для файлаў .wasm.gz і .data.gz кажуць браўзеру распакоўваць іх аўтаматычна. Без іх браўзер атрымлівае сырыя байты gzip, і кампіляцыя WASM завяршаецца памылкай. :::

Зменныя асяроддзя

Задайце іх у Site settings → Environment variables:

Зменная Апісанне
SIMPLE_MODE Задайце true для мінімальнай зборкі
VITE_BRAND_NAME Уласная назва брэнда (замяняе "BentoPDF")
VITE_BRAND_LOGO Шлях да лагатыпа адносна public/ (напрыклад, images/my-logo.svg)
VITE_FOOTER_TEXT Уласны тэкст ніжняга калантытула/аўтарскага права
VITE_DEFAULT_LANGUAGE Мова інтэрфейсу па змаўчанні (напрыклад, fr, de, es)

Уласны дамен

  1. Перайдзіце ў Site settings → Domain management
  2. Націсніце "Add custom domain"
  3. Выконвайце інструкцыі па наладзе DNS

Вялікія медыяфайлы

Для вялікіх файлаў WASM варта ўключыць Netlify Large Media:

netlify lm:setup
git lfs track "*.wasm"

Выпраўленне непаладак

Word/ODT/Excel у PDF спыняецца на 55%

Калі пераўтварэнне дакументаў завісае на 55%, адкрыйце кансоль DevTools і праверце:

console.log(window.crossOriginIsolated); // should be true
console.log(typeof SharedArrayBuffer); // should be "function"

Калі crossOriginIsolated роўна false, загалоўкі COEP/COOP з вашага netlify.toml не прымяняюцца. Пераканайцеся, што файл ляжыць у корані праекта, і разгарніце нанова.

Калі ў кансолі бачна expected magic word 00 61 73 6d, found 1f 8b 08 08, у файлаў .wasm.gz няма загалоўкаў Content-Encoding: gzip. Пераканайцеся, што блокі [[headers]] для soffice.wasm.gz і soffice.data.gz ёсць у вашым netlify.toml.

Памылка зборкі

Праверце сумяшчальнасць версіі Node:

[build.environment]
  NODE_VERSION = "20"

Павольная першая загрузка

Уключыце аптымізацыю рэсурсаў у Site settings → Build & deploy → Asset optimization.