Files

4.6 KiB

Wdrożenie na Netlify

Netlify zapewnia świetny hosting statycznych stron z hojnym darmowym planem.

Wdrożenie jednym kliknięciem

Deploy to Netlify

Wdrożenie ręczne

Krok 1: Połącz repozytorium

  1. Zaloguj się do Netlify
  2. Kliknij "Add new site" → "Import an existing project"
  3. Połącz swoje konto GitHub
  4. Wybierz swój fork BentoPDF

Krok 2: Skonfiguruj ustawienia budowania

Ustawienie Wartość
Build command npm run build
Publish directory dist
Node version 18+

Krok 3: Wdróż

Kliknij "Deploy site" i poczekaj na zakończenie budowania.

Plik konfiguracyjny

Utwórz netlify.toml w katalogu głównym projektu:

[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 Ważne Nagłówki Cross-Origin-Embedder-Policy i Cross-Origin-Opener-Policy są wymagane do konwersji Word/ODT/Excel/PowerPoint na PDF. Bez nich SharedArrayBuffer jest niedostępny, a silnik LibreOffice WASM nie uruchomi się.

Nagłówki Content-Encoding: gzip przy plikach .wasm.gz i .data.gz informują przeglądarkę, że ma je automatycznie rozpakować. Bez nich przeglądarka otrzymuje surowe bajty gzip, a kompilacja WASM kończy się błędem. :::

Zmienne środowiskowe

Ustaw je w Site settings → Environment variables:

Zmienna Opis
SIMPLE_MODE Ustaw na true dla minimalnego builda
VITE_BRAND_NAME Własna nazwa marki (zastępuje "BentoPDF")
VITE_BRAND_LOGO Ścieżka do logo względem public/ (np. images/my-logo.svg)
VITE_FOOTER_TEXT Własny tekst stopki/praw autorskich
VITE_DEFAULT_LANGUAGE Domyślny język interfejsu (np. fr, de, es)

Własna domena

  1. Przejdź do Site settings → Domain management
  2. Kliknij "Add custom domain"
  3. Postępuj zgodnie z instrukcjami konfiguracji DNS

Duże pliki multimedialne

Dla dużych plików WASM rozważ włączenie Netlify Large Media:

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

Rozwiązywanie problemów

Konwersja Word/ODT/Excel na PDF zawiesza się na 55%

Jeśli konwersje dokumentów zawieszają się na 55%, otwórz konsolę DevTools i sprawdź:

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

Jeśli crossOriginIsolated ma wartość false, nagłówki COEP/COOP z Twojego netlify.toml nie są stosowane. Upewnij się, że plik jest w katalogu głównym projektu, i wdróż ponownie.

Jeśli w konsoli widzisz expected magic word 00 61 73 6d, found 1f 8b 08 08, pliki .wasm.gz nie mają nagłówków Content-Encoding: gzip. Upewnij się, że bloki [[headers]] dla soffice.wasm.gz i soffice.data.gz znajdują się w Twoim netlify.toml.

Budowanie kończy się błędem

Sprawdź zgodność wersji Node:

[build.environment]
  NODE_VERSION = "20"

Wolne pierwsze ładowanie

Włącz optymalizację zasobów w Site settings → Build & deploy → Asset optimization.