---
title: "Cómo desplegar un sitio Jekyll en 2026"
description: "Despliega un sitio Jekyll con un Dockerfile corto y un comando: Ruby ejecuta jekyll build y Caddy sirve _site por HTTPS, por 9,99 € al mes."
---

[Blog](https://pethost.dev/es/blog/) · Guías de despliegue

# Cómo desplegar un sitio Jekyll en 2026: un Dockerfile, un comando y HTTPS

Por el equipo de Pethost · 25 de octubre de 2026 · 10 min de lectura

Tienes un sitio Jekyll que se construye en tu equipo con `bundle exec jekyll build`, y quieres ponerlo en línea en una dirección con HTTPS. En Pethost eso lleva un Dockerfile de 38 líneas, que copias de esta página, y un comando, `pethost deploy`. El sitio que crea `jekyll new` estuvo en línea en 34 segundos la primera vez, y en 3 segundos después de un cambio.

**En resumen**

- **Un archivo:** un Dockerfile en dos etapas. Ruby 4.0 ejecuta `bundle install` y `JEKYLL_ENV=production bundle exec jekyll build`, y luego Caddy sirve `_site`.
- **Un comando:** `pethost deploy` en la carpeta que tiene `_config.yml`. 34 s la primera vez, 3 s para el despliegue siguiente.
- **Las direcciones de Jekyll funcionan:** `/about/` responde 200, `/about` lleva a ella, una entrada responde con o sin `.html`, y una página que no existe muestra el propio `404.html` del sitio.
- **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 Jekyll en 2026

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

**El sitio** de este ejemplo es el que crea el quickstart de Jekyll. Jekyll pide Ruby 2.7.0 o superior; nosotros lo creamos con Ruby 4.0.9:

```
gem install jekyll bundler
jekyll new my-site
cd my-site
```

`jekyll new` escribe un `Gemfile` con Jekyll 4.4.1, el tema minima y el plugin jekyll-feed, ejecuta `bundle install`, que escribe `Gemfile.lock`, y agrega una página de inicio, una página “acerca de”, una entrada de bienvenida, un `404.html` y un `.gitignore` que deja fuera `_site`. Conserva `Gemfile.lock`: el build instala exactamente las gems que nombra.

**El comando** es un solo programa, que se instala con una línea. Todos sus comandos están en la [referencia de la CLI](https://pethost.dev/docs/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.

## Por qué un sitio Jekyll necesita un Dockerfile en Pethost

En Pethost un proyecto se ejecuta desde un Dockerfile o un archivo de Compose. Para los tipos de proyecto que conoce, como un [sitio Eleventy](https://pethost.dev/es/blog/deploy-eleventy-site/), `pethost deploy` escribe el Dockerfile él mismo. Jekyll no está entre ellos, así que en la carpeta que creó `jekyll new` el despliegue se detiene en la respuesta de la máquina. Esta es la pantalla entera:

```
$ pethost deploy
Name it [my-site]:              it will live at https://my-site.sam.pethost.app
✓ Packed 8 files, 17 KB
✓ Uploaded straight to your machine
✗ /compose.yaml: the project directory has no compose.yaml at its root: add one
  Your coding agent writes one in a minute: "Write a Dockerfile for this app".
  Then run pethost deploy again.     How Pethost runs a folder: https://pethost.dev/docs/api/#CreateProject
```

No se creó nada: ni proyecto ni dirección. Agrega el archivo de abajo y ejecuta el mismo comando.

## El Dockerfile para un sitio Jekyll

Guárdalo como `Dockerfile` en la carpeta que tiene `_config.yml`. Este es el archivo entero:

```
# Jekyll builds the site into _site, and Caddy serves it.
FROM ruby:4.0 AS build
WORKDIR /site

# The gems first: a change to a page does not install them again.
COPY Gemfile Gemfile.lock ./
RUN bundle install

COPY . .
RUN JEKYLL_ENV=production bundle exec jekyll build

# The site is files: Caddy serves them on port 80.
FROM caddy:2
COPY --from=build /site/_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
```

La primera etapa construye el sitio como lo haces tú en tu equipo:

- **`ruby:4.0`** es la imagen completa de Ruby, con un compilador de C. Algunas gems de Jekyll, como eventmachine y bigdecimal, se compilan al instalarse: en `ruby:4.0-slim`, que no tiene compilador, `bundle install` falló. Si tu sitio fija una versión de Ruby en `.ruby-version`, pon la misma aquí.
- **Las gems van primero.** `Gemfile` y `Gemfile.lock` se copian solos, así que un cambio en una página o una entrada reutiliza las gems que la máquina ya instaló. Un lock escrito en un Mac también funciona: construimos el sitio con un lock que solo nombraba macOS, y `bundle install` eligió por sí mismo las gems para Linux.
- **`JEKYLL_ENV=production`** es el build que indica el propio paso de despliegue de Jekyll. Lo que tus layouts muestran solo en producción, como la analítica, está en las páginas.

La segunda etapa es el pequeño servidor web que `pethost` escribe para cada sitio que son archivos. Sirve `_site`, la carpeta de salida de Jekyll, y nada de la imagen de Ruby va con él: el sitio se ejecutó en 15 MB de memoria.

## Despliega el sitio Jekyll con un comando

Vuelve a ejecutar `pethost deploy`, ahora con el Dockerfile en la carpeta. Esta es la pantalla entera:

```
$ pethost deploy
Name it [my-site]:              it will live at https://my-site.sam.pethost.app
✓ Packed 9 files, 18 KB
✓ Uploaded straight to your machine
✓ Built and started in 34 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
```

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 carpeta va directa a tu máquina** Nueve archivos: lo que escribió `jekyll new` y el Dockerfile. La línea que empieza con `·` es la máquina diciendo lo que hizo por sí misma: encontró un Dockerfile y ningún archivo de Compose, así que escribió uno.
3. **La máquina lo construye y lo inicia** Los 34 segundos incluyen la descarga de las imágenes de Ruby y de Caddy, que la máquina aún no tenía. 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.

### ¿Funcionan las direcciones de Jekyll?

Jekyll escribe `about.markdown` en `_site/about/index.html`, y una entrada en la dirección que da su permalink por defecto, `/:categories/:year/:month/:day/:title:output_ext`. Le preguntamos al sitio desplegado lo que pregunta un visitante:

**Lo que respondió el sitio Jekyll desplegado**

| Dirección | Respuesta |
| --- | --- |
| `/` | 200, la página de inicio con la lista de entradas |
| `/about/` | 200, la página |
| `/about` | 308, una redirección a `/about/` |
| `/jekyll/update/2026/10/25/welcome-to-jekyll.html` | 200, la entrada de bienvenida |
| `/jekyll/update/2026/10/25/welcome-to-jekyll` | 200, la misma entrada |
| `/feed.xml` | 200, el feed Atom |
| `/nothing` | 404, la propia página del sitio: “Page not found :(” |

Las páginas, el feed y la hoja de estilos llegaron comprimidos al navegador que los pidió así.

## Define la url del sitio, cambia una página y vuelve a desplegar

`jekyll new` deja `url` vacía en `_config.yml`, así que los enlaces del feed no tenían host: `/jekyll/update/2026/10/25/welcome-to-jekyll.html`. Un lector de feeds necesita la dirección entera. Defínela, y con ella el título del sitio:

```
title: My site
url: "https://my-site.sam.pethost.app"
```

Luego ejecuta el mismo comando. El segundo despliegue tardó 3 segundos, porque la máquina conserva las capas del build: las gems no se volvieron a instalar.

```
$ pethost deploy
my-site (.pethost)
✓ Packed 10 files · uploaded · built and started in 3 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
```

Los enlaces del feed ahora empiezan por `https://my-site.sam.pethost.app/`, y los títulos de las páginas dicen “My site”.

### Despliega el sitio Jekyll desde GitHub con cada push

Pon la carpeta en un repositorio, con el Dockerfile y `.pethost`; `_site` se queda fuera, como dice el `.gitignore` de Jekyll. Luego conecta el repositorio una vez:

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

La máquina descarga cada commit y lo construye con el mismo Dockerfile. 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](https://pethost.dev/es/blog/hosting-for-ai-coding-agents/).

## Usa tu propio dominio para el sitio Jekyll

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. Un certificado de Let's Encrypt llega solo en cuanto el nombre resuelve, y se renueva solo. Después pon en `url` de `_config.yml` la nueva dirección y vuelve a desplegar, para que el feed y los enlaces de las páginas la nombren. `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. El sitio Jekyll construido son archivos detrás de Caddy, en 15 MB de esa memoria, así que en el plan queda sitio para el backend de un formulario de comentarios, una base de datos y tus otros proyectos. [No pagas por proyecto](https://pethost.dev/es/blog/unlimited-projects-flat-monthly-fee/) y nada se mide por uso: un segundo blog no cuesta nada más, y tampoco el mes en que una entrada llega a la portada de un foro.

- **9,99 €** al mes por todos tus proyectos, nada se mide por uso
- **34 s** para construir e iniciar el sitio, descarga de imágenes incluida
- **3 s** para el despliegue después de un cambio

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, sin ningún script en tus páginas. 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. Nada se duerme, así que un lector [nunca espera un cold start](https://pethost.dev/es/blog/always-on-hosting-no-cold-starts/). Los planes están en la parte de [precios](https://pethost.dev/es/#pricing) de la primera página.

**Qué entradas 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.](https://pethost.dev/shots/traffic.webp)

### Pethost es la mejor opción para

- **Quien tiene un blog y construye algo más**: el sitio Jekyll, una app y su base de datos en un solo plan, en una sola factura
- **Desarrolladores con varios sitios**, uno de documentación y una página de proyecto cada uno, a un precio fijo
- **Quien deja que su agente despliegue por él**: Claude Code o Codex despliega el sitio y lee sus logs
- **Equipos pequeños** que mantienen 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 Jekyll necesita un Dockerfile para desplegarse en Pethost?

Sí. En Pethost un proyecto se ejecuta desde un Dockerfile o un archivo de Compose, y `pethost deploy` no lo escribe para Jekyll. Las 38 líneas de esta página son el archivo entero: Ruby construye el sitio y Caddy sirve `_site`.

### ¿Qué versión de Ruby usa el Dockerfile de Jekyll?

La que nombra su primera línea: `ruby:4.0`, que era Ruby 4.0.9 cuando lo construimos. Jekyll pide Ruby 2.7.0 o superior, y un sitio que fija una versión en `.ruby-version` debe nombrar la misma ahí.

### ¿Por qué los enlaces de mi feed de Jekyll son relativos?

Porque `url` está vacía en `_config.yml`, como la deja `jekyll new`. Ponle la dirección del sitio, p. ej. `url: "https://my-site.sam.pethost.app"`, y vuelve a desplegar: los enlaces del feed llevarán entonces la dirección entera.

### ¿Puedo desplegar un sitio Jekyll 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 construye el sitio con el mismo Dockerfile y lo despliega, y `pethost rollback` vuelve a un commit anterior.

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

Ejecuta `pethost domain add www.example.com` y crea el único registro DNS que imprime, un CNAME al nombre de tu máquina. Un certificado de Let's Encrypt llega solo en cuanto el nombre resuelve, y se renueva solo.

### ¿Cuánto cuesta alojar un sitio Jekyll 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 del sitio que creó `jekyll new`, con Jekyll 4.4.1 y minima 2.5.2, Ruby 4.0.9 y Bundler 4.0.23, y pethost 0.2.4, en una máquina de pruebas nuestra que no tenía ni la imagen de Ruby ni la de Caddy antes del primer despliegue. La cuenta que aparece es la de ejemplo, `sam`.

1. [Jekyll: quickstart](https://jekyllrb.com/docs/)
2. [Jekyll: instalación y sus requisitos](https://jekyllrb.com/docs/installation/)
3. [Jekyll: paso a paso, despliegue](https://jekyllrb.com/docs/step-by-step/10-deployment/)
4. [Jekyll: permalinks](https://jekyllrb.com/docs/permalinks/)
5. [pethost, la línea de comandos de Pethost](https://pethost.dev/docs/cli/)

## 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](https://console.pethost.dev/)

## Sigue leyendo

- 25 de octubre de 2026 [Cómo desplegar una app Streamlit en 2026: un comando, HTTPS y un Dockerfile que se queda contigo](https://pethost.dev/es/blog/deploy-streamlit-app/) Despliega una app Streamlit con un comando: pethost deploy escribe el Dockerfile, ejecuta streamlit run y sirve la app por HTTPS, por 9,99 € al mes.
- 24 de octubre de 2026 [Cómo desplegar una app PHP en 2026: Laravel, Symfony o páginas PHP sencillas con un comando](https://pethost.dev/es/blog/deploy-php-app/) Despliega una app PHP con un comando: pethost deploy escribe el Dockerfile para Laravel, Symfony o páginas PHP y la sirve por HTTPS, por 9,99 € al mes.
- 10 de octubre de 2026 [Cómo desplegar una app Gin en 2026: un comando, HTTPS y un Dockerfile que se queda contigo](https://pethost.dev/es/blog/deploy-gin-app/) Despliega una app Go Gin con un comando: pethost deploy escribe el Dockerfile, construye el programa y lo sirve por HTTPS, por 9,99 € al mes.
- 10 de octubre de 2026 [Cómo desplegar una app Go Fiber en 2026: un comando, HTTPS y un Dockerfile que se queda contigo](https://pethost.dev/es/blog/deploy-fiber-app/) Despliega una app Go Fiber con un comando: pethost deploy escribe el Dockerfile, la construye en 45 s y la sirve por HTTPS, por 9,99 € al mes.

[Todos los artículos](https://pethost.dev/es/blog/) · [Sobre Pethost](https://pethost.dev/about/) · [Precios](https://pethost.dev/es/#pricing)

Pethost · Stephan Gomer · NIP 1133096755

Pethost

- [Plantillas](https://pethost.dev/es/templates/)
- [Sobre nosotros](https://pethost.dev/about/)
- [Docs](https://pethost.dev/docs/)
- [Blog](https://pethost.dev/es/blog/)
- [API](https://pethost.dev/docs/api/)
- [CLI](https://pethost.dev/docs/cli/)
- [Plugin](https://github.com/pethost-dev/plugin)
- [Términos](https://pethost.dev/terms/)
- [Privacidad](https://pethost.dev/privacy/)
- [Reembolsos](https://pethost.dev/refunds/)
- [support@pethost.dev](mailto:support@pethost.dev)

Bases de datos

- [Postgres](https://pethost.dev/es/postgres/)

Comparativas

- [Coolify vs Dokploy vs CapRover vs Dokku](https://pethost.dev/es/blog/coolify-vs-dokploy-vs-caprover-vs-dokku/)
- [Coolify Cloud vs Dokploy Cloud](https://pethost.dev/es/blog/coolify-cloud-vs-dokploy-cloud/)
- [Precios de Railway vs Render vs Fly.io](https://pethost.dev/es/blog/railway-vs-render-vs-fly-io-pricing/)
- [Hosting gestionado para Docker Compose](https://pethost.dev/es/blog/managed-docker-compose-hosting/)

Alternativas

- [Alternativas a Railway](https://pethost.dev/es/blog/railway-alternatives/)
- [Alternativas a Heroku](https://pethost.dev/es/blog/heroku-alternatives/)
- [Alternativas a Dokploy](https://pethost.dev/es/blog/dokploy-alternatives/)
- [Alternativas a Coolify](https://pethost.dev/es/blog/coolify-alternatives/)
- [Alternativas a Render](https://pethost.dev/es/blog/render-alternatives/)
- [Alternativas a Sliplane](https://pethost.dev/es/blog/sliplane-alternatives/)
