4.8 KiB
Déployer sur Netlify
Netlify propose un excellent hébergement de sites statiques avec une offre gratuite généreuse.
Déploiement en un clic
Déploiement manuel
Étape 1 : connecter le dépôt
- Connectez-vous à Netlify
- Cliquez sur « Add new site » → « Import an existing project »
- Connectez votre compte GitHub
- Sélectionnez votre fork de BentoPDF
Étape 2 : configurer les paramètres de build
| Paramètre | Valeur |
|---|---|
| Commande de build | npm run build |
| Répertoire de publication | dist |
| Version de Node | 18+ |
Étape 3 : déployer
Cliquez sur « Deploy site » et attendez la fin du build.
Fichier de configuration
Créez netlify.toml à la racine de votre projet :
[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 Important
Les en-têtes Cross-Origin-Embedder-Policy et Cross-Origin-Opener-Policy sont nécessaires pour les conversions Word/ODT/Excel/PowerPoint vers PDF. Sans eux, SharedArrayBuffer n'est pas disponible et le moteur LibreOffice WASM ne parviendra pas à s'initialiser.
Les en-têtes Content-Encoding: gzip sur les fichiers .wasm.gz et .data.gz indiquent au navigateur de les décompresser automatiquement. Sans eux, le navigateur reçoit des octets gzip bruts et la compilation WASM échoue.
:::
Variables d'environnement
Définissez-les dans Site settings → Environment variables :
| Variable | Description |
|---|---|
SIMPLE_MODE |
Mettre à true pour un build minimal |
VITE_BRAND_NAME |
Nom de marque personnalisé (remplace « BentoPDF ») |
VITE_BRAND_LOGO |
Chemin du logo relatif à public/ (par ex. images/my-logo.svg) |
VITE_FOOTER_TEXT |
Texte personnalisé du pied de page/copyright |
VITE_DEFAULT_LANGUAGE |
Langue par défaut de l'interface (par ex. fr, de, es) |
Domaine personnalisé
- Allez dans Site settings → Domain management
- Cliquez sur « Add custom domain »
- Suivez les instructions de configuration DNS
Large Media
Pour les gros fichiers WASM, envisagez d'activer Netlify Large Media:
netlify lm:setup
git lfs track "*.wasm"
Dépannage
La conversion Word/ODT/Excel vers PDF reste bloquée à 55 %
Si les conversions de documents restent bloquées à 55 %, ouvrez la console des DevTools et vérifiez :
console.log(window.crossOriginIsolated); // should be true
console.log(typeof SharedArrayBuffer); // should be "function"
Si crossOriginIsolated vaut false, les en-têtes COEP/COOP de votre netlify.toml ne sont pas appliqués. Vérifiez que le fichier se trouve à la racine de votre projet et redéployez.
Si vous voyez expected magic word 00 61 73 6d, found 1f 8b 08 08 dans la console, il manque les en-têtes Content-Encoding: gzip sur les fichiers .wasm.gz. Assurez-vous que les blocs [[headers]] pour soffice.wasm.gz et soffice.data.gz figurent dans votre netlify.toml.
Échec du build
Vérifiez la compatibilité de la version de Node :
[build.environment]
NODE_VERSION = "20"
Chargement initial lent
Activez l'optimisation des ressources dans Site settings → Build & deploy → Asset optimization.