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

140 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Разгортванне на Netlify
[Netlify](https://netlify.com) прапануе выдатны хостынг статычных сайтаў са шчодрым бясплатным тарыфам.
## Разгортванне адным клікам
[![Разгарнуць на Netlify](https://www.netlify.com/img/deploy/button.svg)](https://app.netlify.com/start/deploy?repository=https://github.com/alam00000/bentopdf)
## Ручное разгортванне
### Крок 1: Падключыце рэпазіторый
1. Увайдзіце ў [Netlify](https://app.netlify.com)
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` у корані праекта:
```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](https://docs.netlify.com/large-media/overview/):
```bash
netlify lm:setup
git lfs track "*.wasm"
```
## Выпраўленне непаладак
### Word/ODT/Excel у PDF спыняецца на 55%
Калі пераўтварэнне дакументаў завісае на 55%, адкрыйце кансоль DevTools і праверце:
```js
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:
```toml
[build.environment]
NODE_VERSION = "20"
```
### Павольная першая загрузка
Уключыце аптымізацыю рэсурсаў у Site settings → Build & deploy → Asset optimization.