mirror of
https://github.com/alam00000/bentopdf.git
synced 2026-11-13 17:54:19 +01:00
Reset branch to main
This commit is contained in:
606 files changed
+189973
-43355
No files matched your search
@@ -0,0 +1,122 @@
|
||||
# Deploy to Vercel
|
||||
|
||||
[Vercel](https://vercel.com) offers the easiest deployment experience for static sites.
|
||||
|
||||
## One-Click Deploy
|
||||
|
||||
[](https://vercel.com/new/clone?repository-url=https://github.com/alam00000/bentopdf)
|
||||
|
||||
## Manual Deployment
|
||||
|
||||
### Step 1: Fork the Repository
|
||||
|
||||
Fork [bentopdf/bentopdf](https://github.com/alam00000/bentopdf) to your GitHub account.
|
||||
|
||||
### Step 2: Import to Vercel
|
||||
|
||||
1. Go to [vercel.com/new](https://vercel.com/new)
|
||||
2. Select your forked repository
|
||||
3. Configure the project:
|
||||
|
||||
| Setting | Value |
|
||||
| ---------------- | --------------- |
|
||||
| Framework Preset | Vite |
|
||||
| Build Command | `npm run build` |
|
||||
| Output Directory | `dist` |
|
||||
| Install Command | `npm install` |
|
||||
|
||||
### Step 3: Environment Variables (Optional)
|
||||
|
||||
Add these if needed:
|
||||
|
||||
| Variable | Description |
|
||||
| ----------------------- | ----------------------------------------------------------- |
|
||||
| `SIMPLE_MODE` | Set to `true` for minimal UI |
|
||||
| `VITE_BRAND_NAME` | Custom brand name (replaces "BentoPDF") |
|
||||
| `VITE_BRAND_LOGO` | Logo path relative to `public/` (e.g. `images/my-logo.svg`) |
|
||||
| `VITE_FOOTER_TEXT` | Custom footer/copyright text |
|
||||
| `VITE_DEFAULT_LANGUAGE` | Default UI language (e.g. `fr`, `de`, `es`) |
|
||||
|
||||
### Step 4: Deploy
|
||||
|
||||
Click "Deploy" and wait for the build to complete.
|
||||
|
||||
## Custom Domain
|
||||
|
||||
1. Go to your project settings
|
||||
2. Navigate to "Domains"
|
||||
3. Add your custom domain
|
||||
4. Configure DNS as instructed
|
||||
|
||||
## Limitations
|
||||
|
||||
::: warning Large Files
|
||||
Vercel's serverless functions have a 50MB limit. Since BentoPDF is a static site, this shouldn't affect you, but WASM modules are large (~100MB total). Ensure they're served from the `/public` folder.
|
||||
:::
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Build Timeout
|
||||
|
||||
If builds timeout, try:
|
||||
|
||||
```json
|
||||
// vercel.json
|
||||
{
|
||||
"buildCommand": "npm run build",
|
||||
"outputDirectory": "dist"
|
||||
}
|
||||
```
|
||||
|
||||
### 404 on Refresh
|
||||
|
||||
Add a `vercel.json` for SPA routing:
|
||||
|
||||
```json
|
||||
{
|
||||
"rewrites": [{ "source": "/(.*)", "destination": "/index.html" }]
|
||||
}
|
||||
```
|
||||
|
||||
### Word/ODT/Excel to PDF Not Working
|
||||
|
||||
LibreOffice WASM conversions require `SharedArrayBuffer`, which needs these response headers on all pages:
|
||||
|
||||
- `Cross-Origin-Embedder-Policy: require-corp`
|
||||
- `Cross-Origin-Opener-Policy: same-origin`
|
||||
|
||||
The pre-compressed `.wasm.gz` and `.data.gz` files also need `Content-Encoding: gzip` so the browser decompresses them.
|
||||
|
||||
Add these to your `vercel.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"rewrites": [{ "source": "/(.*)", "destination": "/index.html" }],
|
||||
"headers": [
|
||||
{
|
||||
"source": "/(.*)",
|
||||
"headers": [
|
||||
{ "key": "Cross-Origin-Embedder-Policy", "value": "require-corp" },
|
||||
{ "key": "Cross-Origin-Opener-Policy", "value": "same-origin" },
|
||||
{ "key": "Cross-Origin-Resource-Policy", "value": "cross-origin" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"source": "/libreoffice-wasm/soffice.wasm.gz",
|
||||
"headers": [
|
||||
{ "key": "Content-Type", "value": "application/wasm" },
|
||||
{ "key": "Content-Encoding", "value": "gzip" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"source": "/libreoffice-wasm/soffice.data.gz",
|
||||
"headers": [
|
||||
{ "key": "Content-Type", "value": "application/octet-stream" },
|
||||
{ "key": "Content-Encoding", "value": "gzip" }
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
To verify, open DevTools Console and run `console.log(window.crossOriginIsolated)` — it should return `true`.
|
||||
Reference in new issue
Block a user