Українська

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

Як задеплоїти сайт на VitePress у 2026: одна команда, HTTPS і Dockerfile, що лишається у вас

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

У вас є сайт на 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 €/міс