Vai al contenuto

Distribuzione su Cloudflare Pages ​

Cloudflare Pages offre hosting di siti statici veloce e globale con banda illimitata.

Distribuzione rapida ​

  1. Vai su Cloudflare Pages
  2. Clicca su "Create a project"
  3. Collega il tuo repository GitHub

Configurazione della build ​

ImpostazioneValore
Framework presetNone
Build commandnpm run build
Build output directorydist
Root directory/

Variabili d'ambiente ​

Aggiungile in Settings → Environment variables:

VariabileValore
NODE_VERSION18
SIMPLE_MODEfalse (facoltativo)
VITE_BRAND_NAMENome del marchio personalizzato (facoltativo)
VITE_BRAND_LOGOPercorso del logo relativo a public/ (facoltativo)
VITE_FOOTER_TEXTTesto personalizzato del footer/copyright (facoltativo)
VITE_DEFAULT_LANGUAGELingua predefinita dell'interfaccia, es. fr (facoltativo)

File di configurazione ​

Crea _headers nella tua cartella public:

# 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

Importante

Gli header Cross-Origin-Embedder-Policy e Cross-Origin-Opener-Policy sono necessari per le conversioni da Word/ODT/Excel/PowerPoint a PDF. Senza di essi, SharedArrayBuffer non è disponibile e il motore LibreOffice WASM non riesce a inizializzarsi.

Crea _redirects per il routing SPA:

/*    /index.html   200

Dominio personalizzato ​

  1. Vai al tuo progetto Pages
  2. Clicca su "Custom domains"
  3. Aggiungi il tuo dominio
  4. Cloudflare configurerà automaticamente il DNS se il dominio è su Cloudflare

Vantaggi ​

  • Banda illimitata gratuita
  • CDN globale con oltre 300 sedi edge
  • HTTPS automatico
  • Anteprime di distribuzione per le pull request
  • Build veloci

Risoluzione dei problemi ​

Caricamento di file di grandi dimensioni ​

Cloudflare Pages supporta file fino a 25 MB. I moduli WASM dovrebbero andare bene, ma se raggiungi i limiti, valuta:

bash
# Split large files during build
npm run build

Limiti di dimensione dei Worker ​

Se usi Cloudflare Workers per un routing avanzato, tieni presente il limite di 1 MB dei piani gratuiti.

Worker proxy CORS (per le firme digitali) ​

Lo strumento di firma digitale richiede un proxy CORS per recuperare le catene di certificati. Distribuisci il worker incluso:

bash
cd cloudflare
npx wrangler login
npx wrangler deploy

Funzionalità di sicurezza ​

FunzionalitàDescrizione
Restrizioni sugli URLConsentiti solo URL di certificati
Limite di dimensioneMax 10MB per richiesta
Limitazione di frequenza60 richieste/IP/min (richiede KV)
Blocco degli IP privatiBlocca localhost e IP interni

Abilitare la limitazione di frequenza ​

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

Compilare con l'URL del proxy ​

bash
VITE_CORS_PROXY_URL=https://your-worker.workers.dev npm run build

Oppure con 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 .

Nota: consulta il README per la configurazione della firma HMAC.

Doppia licenza: AGPL-3.0 e Licenza commerciale.