Blog · Guides de déploiement
Comment déployer un site VitePress en 2026 : une commande, HTTPS et un Dockerfile qui reste à vous
Vous avez un site VitePress qui se construit sur votre ordinateur, et vous voulez le mettre en ligne à une adresse en HTTPS. Sur Pethost, c’est une seule commande, pethost deploy, lancée dans le dossier qui contient package.json. Elle écrit le Dockerfile à votre place, construit le site et affiche son adresse. Le starter de VitePress lui-même a été construit et démarré en 43 secondes la première fois.
- Une commande :
pethost deploydans le dossier qui contientpackage.json. Pas de fichier de configuration à écrire, pas de réglages de build à remplir. - Ce qu’elle fait : elle trouve le script qui lance
vitepress build, écrit un Dockerfile qui le lance, et sertdocs/.vitepress/dist. - L’adresse :
https://my-docs.yourname.pethost.app, en HTTPS d’emblée. Votre propre domaine, c’est un enregistrement DNS. - Le Dockerfile est à vous : il reste dans le dossier pour que vous le gardiez et le modifiiez, et pethost ne l’écrit plus jamais.
- 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 VitePress en 2026
Trois choses : le site, la commande pethost et un compte Pethost.
Le site est un dossier tel que le laissent les premiers pas de VitePress : npm add -D vitepress, puis npx vitepress init. L’assistant met les pages dans docs/ et trois scripts dans package.json :
"scripts": {
"docs:dev": "vitepress dev ./docs",
"docs:build": "vitepress build ./docs",
"docs:preview": "vitepress preview ./docs"
}
La commande est un seul programme, qui s’installe en une ligne :
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, la commande vous montre où en choisir une, et attend.
Déployer le site VitePress en une commande
Allez dans le dossier qui contient package.json et lancez pethost deploy. Voici l’écran entier, pour le starter qu’écrit 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
- 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.
- La machine ne trouve rien à lancer Le dossier part directement sur votre machine, sans
node_modules. La ligne avec la croix est sa réponse : un projet tourne à partir d’un Dockerfile ou d’un fichier Compose, et le dossier n’a encore ni l’un ni l’autre. - pethost écrit le Dockerfile Il a vu
vitepressdanspackage.jsonet un script qui lancevitepress build, et il envoie de nouveau le dossier. - La machine le construit et le démarre Puis pethost interroge lui-même l’adresse, et affiche ce qu’elle a répondu : 200.
Le fichier .pethost indique à quel projet correspond ce dossier. Commitez-le avec le Dockerfile, et le prochain déploiement ne demandera rien.
Le Dockerfile que pethost écrit pour VitePress
Voici le fichier tel qu’il a été écrit dans le dossier du starter, en entier :
# 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
Ses premières lignes disent ce que pethost a lu dans votre dossier. Trois choses en viennent :
- Le gestionnaire de paquets est celui que nomme votre lockfile : npm, pnpm, Yarn ou Bun.
- La version de Node est celle que nomme
.nvmrcou.node-version, et Node 24 s’il n’y a ni l’un ni l’autre. - Le dossier à servir dépend du script :
vitepress build ./docsécritdocs/.vitepress/dist, etvitepress buildseul écrit.vitepress/dist.
La seconde moitié est un petit serveur web pour les pages construites. Nous avons demandé au starter déployé ce que demande un visiteur. La page d’accueil, /markdown-examples et /markdown-examples.html ont chacune répondu 200, et une adresse qui n’est pas une page a répondu 404 avec la page « 404 » de VitePress lui-même.
Deux autres choses vous évitent un fichier qui ne marche pas. Si la machine ne peut pas construire ou démarrer le Dockerfile écrit par pethost, pethost retire le fichier de votre dossier et dit ce qui a échoué. Et si votre configuration fixe base à un chemin comme /docs/, pethost n’écrit rien et dit pourquoi : sur Pethost, un site est à la racine de sa propre adresse, alors mettez base à "/" et redéployez.
Modifier une page et redéployer
Modifiez une page et lancez la même commande. Le deuxième déploiement du starter a pris 4 secondes, car la machine garde les couches du 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
Pour déployer plutôt à chaque push, connectez le dépôt une fois :
pethost github sam/my-docs # from now on, every push deploys itself
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 la version d’avant, et votre machine garde les trois versions qui précèdent l’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 la documentation
Tout nom sous le domaine de votre compte est aussitôt une adresse, en HTTPS. Un domaine à vous demande une commande et un enregistrement DNS :
pethost domain add docs.example.com
La commande affiche l’enregistrement à créer : un CNAME de votre nom vers le nom de votre machine. Le certificat arrive tout seul dès que le nom se résout, et se renouvelle tout seul. pethost password place une page de mot de passe devant tout le site, pour une documentation qui n’est pas encore publique.
Ce que vous obtenez pour ce prix
Pethost coûte 9,99 € par mois pour tout ce que vous hébergez, sur 2 vCPU, 3 GB de mémoire et 30 GB de disque. Un site VitePress construit, ce sont des fichiers derrière un petit serveur web : la machine a donc de la place pour l’application que la documentation décrit, sa base de données et vos autres projets. Il n’y a pas de frais par projet et rien n’est facturé à l’usage : le deuxième site ne coûte rien de plus.
- 9,99 € par mois pour tous vos projets, rien à l’usage
- 43 s pour construire et démarrer le starter, la première fois
- 0 fichier à écrire à la main
Ce qui est déjà fait pour vous : HTTPS avec des certificats qui se renouvellent tout seuls, déploiements depuis GitHub, sauvegardes chaque nuit conservées 14 jours, SSH dans n’importe quel conteneur, et chaque requête comptée. La console affiche les chemins les plus sollicités des 30 derniers jours, ce qui, pour un site de documentation, est la liste des pages que les gens lisent vraiment. La machine est toujours allumée, donc une page n’attend jamais un démarrage à froid. Les offres sont dans la partie tarifs de la page d’accueil.
Pethost est le meilleur choix pour
- Les développeurs qui gardent la documentation à côté de l’application : l’API, sa base de données et son site VitePress sur une machine, sur une seule facture
- Les développeurs solo qui ont plusieurs projets perso, chacun avec son propre site
- Ceux dont l’agent déploie à leur place : Claude Code ou Codex met le site en ligne et lit ses logs
- Les petites équipes qui veulent la documentation derrière une page de mot de passe jusqu’au 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 VitePress ?
Sur Pethost, un projet tourne à partir d’un Dockerfile ou d’un fichier Compose, et vous n’avez pas à l’écrire : dans un dossier qui n’a ni l’un ni l’autre, pethost deploy écrit le Dockerfile d’un site VitePress et le déploie. Le fichier reste dans votre dossier, et vous pouvez le modifier.
Quel gestionnaire de paquets et quelle version de Node pour le build VitePress ?
Ceux que nomme votre dossier. Le gestionnaire de paquets est celui de votre lockfile : npm, pnpm, Yarn ou Bun. La version de Node est celle de .nvmrc ou de .node-version, et Node 24 s’il n’y a ni l’un ni l’autre.
Peut-on déployer VitePress 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 sur le dépôt se déploie tout seul, et pethost rollback revient à un commit précédent.
Comment utiliser un domaine personnalisé en HTTPS pour un site VitePress ?
Lancez pethost domain add docs.example.com et créez l’unique enregistrement DNS que la commande affiche, un CNAME vers le nom de votre machine. Le certificat arrive tout seul dès que le nom se résout, et se renouvelle tout seul.
Combien coûte l’hébergement d’un site VitePress 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.
Pourquoi pethost deploy refuse un site VitePress qui définit base ?
Un site construit avec base fixé à un chemin comme /docs/ cherche ses styles et ses scripts sous ce chemin. Sur Pethost, un site est à la racine de sa propre adresse : pethost n’écrit donc pas de Dockerfile pour lui, et le dit. Mettez base à "/" et redéployez.
Les écrans sont des déploiements du site qu’écrit vitepress init, avec VitePress 1.6.4 et pethost 0.2.1, sur une de nos machines de test. Le compte qu’on y voit est celui de l’exemple, sam.
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.