Français

Blog · Guides de déploiement

Comment déployer un site Jekyll en 2026 : un Dockerfile, une commande et HTTPS

Par l’équipe Pethost · · 11 min de lecture

Vous avez un site Jekyll qui se construit sur votre ordinateur avec bundle exec jekyll build, et vous voulez le mettre en ligne à une adresse en HTTPS. Sur Pethost, il faut pour cela un Dockerfile de 38 lignes, à copier depuis cette page, et une commande, pethost deploy. Le site que crée jekyll new était en ligne en 34 secondes la première fois, et en 3 secondes après une modification.

En bref
  • Un fichier : un Dockerfile en deux étapes. Ruby 4.0 lance bundle install et JEKYLL_ENV=production bundle exec jekyll build, puis Caddy sert _site.
  • Une commande : pethost deploy dans le dossier qui contient _config.yml. 34 s la première fois, 3 s pour le déploiement suivant.
  • Les adresses de Jekyll fonctionnent : /about/ répond 200, /about y mène, un article répond avec ou sans .html, et une page absente affiche le 404.html du site lui-même.
  • L’adresse : https://my-site.yourname.pethost.app, en HTTPS d’emblée. Votre propre domaine, c’est un enregistrement DNS.
  • Le prix : 9,99 € par mois pour 2 vCPU, 3 GB et 30 GB, pour ce site et tous vos autres projets. Il n’y a pas d’offre gratuite.

Ce qu’il faut pour déployer un site Jekyll en 2026

Trois choses : le site, la commande pethost et un compte Pethost.

Le site est ici celui que crée le guide de démarrage de Jekyll. Jekyll demande Ruby 2.7.0 ou plus récent ; nous l’avons créé avec Ruby 4.0.9 :

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

jekyll new écrit un Gemfile avec Jekyll 4.4.1, le thème minima et le plugin jekyll-feed, lance bundle install, qui écrit Gemfile.lock, et ajoute une page d’accueil, une page « à propos », un article de bienvenue, un 404.html et un .gitignore qui laisse _site de côté. Gardez Gemfile.lock : le build installe exactement les gems qu’il nomme.

La commande est un seul programme, installé en une ligne. Toutes ses commandes sont dans la référence de la CLI.

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

Le compte a besoin d’une offre. Si vous n’êtes pas connecté, pethost deploy ouvre votre navigateur et vous connecte. Si vous n’avez pas encore d’offre, il vous montre où en choisir une, et attend.

Pourquoi un site Jekyll a besoin d’un Dockerfile sur Pethost

Un projet sur Pethost tourne à partir d’un Dockerfile ou d’un fichier Compose. Pour les types de projet qu’il connaît, comme un site Eleventy, pethost deploy écrit lui-même le Dockerfile. Jekyll n’en fait pas partie : dans le dossier créé par jekyll new, le déploiement s’arrête donc à la réponse de la machine. Voici l’écran entier :

$ 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

Rien n’a été créé : ni projet, ni adresse. Ajoutez le fichier ci-dessous et relancez la même commande.

Le Dockerfile pour un site Jekyll

Enregistrez ceci sous le nom Dockerfile dans le dossier qui contient _config.yml. C’est le fichier entier :

# 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 première étape construit le site comme vous le faites sur votre ordinateur :

La seconde étape est le petit serveur web que pethost écrit pour chaque site fait de fichiers. Il sert _site, le dossier de sortie de Jekyll, et rien de l’image Ruby ne l’accompagne : le site tournait dans 15 MB de mémoire.

Déployer le site Jekyll en une commande

Relancez pethost deploy, cette fois avec le Dockerfile dans le dossier. Voici l’écran entier :

$ 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. Elle pose une seule question Le nom du projet, qui est le premier mot de son adresse. La touche Entrée prend le nom du dossier.
  2. Le dossier part directement sur votre machine Neuf fichiers : ce qu’a écrit jekyll new, et le Dockerfile. La ligne qui commence par · est la machine qui dit ce qu’elle a fait d’elle-même : elle a trouvé un Dockerfile et pas de fichier Compose, alors elle en a écrit un.
  3. La machine le construit et le démarre Les 34 secondes comprennent le téléchargement des images de Ruby et de Caddy, que la machine n’avait pas encore. Puis pethost interroge lui-même l’adresse, et affiche ce qu’elle a répondu : 200.

Le fichier .pethost dit quel projet est ce dossier. Commitez-le avec le Dockerfile, et le déploiement suivant ne demande plus rien.

Les adresses de Jekyll fonctionnent-elles ?

Jekyll écrit about.markdown dans _site/about/index.html, et un article à l’adresse que donne son permalien par défaut, /:categories/:year/:month/:day/:title:output_ext. Nous avons demandé au site déployé ce que demande un visiteur :

Ce qu’a répondu le site Jekyll déployé
AdresseRéponse
/200, la page d’accueil avec la liste des articles
/about/200, la page
/about308, une redirection vers /about/
/jekyll/update/2026/10/25/welcome-to-jekyll.html200, l’article de bienvenue
/jekyll/update/2026/10/25/welcome-to-jekyll200, le même article
/feed.xml200, le flux Atom
/nothing404, la page du site lui-même : « Page not found :( »

Les pages, le flux et la feuille de style arrivaient compressés au navigateur qui le demandait.

Définir l’url du site, modifier une page et redéployer

jekyll new laisse url vide dans _config.yml, si bien que les liens du flux n’avaient pas de nom d’hôte : /jekyll/update/2026/10/25/welcome-to-jekyll.html. Un lecteur de flux a besoin de l’adresse complète. Définissez-la, et le titre du site avec :

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

Puis relancez la même commande. Le deuxième déploiement a pris 3 secondes, parce que la machine garde les couches du build : les gems n’ont pas été réinstallées.

$ 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

Les liens du flux commencent maintenant par https://my-site.sam.pethost.app/, et les titres des pages disent « My site ».

Déployer le site Jekyll depuis GitHub à chaque push

Mettez le dossier dans un dépôt, avec le Dockerfile et .pethost ; _site reste dehors, comme le dit le .gitignore de Jekyll. Puis connectez le dépôt une fois :

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

La machine télécharge chaque commit et le construit avec le même Dockerfile. Pethost ne lit que les dépôts que vous avez donnés à son application GitHub. Si un déploiement tourne mal, pethost rollback remet en place la version précédente, et votre machine garde les trois versions qui précèdent la version actuelle. Un agent IA peut faire tout cela pour vous via le serveur MCP de Pethost : comment un agent déploie un projet et s’en occupe.

Utiliser votre propre domaine pour le site Jekyll

N’importe quel nom sous le domaine de votre compte est une adresse d’emblée, en HTTPS. Un domaine à vous demande une commande et un enregistrement DNS :

pethost domain add www.example.com

La commande affiche l’enregistrement à créer : un CNAME de votre nom vers le nom de votre machine. Un certificat Let’s Encrypt arrive tout seul dès que le nom pointe vers la machine, et se renouvelle tout seul. Mettez ensuite url dans _config.yml à la nouvelle adresse et redéployez, pour que le flux et les liens des pages la nomment. pethost password place une page de mot de passe devant tout le site, pour un site qui n’est pas encore public.

Ce que vous obtenez pour ce prix

Pethost, c’est 9,99 € par mois pour tout ce que vous hébergez, sur 2 vCPU, 3 GB de mémoire et 30 GB de disque. Le site Jekyll construit, ce sont des fichiers derrière Caddy, dans 15 MB de cette mémoire : l’offre a donc de la place pour le backend d’un formulaire de commentaires, une base de données et vos autres projets. Il n’y a pas de frais par projet et rien n’est facturé à l’usage : un deuxième blog ne coûte rien de plus, pas plus que le mois où un article arrive en une d’un forum.

Ce qui est déjà fait pour vous : HTTPS avec des certificats qui se renouvellent tout seuls, les déploiements depuis GitHub, des sauvegardes chaque nuit conservées 14 jours, SSH dans n’importe quel conteneur, et chaque requête comptée, sans aucun script dans vos pages. La console montre les chemins les plus sollicités des 30 derniers jours, ce qui, pour un blog, est la liste des articles que les gens lisent vraiment. Rien ne se met en veille, donc un lecteur n’attend jamais un démarrage à froid. Les offres sont dans la partie tarifs de la page d’accueil.

Les articles que les gens lisent. Les dix chemins les plus sollicités d’un projet avec leur part et leurs temps de réponse, et le journal des requêtes une par une.
La console Pethost : les dix chemins les plus sollicités d’un projet avec leur part, leur nombre et leurs temps de réponse, et le journal des requêtes une par une.

Pethost est le meilleur choix pour

  • Les blogueurs qui construisent plus qu’un blog : le site Jekyll, une application et sa base de données sur une offre, sur une seule facture
  • Les développeurs qui ont plusieurs sites, un site de documentation et une page de projet chacun, à un prix fixe
  • Ceux dont l’agent déploie à leur place : Claude Code ou Codex déploie le site et lit ses logs
  • Les petites équipes qui gardent un site derrière une page de mot de passe jusqu’à son lancement

Cherchez ailleurs si

  • Votre application a besoin de plusieurs régions ou d’autoscaling

Questions

Faut-il un Dockerfile pour déployer un site Jekyll sur Pethost ?

Oui. Un projet sur Pethost tourne à partir d’un Dockerfile ou d’un fichier Compose, et pethost deploy n’en écrit pas pour Jekyll. Les 38 lignes de cette page sont le fichier entier : Ruby construit le site, et Caddy sert _site.

Quelle version de Ruby utilise le Dockerfile Jekyll ?

Celle que nomme sa première ligne : ruby:4.0, qui était Ruby 4.0.9 quand nous l’avons construit. Jekyll demande Ruby 2.7.0 ou plus récent, et un site qui épingle une version dans .ruby-version doit nommer la même ici.

Pourquoi les liens de mon flux Jekyll sont-ils relatifs ?

Parce que url est vide dans _config.yml, comme le laisse jekyll new. Mettez-y l’adresse du site, par exemple url: "https://my-site.sam.pethost.app", et redéployez : les liens du flux portent alors l’adresse complète.

Peut-on déployer un site Jekyll depuis GitHub à chaque push ?

Oui. Déployez le dossier une fois avec pethost deploy, puis lancez pethost github owner/repository. Dès lors, chaque push construit le site avec le même Dockerfile et le déploie, et pethost rollback revient à un commit précédent.

Comment utiliser un domaine personnalisé en HTTPS pour un site Jekyll ?

Lancez pethost domain add www.example.com et créez l’unique enregistrement DNS qu’elle affiche, un CNAME vers le nom de votre machine. Un certificat Let’s Encrypt arrive tout seul dès que le nom pointe vers la machine, et se renouvelle tout seul.

Combien coûte l’hébergement d’un site Jekyll sur Pethost ?

9,99 € par mois pour Starter, avec 2 vCPU, 3 GB et 30 GB, sans frais par projet : vos autres sites, applications et bases de données y tournent aussi. Il n’y a pas d’offre gratuite. Les prix sont hors TVA.

Les écrans sont des déploiements du site créé par jekyll new, avec Jekyll 4.4.1 et minima 2.5.2, Ruby 4.0.9 et Bundler 4.0.23, et pethost 0.2.4, sur une de nos machines de test qui n’avait ni l’image de Ruby ni celle de Caddy avant le premier déploiement. Le compte qu’on y voit est celui de l’exemple, sam.

  1. Jekyll : premiers pas
  2. Jekyll : installation et prérequis
  3. Jekyll : pas à pas, le déploiement
  4. Jekyll : permaliens
  5. pethost, la ligne de commande de Pethost

Mettez vos projets en ligne dès aujourd’hui

Déployez applications, bots et bases de données depuis votre agent, GitHub ou le navigateur, autant qu’il en tient, à un prix fixe. Rien au compteur, rien facturé en plus.

Tout héberger pour 9,99 €/mois