Español

Blog · Guías de despliegue

Cómo desplegar un sitio VitePress en 2026: un comando, HTTPS y un Dockerfile que se queda contigo

Por el equipo de Pethost · · Actualizado · 9 min de lectura

Tienes un sitio VitePress que se construye en tu equipo, y quieres ponerlo en línea en una dirección con HTTPS. En Pethost es un comando, pethost deploy, ejecutado en la carpeta que tiene package.json. Él escribe el Dockerfile por ti, construye el sitio e imprime su dirección. El starter de VitePress se construyó e inició en 43 s la primera vez.

En resumen
  • Un comando: pethost deploy en la carpeta que tiene package.json. No hay archivo de configuración que escribir ni ajustes de build que rellenar.
  • Qué hace: encuentra el script que ejecuta vitepress build, escribe un Dockerfile que lo ejecuta y sirve docs/.vitepress/dist.
  • La dirección: https://my-docs.yourname.pethost.app, con HTTPS al instante. Tu propio dominio es un registro DNS.
  • El Dockerfile es tuyo: se queda en la carpeta para que lo conserves y lo cambies, y pethost no vuelve a escribirlo nunca.
  • El precio: 9,99 € al mes por 2 vCPU, 3 GB y 30 GB, para este sitio y cada uno de tus otros proyectos. No hay plan gratuito.

Qué necesitas para desplegar un sitio VitePress en 2026

Tres cosas: el sitio, el comando pethost y una cuenta de Pethost.

El sitio es una carpeta tal como la deja la guía de primeros pasos de VitePress: npm add -D vitepress y luego npx vitepress init. El asistente pone las páginas en docs/ y tres scripts en package.json:

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

El comando es un solo programa, que se instala con una línea:

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

La cuenta necesita un plan. Si no has iniciado sesión, pethost deploy abre tu navegador e inicia la sesión. Si aún no tienes un plan, te muestra dónde elegirlo, y espera.

Despliega el sitio VitePress con un comando

Ve a la carpeta que tiene package.json y ejecuta pethost deploy. Esta es la pantalla entera, para el starter que escribe 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. Pregunta una sola cosa El nombre del proyecto, que es la primera palabra de su dirección. Con Enter se queda el nombre de la carpeta.
  2. La máquina no encuentra nada que ejecutar La carpeta va directa a tu máquina, sin node_modules. La línea con la cruz es su respuesta: un proyecto se ejecuta desde un Dockerfile o un archivo de Compose, y la carpeta aún no tiene ninguno de los dos.
  3. pethost escribe el Dockerfile Vio vitepress en package.json y un script que ejecuta vitepress build, y vuelve a subir la carpeta.
  4. La máquina lo construye y lo inicia Después pethost visita la dirección él mismo e imprime lo que respondió: 200.

El archivo .pethost dice qué proyecto es esta carpeta. Haz commit de él junto con el Dockerfile, y el siguiente despliegue no pregunta nada.

El Dockerfile que pethost escribe para VitePress

Este es el archivo tal como se escribió en la carpeta del starter, entero:

# 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

Sus primeras líneas dicen lo que pethost leyó en tu carpeta. De ahí salen tres cosas:

La segunda mitad es un pequeño servidor web para las páginas construidas. Le preguntamos al starter desplegado lo que pregunta un visitante. La página de inicio, /markdown-examples y /markdown-examples.html respondieron 200 cada una, y una dirección que no es ninguna página respondió 404 con la propia página “404” de VitePress.

Dos cosas más evitan que te quedes con un archivo que no funciona. Si la máquina no puede construir o iniciar el Dockerfile que escribió pethost, pethost vuelve a sacar el archivo de tu carpeta y dice qué falló. Y si tu configuración pone base en un path como /docs/, pethost no escribe nada y dice por qué: en Pethost un sitio está en la raíz de su propia dirección, así que pon base en "/" y vuelve a desplegar.

Cambia una página y vuelve a desplegar

Edita una página y ejecuta el mismo comando. El segundo despliegue del starter tardó 4 s, porque la máquina conserva las capas del build:

$ 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

Para desplegar con cada push, conecta el repositorio una vez:

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

Pethost lee solo los repositorios que le diste a su GitHub App. Si un despliegue sale mal, pethost rollback vuelve a poner la versión anterior, y tu máquina conserva las tres versiones anteriores a la actual. Un agente de IA puede hacer todo esto por ti a través del servidor MCP de Pethost: cómo un agente despliega y cuida un proyecto.

Usa tu propio dominio para la documentación

Cualquier nombre bajo el dominio de tu cuenta es una dirección al instante, con HTTPS. Un dominio tuyo lleva un comando y un registro DNS:

pethost domain add docs.example.com

El comando imprime el registro que debes crear: un CNAME de tu nombre al nombre de tu máquina. El certificado llega solo en cuanto el nombre resuelve, y se renueva solo. pethost password pone una página de contraseña delante de todo el sitio, para una documentación que aún no es pública.

Qué obtienes por el precio

Pethost cuesta 9,99 € al mes por todo lo que alojas, con 2 vCPU, 3 GB de memoria y 30 GB de disco. Un sitio VitePress construido son archivos detrás de un pequeño servidor web, así que en la máquina queda sitio para la aplicación que describe la documentación, su base de datos y tus otros proyectos. No pagas por proyecto y nada se mide por uso: el segundo sitio no cuesta nada más.

Lo que ya está hecho por ti: HTTPS con certificados que se renuevan solos, despliegues desde GitHub, backups cada noche conservados 14 días, SSH a cualquier contenedor y cada petición contada. El panel muestra los paths más visitados de los últimos 30 días, que en un sitio de documentación son la lista de páginas que la gente lee de verdad. La máquina está siempre encendida, así que una página nunca espera un cold start. Los planes están en la parte de precios de la primera página.

Qué páginas lee la gente. Los diez paths más visitados de un proyecto con su cuota y sus tiempos de respuesta, y el log de cada petición.
El panel de Pethost: los diez paths más visitados de un proyecto con su cuota, su recuento y sus tiempos de respuesta, y el log de cada petición.

Pethost es la mejor opción para

  • Desarrolladores que tienen la documentación junto a la app: la API, su base de datos y su sitio VitePress en una sola máquina, en una sola factura
  • Desarrolladores en solitario con varios proyectos personales, cada uno con su propio sitio
  • Quien deja que su agente despliegue por él: Claude Code o Codex pone el sitio en línea y lee sus logs
  • Equipos pequeños que quieren la documentación detrás de una página de contraseña hasta el lanzamiento

Busca otra opción si

  • Tu aplicación necesita varias regiones o autoescalado

Preguntas

¿Un sitio VitePress necesita un Dockerfile para desplegarse?

En Pethost un proyecto se ejecuta desde un Dockerfile o un archivo de Compose, y no tienes que escribirlo tú: en una carpeta que no tiene ninguno de los dos, pethost deploy escribe el Dockerfile para un sitio VitePress y lo despliega. El archivo se queda en tu carpeta, y puedes cambiarlo.

¿Qué gestor de paquetes y qué versión de Node usa el build de VitePress?

Los que nombra tu carpeta. El gestor de paquetes es el de tu lockfile: npm, pnpm, Yarn o Bun. La versión de Node es la de .nvmrc o .node-version, y Node 24 si no hay ninguno de los dos.

¿Puedo desplegar VitePress desde GitHub con cada push?

Sí. Despliega la carpeta una vez con pethost deploy y luego ejecuta pethost github owner/repository. Desde entonces cada push al repositorio se despliega solo, y pethost rollback vuelve a un commit anterior.

¿Cómo uso un dominio propio con HTTPS para un sitio VitePress?

Ejecuta pethost domain add docs.example.com y crea el único registro DNS que imprime, un CNAME al nombre de tu máquina. El certificado llega solo en cuanto el nombre resuelve, y se renueva solo.

¿Cuánto cuesta alojar un sitio VitePress en Pethost?

9,99 € al mes por Starter, con 2 vCPU, 3 GB y 30 GB y sin pagar por proyecto: tus otros sitios, apps y bases de datos también se ejecutan ahí. No hay plan gratuito. Los precios son sin IVA.

¿Por qué pethost deploy rechaza un sitio VitePress que define base?

Un sitio construido con base en un path como /docs/ busca sus estilos y scripts bajo ese path. En Pethost un sitio está en la raíz de su propia dirección, así que pethost no escribe ningún Dockerfile para él y lo dice. Pon base en "/" y vuelve a desplegar.

Las pantallas son despliegues del sitio que escribe vitepress init, con VitePress 1.6.4 y pethost 0.2.1, en una máquina de pruebas nuestra. La cuenta que aparece es la de ejemplo, sam.

  1. VitePress: primeros pasos
  2. VitePress: despliega tu sitio
  3. pethost, la línea de comandos de Pethost

Pon tus proyectos en línea hoy

Despliega apps, bots y bases de datos desde tu agente, GitHub o el navegador, tantos como quepan, a un precio fijo. Nada medido, nada cobrado aparte.

Alojar todos tus proyectos por 9,99 €/mes