Files
bentopdf/docs/da/self-hosting/cloudflare.md
T

155 lines
4.6 KiB
Markdown

# Installer på Cloudflare Pages
[Cloudflare Pages](https://pages.cloudflare.com) tilbyder hurtig, global hosting af statiske sites med ubegrænset båndbredde.
## Hurtig installation
1. Gå til [Cloudflare Pages](https://dash.cloudflare.com/?to=/:account/pages)
2. Klik på "Create a project"
3. Forbind dit GitHub-repository
## Build-konfiguration
| Indstilling | Værdi |
| ---------------------- | --------------- |
| Framework preset | None |
| Build command | `npm run build` |
| Build output directory | `dist` |
| Root directory | `/` |
## Miljøvariabler
Tilføj disse under Settings → Environment variables:
| Variabel | Værdi |
| ----------------------- | ---------------------------------------------------- |
| `NODE_VERSION` | `18` |
| `SIMPLE_MODE` | `false` (valgfrit) |
| `VITE_BRAND_NAME` | Brugerdefineret brandnavn (valgfrit) |
| `VITE_BRAND_LOGO` | Logosti relativt til `public/` (valgfrit) |
| `VITE_FOOTER_TEXT` | Brugerdefineret footer-/copyrighttekst (valgfrit) |
| `VITE_DEFAULT_LANGUAGE` | Standardsprog i brugerfladen, f.eks. `fr` (valgfrit) |
## Konfigurationsfil
Opret `_headers` i din `public`-mappe:
```
# Required security headers for SharedArrayBuffer (used by LibreOffice WASM)
/*
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Resource-Policy: cross-origin
# Pre-compressed LibreOffice WASM binary
/libreoffice-wasm/soffice.wasm.gz
Content-Type: application/wasm
Content-Encoding: gzip
Cache-Control: public, max-age=31536000, immutable
# Pre-compressed LibreOffice WASM data
/libreoffice-wasm/soffice.data.gz
Content-Type: application/octet-stream
Content-Encoding: gzip
Cache-Control: public, max-age=31536000, immutable
# Cache WASM files aggressively
/*.wasm
Cache-Control: public, max-age=31536000, immutable
Content-Type: application/wasm
# Service worker
/sw.js
Cache-Control: no-cache
```
::: warning Vigtigt
Headerne `Cross-Origin-Embedder-Policy` og `Cross-Origin-Opener-Policy` er påkrævet til konvertering af Word/ODT/Excel/PowerPoint til PDF. Uden dem er `SharedArrayBuffer` ikke tilgængelig, og LibreOffice WASM-motoren kan ikke starte.
:::
Opret `_redirects` til SPA-routing:
```
/* /index.html 200
```
## Eget domæne
1. Gå til dit Pages-projekt
2. Klik på "Custom domains"
3. Tilføj dit domæne
4. Cloudflare konfigurerer automatisk DNS, hvis domænet ligger hos Cloudflare
## Fordele
- **Gratis, ubegrænset båndbredde**
- **Globalt CDN** med 300+ edge-lokationer
- **Automatisk HTTPS**
- **Preview-installationer** til pull requests
- **Hurtige builds**
## Fejlfinding
### Upload af store filer
Cloudflare Pages understøtter filer op til 25 MB. WASM-moduler bør være fine, men hvis du rammer grænser, kan du overveje:
```bash
# Split large files during build
npm run build
```
### Størrelsesgrænser for Workers
Hvis du bruger Cloudflare Workers til avanceret routing, skal du være opmærksom på grænsen på 1 MB for gratis planer.
## CORS-proxy-worker (til digitale signaturer)
Værktøjet til digital signatur kræver en CORS-proxy for at hente certifikatkæder. Installer den medfølgende worker:
```bash
cd cloudflare
npx wrangler login
npx wrangler deploy
```
### Sikkerhedsfunktioner
| Funktion | Beskrivelse |
| ------------------------------ | ----------------------------------- |
| **URL-begrænsninger** | Kun certifikat-URL'er tilladt |
| **Filstørrelsesgrænse** | Maks. 10MB pr. forespørgsel |
| **Rate limiting** | 60 forespørgsler/IP/min (kræver KV) |
| **Blokering af private IP'er** | Blokerer localhost og interne IP'er |
### Aktivér rate limiting
```bash
# Create KV namespace
npx wrangler kv namespace create "RATE_LIMIT_KV"
# Add to wrangler.toml with returned ID:
# [[kv_namespaces]]
# binding = "RATE_LIMIT_KV"
# id = "YOUR_ID"
npx wrangler deploy
```
### Byg med proxy-URL
```bash
VITE_CORS_PROXY_URL=https://your-worker.workers.dev npm run build
```
Eller med Docker:
```bash
export VITE_CORS_PROXY_URL="https://your-worker.workers.dev"
DOCKER_BUILDKIT=1 docker build \
--secret id=VITE_CORS_PROXY_URL,env=VITE_CORS_PROXY_URL \
-t your-bentopdf .
```
> **Bemærk:** Se [README](https://github.com/alam00000/bentopdf#digital-signature-cors-proxy-required) for opsætning af HMAC-signatur.