mirror of
https://github.com/alam00000/bentopdf.git
synced 2026-11-05 20:02:47 +01:00
140 lines
4.8 KiB
Markdown
140 lines
4.8 KiB
Markdown
# Déployer sur Netlify
|
|
|
|
[Netlify](https://netlify.com) propose un excellent hébergement de sites statiques avec une offre gratuite généreuse.
|
|
|
|
## Déploiement en un clic
|
|
|
|
[](https://app.netlify.com/start/deploy?repository=https://github.com/alam00000/bentopdf)
|
|
|
|
## Déploiement manuel
|
|
|
|
### Étape 1 : connecter le dépôt
|
|
|
|
1. Connectez-vous à [Netlify](https://app.netlify.com)
|
|
2. Cliquez sur « Add new site » → « Import an existing project »
|
|
3. Connectez votre compte GitHub
|
|
4. 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 :
|
|
|
|
```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 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é
|
|
|
|
1. Allez dans Site settings → Domain management
|
|
2. Cliquez sur « Add custom domain »
|
|
3. Suivez les instructions de configuration DNS
|
|
|
|
## Large Media
|
|
|
|
Pour les gros fichiers WASM, envisagez d'activer [Netlify Large Media](https://docs.netlify.com/large-media/overview/):
|
|
|
|
```bash
|
|
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 :
|
|
|
|
```js
|
|
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 :
|
|
|
|
```toml
|
|
[build.environment]
|
|
NODE_VERSION = "20"
|
|
```
|
|
|
|
### Chargement initial lent
|
|
|
|
Activez l'optimisation des ressources dans Site settings → Build & deploy → Asset optimization.
|