Русский

Блог · Гайды по деплою

Как задеплоить сайт на VitePress в 2026: одна команда, HTTPS и Dockerfile, который остается у вас

Команда Pethost · · Обновлено · 8 мин чтения

У вас есть сайт на VitePress, который собирается на ноутбуке, и вы хотите выложить его по адресу с HTTPS. На Pethost это одна команда, pethost deploy, в папке, где лежит package.json. Она сама пишет Dockerfile, собирает сайт и печатает его адрес. Стартовый сайт самого VitePress в первый раз собрался и запустился за 43 секунды.

Коротко
  • Одна команда: pethost deploy в папке с package.json. Не нужно ни писать конфиг, ни заполнять настройки сборки.
  • Что она делает: находит скрипт, который запускает vitepress build, пишет Dockerfile, который его выполняет, и отдает docs/.vitepress/dist.
  • Адрес: https://my-docs.yourname.pethost.app, сразу с HTTPS. Свой домен — одна DNS-запись.
  • Dockerfile ваш: он остается в папке, его можно хранить и менять, и pethost больше никогда его не перепишет.
  • Цена: 9,99 € в месяц за 2 vCPU, 3 GB и 30 GB — для этого сайта и всех остальных ваших проектов. Бесплатного тарифа нет.

Что нужно, чтобы задеплоить сайт на VitePress в 2026 году

Три вещи: сам сайт, команда pethost и аккаунт Pethost.

Сайт — это папка в том виде, в каком ее оставляет руководство VitePress по началу работы: npm add -D vitepress, затем npx vitepress init. Мастер кладет страницы в docs/, а в package.json — три скрипта:

"scripts": {
  "docs:dev": "vitepress dev ./docs",
  "docs:build": "vitepress build ./docs",
  "docs:preview": "vitepress preview ./docs"
}

Команда — это одна программа, которая ставится одной строкой:

curl -fsSL https://pethost.dev/install.sh | sh      # macOS, Linux
irm https://pethost.dev/install.ps1 | iex           # Windows, in PowerShell

Аккаунту нужен тариф. Если вы не вошли, pethost deploy откроет браузер, и вы войдете. Если тарифа еще нет, команда покажет, где его выбрать, и подождет.

Деплой сайта на VitePress одной командой

Перейдите в папку с package.json и запустите pethost deploy. Вот весь экран для стартового сайта, который пишет vitepress init:

$ cd my-docs
$ pethost deploy
Name it [my-docs]:    it will live at https://my-docs.sam.pethost.app
✓ Packed 6 files, 90 KB   (left out node_modules)
✓ Uploaded straight to your machine
✗ /compose.yaml: the project directory has no compose.yaml at its root: add one
✓ VitePress site detected, wrote Dockerfile.
✓ Packed 7 files, 91 KB   (left out node_modules)
✓ Uploaded straight to your machine
✓ Built and started in 43 s
  · wrote compose.yaml for the Dockerfile: the service app, reading .env, port 80
✓ app listens on 80 → https://my-docs.sam.pethost.app
  It answers 200.

https://my-docs.sam.pethost.app

Wrote .pethost (commit it). Next:   pethost logs -f   ·   pethost open
  1. Она спрашивает одно Имя проекта — первое слово его адреса. Enter берет имя папки.
  2. Машина не находит, что запускать Папка уходит прямо на вашу машину, без node_modules. Строка с крестиком — ее ответ: проект запускается из Dockerfile или Compose-файла, а в папке пока нет ни того, ни другого.
  3. pethost пишет Dockerfile Он увидел vitepress в package.json и скрипт, который запускает vitepress build, и загружает папку снова.
  4. Машина собирает и запускает его Затем pethost сам открывает адрес и печатает, что тот ответил: 200.

Файл .pethost говорит, какой проект в этой папке. Закоммитьте его вместе с Dockerfile, и следующий деплой ничего не спросит.

Dockerfile, который pethost пишет для VitePress

Вот этот файл целиком, каким он был записан в папку стартового сайта:

# Written by pethost deploy for this VitePress site: package.json builds it with
# "vitepress build ./docs", which writes docs/.vitepress/dist, Node 24 (no .nvmrc names
# another), npm installs it (package-lock.json).
# It is yours now: change it as you like. pethost does not write it again.

FROM node:24 AS build
WORKDIR /app

COPY . .

# Every dependency: what builds the project, and may start it, is among the ones for
# development.
RUN --mount=type=cache,target=/root/.npm \
    npm install

RUN npm run docs:build

# The site is files: Caddy serves them on port 80.
FROM caddy:2
COPY --from=build /app/docs/.vitepress/dist /srv

COPY <<'EOF' /etc/caddy/Caddyfile
:80 {
	root * /srv
	# A browser that takes its answers compressed gets them so.
	encode
	# Names that begin with a dot are no pages;
	# .well-known is the one such folder that is there for visitors.
	@own {
		path */.*
		not path /.well-known/*
	}
	error @own 404
	# A page's address works without its ".html", and a folder's leads to its index.html.
	try_files {path} {path}.html {path}/
	file_server
	# An address that is no page: the site's own 404.html, if it has one.
	handle_errors 404 {
		rewrite * /404.html
		file_server
	}
}
EOF
EXPOSE 80

Его первые строки говорят, что pethost прочитал в вашей папке. Оттуда берутся три вещи:

Вторая половина — небольшой веб-сервер для собранных страниц. Мы спросили у задеплоенного стартового сайта то же, что спрашивает посетитель. Главная страница, /markdown-examples и /markdown-examples.html ответили 200, а адрес, по которому нет страницы, — 404 с собственной страницей «404» VitePress.

Еще две вещи не дают неправильному файлу до вас добраться. Если машина не может собрать или запустить Dockerfile, который написал pethost, pethost убирает файл из вашей папки и говорит, что не получилось. А если в вашем конфиге base задан как путь вроде /docs/, pethost ничего не пишет и объясняет почему: на Pethost сайт находится в корне собственного адреса, так что задайте base значение "/" и задеплойте снова.

Изменить страницу и задеплоить снова

Отредактируйте страницу и запустите ту же команду. Второй деплой стартового сайта занял 4 секунды, потому что машина хранит слои сборки:

$ pethost deploy
my-docs (.pethost)
✓ Packed 8 files · uploaded · built and started in 4 s
  · wrote compose.yaml for the Dockerfile: the service app, reading .env, port 80
  · kept the project's x-pethost
  It answers 200.
https://my-docs.sam.pethost.app

Чтобы вместо этого деплоить каждый пуш, один раз подключите репозиторий:

pethost github sam/my-docs          # from now on, every push deploys itself

Pethost читает только те репозитории, к которым вы дали доступ его GitHub App. Если деплой пошел не так, pethost rollback возвращает предыдущую версию, а ваша машина хранит три версии до текущей. ИИ-агент может сделать все это за вас через MCP-сервер Pethost: как агент деплоит проект и присматривает за ним.

Свой домен для документации

Любое имя в домене вашего аккаунта сразу становится адресом с HTTPS. Для домена, которым вы владеете, нужны одна команда и одна DNS-запись:

pethost domain add docs.example.com

Команда печатает запись, которую нужно создать: CNAME с вашего имени на имя вашей машины. Сертификат появляется сам, как только имя начинает указывать на машину, и сам продлевается. pethost password ставит страницу с паролем перед всем сайтом — для документации, которая еще не публичная.

Что вы получаете за эти деньги

Pethost стоит 9,99 € в месяц за все, что вы хостите, на 2 vCPU, 3 GB памяти и 30 GB диска. Собранный сайт на VitePress — это файлы за одним небольшим веб-сервером, так что на машине остается место для приложения, которое описывает документация, его базы данных и других ваших проектов. Платы за проект нет, и ничего не считается по счетчику: второй сайт не стоит ничего сверху.

Что уже сделано за вас: HTTPS с сертификатами, которые продлеваются сами, деплои из GitHub, ночные бэкапы, которые хранятся 14 дней, SSH в любой контейнер и учет каждого запроса. Панель показывает самые популярные пути за последние 30 дней, а для сайта документации это список страниц, которые люди действительно читают. Машина всегда включена, поэтому страница никогда не ждет холодного старта. Тарифы — в разделе цен на главной странице.

Какие страницы читают. Десять самых популярных путей проекта с долей и временем ответа, и лог отдельных запросов.
Панель Pethost: десять самых популярных путей проекта с долей, числом запросов и временем ответа, и лог отдельных запросов.

Pethost — лучший выбор для

  • Разработчиков, которые держат документацию рядом с приложением: API, его база данных и сайт на VitePress на одной машине, с одним счетом
  • Разработчиков-одиночек с несколькими личными проектами, у каждого из которых свой сайт
  • Людей, за которых деплоит агент: Claude Code или Codex выкладывает сайт и читает его логи
  • Небольших команд, которым нужна документация за страницей с паролем до запуска

Ищите другое, если

  • Вашему приложению нужны несколько регионов или автомасштабирование

Вопросы

Нужен ли Dockerfile, чтобы задеплоить сайт на VitePress?

На Pethost проект запускается из Dockerfile или Compose-файла, и писать его самому не нужно: в папке, где нет ни того, ни другого, pethost deploy пишет Dockerfile для сайта на VitePress и деплоит его. Файл остается в вашей папке, и его можно менять.

Какой менеджер пакетов и какую версию Node использует сборка VitePress?

Те, что указаны в вашей папке. Менеджер пакетов — тот, что у вашего lock-файла: npm, pnpm, Yarn или Bun. Версия Node — та, что в .nvmrc или .node-version, а если нет ни того, ни другого — Node 24.

Можно ли деплоить VitePress из GitHub при каждом пуше?

Да. Один раз задеплойте папку через pethost deploy, затем запустите pethost github owner/repository. С этого момента каждый пуш в репозиторий сам деплоится, а pethost rollback возвращает более ранний коммит.

Как подключить свой домен с HTTPS к сайту на VitePress?

Запустите pethost domain add docs.example.com и создайте одну DNS-запись, которую команда напечатает: CNAME на имя вашей машины. Сертификат появляется сам, как только имя начинает указывать на машину, и сам продлевается.

Сколько стоит хостинг сайта на VitePress на Pethost?

9,99 € в месяц за Starter: 2 vCPU, 3 GB и 30 GB без платы за проект, так что там же работают ваши другие сайты, приложения и базы данных. Бесплатного тарифа нет. Цены без НДС.

Почему pethost deploy отказывается деплоить сайт на VitePress с base?

Сайт, собранный с base, заданным как путь вроде /docs/, ищет свои стили и скрипты под этим путем. На Pethost сайт находится в корне собственного адреса, поэтому pethost не пишет для него Dockerfile и прямо об этом говорит. Задайте base значение "/" и задеплойте снова.

На экранах — деплои сайта, который пишет vitepress init, с VitePress 1.6.4 и pethost 0.2.1 на нашей тестовой машине. Аккаунт на них — пример, sam.

  1. VitePress: начало работы
  2. VitePress: деплой сайта
  3. pethost, командная строка Pethost

Запустите свои проекты уже сегодня

Деплойте приложения, ботов и базы данных из агента, с GitHub или в браузере, сколько поместится, по одной фиксированной цене. Ничего по счётчику, ничего сверху.

Разместить проекты за 9,99 €/мес