Развертывание Nuxt на Lizard

Запустите Nuxt на Lizard с пресетом node-server от Nitro. Сборка создаёт .output/server/index.mjs, а процесс Node.js обслуживает страницы и серверные маршруты на порту 3000. Для сгенерированного сайта на порту 80 используйте рецепт для статических сайтов ниже.

Настройка продакшн-сборки

Используйте актуальный Lizard CLI из раздела Подготовка проекта. Версия 0.3.95 исключает метаданные macOS-архивов при загрузке. Если старый CLI сообщает об ошибке маршрута ._*.ts, обновите CLI и загрузите снова.

Установите пресет в nuxt.config.ts:

export default defineNuxtConfig({
  nitro: { preset: 'node-server' },
});

Объедините эти скрипты в package.json, сохраняя остальные скрипты, необходимые вашему приложению:

{
  "scripts": {
    "dev": "nuxt dev",
    "build": "nuxt build",
    "start": "HOST=0.0.0.0 PORT=3000 node .output/server/index.mjs"
  }
}

Скрипт запуска использует оболочку Linux в контейнере развертывания. lizardpack определяет зависимость nuxt и запускает скрипты сборки и запуска. В новом проекте Nuxt может не быть start; добавьте его вместо того, чтобы полагаться на то, что nuxt dev обслужит продакшн-сборку.

НастройкаЗначение
Сборкаnpm run build
Точка входа сервера.output/server/index.mjs
Запускnpm run start
Порт сервиса3000

Проверка собранного приложения

npm ci
npm run build
npm run start

Откройте http://localhost:3000, запросите внутреннюю страницу напрямую и вызовите один из ваших маршрутов server/api, если они есть. Убедитесь, что отчёт сборки указывает на пресет Node-сервера. Пресет Nitro для конкретного провайдера может создать другую точку входа.

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

После настройки CLI выполните из каталога Nuxt-приложения:

lizard init --name nuxt-app
lizard add --service web
lizard up --service web --port 3000
lizard logs --build --service web --json
lizard logs --service web --json
lizard ps --json

Не включайте в загрузку файлы .nuxt/, .output/, node_modules/ и .env. Включайте исходный код, конфигурацию и локфайл. Существующие переопределения сборки/запуска сервиса обходят используемое здесь определение; см. порядок решения о сборке.

Среда выполнения-конфигурация

Объявите настройки времени выполнения в runtimeConfig и настройте соответствующие значения NUXT_* для сервиса. Храните секреты вне runtimeConfig.public; публичная часть попадает в браузер. Значения, используемые для предрендеринга страниц, всё равно влияют на сгенерированную сборку, поэтому проверяйте как маршруты времени запроса, так и предрендеренные маршруты после изменений.

Используйте переменные и секреты для настройки сервиса и хранилище и восстановление для долговечных данных. Не рассматривайте локальный кэш или файл сессии как общее хранилище между репликами.

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

Если процесс сообщает об отсутствующем .output/server/index.mjs, проверьте пресет и вывод сборки. Если сообщается об отсутствующем скрипте запуска, добавьте приведённый выше. Если сайт никогда не становится здоровым, проверьте хост и порт.

Для чисто сгенерированного Nuxt-сайта обслуживайте .output/public/ с помощью статического Dockerfile и правильной обработкой маршрутов. Не запускайте этот вывод командой Node из примера выше. Руководство по развертыванию Nuxt объясняет выводы Node и генерации; статические маршруты и 404 описывает настройку статического сервера Lizard.

Генерация статического сайта

Для HTML-генерации замените Node-пресет на явные настройки prerender и измените скрипт сборки на nuxt generate:

export default defineNuxtConfig({
  nitro: {
    prerender: { crawlLinks: true, routes: ['/'] },
  },
});

Добавьте нелинкованные или динамические маршруты в routes, когда краулер не может их обнаружить. Запустите npm run build и убедитесь, что существуют .output/public/index.html и файлы ваших внутренних маршрутов. В тесте с Nuxt 4.5.2 сохранение preset: 'node-server' при переключении только на nuxt generate дало fallback-страницы без маршрутов сайта. Успешная сборка сама по себе не гарантировала, что экспорт содержит сайт.

Используйте Dockerfile и конфигурацию nginx из статических маршрутов и 404 со скриптом сборки build, выходной директорией .output/public и портом сервиса 80. Статический контейнер не запускает серверные маршруты Nuxt и не читает runtime config для уже сгенерированных страниц.

См. проверенные версии и результаты в облаке для проверок развертывания от 9 сентября 2026 г. и их ограничений.