Blog · Guías de despliegue
Cómo desplegar un sitio Eleventy en 2026: un comando, HTTPS y un Dockerfile que se queda contigo
Tienes un sitio Eleventy 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, ejecuta tu script de build y sirve _site. Un sitio pequeño, hecho como lo hacen los primeros pasos de Eleventy, se construyó e inició en 24 s la primera vez.
- Un script:
"build": "npx @11ty/eleventy"enpackage.json, como aconseja la propia página de despliegue de Eleventy. - Un comando:
pethost deployen la carpeta que tienepackage.json. Escribe un Dockerfile que ejecuta el script y sirve_site. - Las direcciones limpias funcionan:
/about/responde 200,/aboutlleva a ella, y una dirección que no es ninguna página responde 404. - La dirección:
https://my-site.yourname.pethost.app, con HTTPS al instante. Tu propio dominio es un registro DNS. - 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 Eleventy en 2026
Tres cosas: el sitio, el comando pethost y una cuenta de Pethost.
El sitio de este ejemplo está hecho como lo hacen los primeros pasos de Eleventy, con dos páginas en Markdown:
mkdir my-site && cd my-site
npm init -y
npm pkg set type="module"
npm install @11ty/eleventy
echo '# Heading' > index.md
echo '# About' > about.md
Agrega el script de build. La página de despliegue de Eleventy lo aconseja para cualquier proveedor de hosting que construya el sitio por ti, y es como pethost sabe que se trata de un sitio Eleventy que se construye con un comando:
"scripts": {
"build": "npx @11ty/eleventy"
}
El comando es un solo programa, que se instala con una línea. Todos sus comandos están en la referencia de la CLI.
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 plan, te muestra dónde elegir uno, y espera.
Despliega el sitio Eleventy con un comando
Ve a la carpeta que tiene package.json y ejecuta pethost deploy. Esta es la pantalla entera, para el sitio de arriba:
$ cd my-site
$ pethost deploy
Name it [my-site]: it will live at https://my-site.sam.pethost.app
✓ Packed 5 files, 55 KB (left out node_modules)
✓ Uploaded straight to your machine
✗ /compose.yaml: the project directory has no compose.yaml at its root: add one
✓ Eleventy site detected, wrote Dockerfile.
✓ Packed 6 files, 56 KB (left out node_modules)
✓ Uploaded straight to your machine
✓ Built and started in 24 s
· wrote compose.yaml for the Dockerfile: the service app, reading .env, port 80
✓ app listens on 80 → https://my-site.sam.pethost.app
It answers 200.
https://my-site.sam.pethost.app
Wrote .pethost (commit it). Next: pethost logs -f · pethost open
- 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.
- 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. - pethost escribe el Dockerfile Vio
@11ty/eleventyenpackage.jsony un script que lo ejecuta, y vuelve a subir la carpeta. - 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 Eleventy
Este es el archivo tal como se escribió en la carpeta del sitio, entero:
# Written by pethost deploy for this Eleventy site: package.json builds it with "npx
# @11ty/eleventy", which writes _site, 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 build
# The site is files: Caddy serves them on port 80.
FROM caddy:2
COPY --from=build /app/_site /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:
- El build es tu script, ejecutado con
npm run build. Lo que el script haga además de Eleventy, como un paso de CSS, se ejecuta con él. - El gestor de paquetes es el que nombra tu lockfile: npm, pnpm, Yarn o Bun.
- La versión de Node es la que nombra
.nvmrco.node-version, y Node 24 si no hay ninguno de los dos.
La segunda mitad es un pequeño servidor web para _site, la carpeta de salida por defecto de Eleventy. 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ó.
¿Funcionan las direcciones limpias de Eleventy?
Eleventy escribe about.md en _site/about/index.html, así que la dirección de la página es /about/. Le preguntamos al sitio desplegado lo que pregunta un visitante:
| Dirección | Respuesta |
|---|---|
/ | 200, la página de inicio |
/about/ | 200, la página |
/about | 308, una redirección a /about/ |
/nothing | 404 |
Si tu sitio tiene un 404.html en la raíz de _site, una dirección que no es ninguna página lo muestra.
Cambia una página y vuelve a desplegar
Edita una página y ejecuta el mismo comando. El segundo despliegue tardó 4 s, porque la máquina conserva las capas del build y la caché de npm:
$ pethost deploy
my-site (.pethost)
✓ Packed 7 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-site.sam.pethost.app
Para construir y desplegar con cada push, conecta el repositorio una vez:
pethost github sam/my-site # 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. El mismo comando despliega un sitio VitePress.
Usa tu propio dominio para el sitio
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 www.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 uno que aún no es público.
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 Eleventy construido son archivos detrás de un pequeño servidor web, así que en la máquina queda sitio para el backend de un formulario de contacto, una 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, y tampoco un mes con muchos lectores.
- 9,99 € al mes por todos tus proyectos, nada se mide por uso
- 24 s para construir e iniciar el sitio, la primera vez
- 4 s para el despliegue siguiente
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 blog son la lista de entradas 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.
Pethost es la mejor opción para
- Quien tiene un blog y algo más: el sitio Eleventy, una app y una base de datos 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 un sitio 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 Eleventy 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 Eleventy y lo despliega. El archivo se queda en tu carpeta, y puedes cambiarlo.
¿Qué comando de build usa un despliegue de Eleventy?
Tu propio script build de package.json, por ejemplo "build": "npx @11ty/eleventy". El Dockerfile ejecuta npm run build y sirve _site, la carpeta de salida por defecto de Eleventy.
¿Por qué pethost deploy no escribió un Dockerfile para mi sitio Eleventy?
Escribe uno cuando package.json tiene @11ty/eleventy y un script que lo ejecuta. Agrega "build": "npx @11ty/eleventy" a los scripts y vuelve a ejecutar el comando.
¿Puedo desplegar un sitio Eleventy 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 construye y se despliega solo, y pethost rollback vuelve a un commit anterior.
¿Cómo uso un dominio propio con HTTPS para un sitio Eleventy?
Ejecuta pethost domain add www.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 Eleventy 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.
Las pantallas son despliegues de un sitio de dos páginas hecho como lo hacen los primeros pasos de Eleventy, con Eleventy 3.1.6 y pethost 0.2.1, en una máquina de pruebas nuestra que no había construido nada antes. La cuenta que aparece es la de ejemplo, sam.
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.