Files
bentopdf/docs/ru/self-hosting/vercel.md

4.9 KiB

Развертывание в Vercel

Vercel предлагает самый простой способ развертывания статических сайтов.

Развертывание в один клик

Deploy with Vercel

Ручное развертывание

Шаг 1: Сделайте форк репозитория

Сделайте форк bentopdf/bentopdf в свой аккаунт GitHub.

Шаг 2: Импортируйте в Vercel

  1. Перейдите на vercel.com/new
  2. Выберите свой форк репозитория
  3. Настройте проект:
Параметр Значение
Framework Preset Vite
Build Command npm run build
Output Directory dist
Install Command npm install

Шаг 3: Переменные окружения (необязательно)

Добавьте их при необходимости:

Переменная Описание
SIMPLE_MODE Укажите true для минимального интерфейса
VITE_BRAND_NAME Свое название бренда (заменяет «BentoPDF»)
VITE_BRAND_LOGO Путь к логотипу относительно public/ (например, images/my-logo.svg)
VITE_FOOTER_TEXT Свой текст подвала и авторских прав
VITE_DEFAULT_LANGUAGE Язык интерфейса по умолчанию (например, fr, de, es)

Шаг 4: Разверните

Нажмите «Deploy» и дождитесь завершения сборки.

Собственный домен

  1. Откройте настройки проекта
  2. Перейдите в раздел «Domains»
  3. Добавьте свой домен
  4. Настройте DNS по инструкции

Ограничения

::: warning Большие файлы У serverless-функций Vercel есть ограничение в 50 МБ. Поскольку BentoPDF является статическим сайтом, это не должно вас затронуть, но модули WASM велики (около 100 МБ в сумме). Убедитесь, что они раздаются из папки /public. :::

Устранение неполадок

Тайм-аут сборки

Если сборка завершается по тайм-ауту, попробуйте:

// vercel.json
{
  "buildCommand": "npm run build",
  "outputDirectory": "dist"
}

Ошибка 404 при обновлении страницы

Добавьте vercel.json для маршрутизации SPA:

{
  "rewrites": [{ "source": "/(.*)", "destination": "/index.html" }]
}

Конвертация Word/ODT/Excel в PDF не работает

Для конвертации через LibreOffice WASM нужен SharedArrayBuffer, а для него на всех страницах должны быть следующие заголовки ответа:

  • Cross-Origin-Embedder-Policy: require-corp
  • Cross-Origin-Opener-Policy: same-origin

Предварительно сжатым файлам .wasm.gz и .data.gz также нужен заголовок Content-Encoding: gzip, чтобы браузер их распаковывал.

Добавьте это в свой vercel.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" }
      ]
    }
  ]
}

Для проверки откройте консоль DevTools и выполните console.log(window.crossOriginIsolated): должно вернуться true.