Site statique : pourquoi je paie un VPS au lieu d'un hébergement gratuit
Ou : Combien coûte un site qui ne coûte rien
Héberger un site statique ne coûte rien. GitHub Pages, Cloudflare Pages, Netlify et Vercel servent gratuitement des fichiers HTML, avec un réseau de diffusion mondial en prime et aucune machine à entretenir. Ce blog, construit avec Hugo, paie pourtant un serveur privé virtuel (VPS) chez Contabo pour faire la même chose, depuis un seul centre de données. En octobre 2026, j’ai refait le calcul avec mes propres chiffres : le trafic réel, un article publié chaque jour à heure fixe, et des statistiques tirées des journaux du serveur. Le verdict ne se lit pas dans la colonne des prix. Il se lit dans les conditions d’utilisation des offres gratuites, et dans le temps passé sur la machine.
Commençons par le trafic, puisque c’est l’argument qu’on attend. En septembre 2026, le serveur a répondu à 77 016 requêtes et envoyé 549 Mo1. Du 1er au 25 octobre, 68 684 requêtes et 722 Mo, robots compris, et ils sont nombreux, comme le montrait l’article sur la mesure d’audience par les journaux. Le dossier que génère Hugo compte environ 7 600 fichiers pour 250 Mo. À ce volume, aucune offre gratuite ne fronce le sourcil. Le trafic n’est pas la question.
VPS ou PaaS pour un site statique : ce que coûte vraiment l’hébergement gratuit
Quatre offres gratuites et un serveur à 4,40 €
Voici ce que chacun affichait fin octobre 2026 sur ses pages officielles2 :
| Offre | Prix | Ce qui compte pour un blog comme celui-ci |
|---|---|---|
| GitHub Pages | gratuit | site de 1 Go au plus, 100 Go par mois (limite souple), dépôt public obligatoire avec un compte gratuit |
| Cloudflare Pages | gratuit | 500 builds par mois, 20 000 fichiers par site, requêtes vers les fichiers statiques illimitées |
| Netlify Free | gratuit, 300 crédits par mois | 15 crédits par déploiement, 20 par Go, 2 par 10 000 requêtes ; sites suspendus quand le solde est épuisé |
| Vercel Hobby | gratuit | 100 Go par mois, usage personnel et non commercial, tâche planifiée une fois par jour au plus |
| Contabo Cloud VPS 4 | 4,40 € par mois pendant 24 mois, au lieu de 5,50 € | 4 cœurs, 8 Go de mémoire, 100 Go de SSD, et tout le reste à faire soi-même |
Sur le papier, le serveur perd. Il coûte de l’argent, il n’a pas de réseau de diffusion, et chaque mise à jour du système est pour moi. Deux habitudes de ce blog changent pourtant le calcul, et la première tient à sa façon de publier.
Le prix caché s’appelle reconstruction
Ce blog sort un article par jour, vers 14 heures, sans planificateur. L’article attend dans le dépôt avec une date dans le futur, Hugo l’ignore tant que cette date n’est pas passée, et le serveur reconstruit le site toutes les dix minutes. Le mécanisme est détaillé dans l’article sur la publication programmée avec Hugo. Sur un serveur à soi, une reconstruction ne coûte rien : quelques secondes de processeur sur une machine déjà payée. Sur un PaaS, chaque reconstruction devient un déploiement, et un déploiement se compte.
Chez Netlify, qui facture les nouveaux comptes en crédits depuis le 4 septembre 2025, chaque déploiement de production réussi consomme 15 crédits3. Avec les chiffres de septembre, l’addition donne ceci :
| |
Personne ne garderait le rythme de dix minutes chez Netlify. On programmerait une seule reconstruction par jour, juste après l’heure de sortie. Mais même ce déploiement quotidien coûte une fois et demie l’offre gratuite, et celle-ci ne facture pas le dépassement : quand le solde tombe à zéro, Netlify suspend tous les sites du compte, qui affichent « Site not available ». L’offre Personal, à 9 dollars par mois pour 1 000 crédits, couvre le déploiement quotidien. L’hébergement gratuit de ce blog coûterait donc 9 dollars par mois, davantage que le serveur.
Les autres posent des limites plutôt qu’un compteur. Cloudflare Pages accepte 500 builds par mois : un par jour passe, un toutes les dix minutes non. Il lui faut aussi un réveil, sous la forme d’un « deploy hook » appelé à heure fixe, par exemple par un Worker muni d’un déclencheur planifié, cinq par compte sur l’offre gratuite4. Vercel Hobby limite ses tâches planifiées à une exécution par jour, à l’heure près : programmée à 14 heures, elle part entre 14 h 00 et 14 h 595. GitHub Pages passe par un workflow planifié de GitHub Actions, avec les réserves que décrit l’article sur la publication programmée.
Rien d’insurmontable. Mais le calendrier éditorial devient un réglage chez quelqu’un d’autre, avec son quota.
Les journaux, ou ce que l’hébergeur garde pour lui
La seconde habitude, ce sont les statistiques. Ce site n’embarque aucun script de mesure d’audience : tout ce que je sais de mes lecteurs vient du journal du serveur, une ligne par requête. C’est lui qui m’a appris que plus de quatre requêtes sur dix viennent de robots déclarés ou de sondes à la recherche d’un WordPress qui n’existe pas.
Sur un PaaS, ce journal appartient à l’hébergeur. Netlify réserve l’export des journaux de trafic, les « log drains », aux comptes Enterprise3. Vercel l’ouvre à partir de l’offre Pro, à 20 dollars par mois, plus 0,50 dollar par Go exporté5. Cloudflare Pages propose une mesure d’audience gratuite, Web Analytics, qui ajoute d’office un script JavaScript aux pages au déploiement suivant4. Sur un site AMP comme celui-ci, où le JavaScript d’auteur est interdit, c’est un script de trop. Quant à GitHub Pages, son support renvoie vers un outil de mesure tiers, puisque les graphiques de trafic du dépôt ne couvrent pas le site publié6.
Sur le serveur, le journal est un fichier. Je le lis, je le copie, je le garde aussi longtemps que je veux, et aucun tarif ne dépend de ce que j’en fais.
Le dépôt public, ou la cuisine servie avec le plat
GitHub Pages pose une condition qui ne figure dans aucune grille tarifaire : avec un compte gratuit, le dépôt qui publie le site doit être public2. Pour un blog, ça paraît anodin. Celui-ci range dans son dépôt les brouillons, les notes de travail, les outils maison, et surtout les articles déjà écrits mais datés dans le futur. Un dépôt public, c’est l’article de vendredi lisible dès le lundi par quiconque parcourt l’historique. La parade existe : construire le site ailleurs et ne pousser que le résultat dans un dépôt public, puisque Hugo n’y met jamais une page dont la date n’est pas passée. C’est une chaîne de publication de plus à entretenir.
Restent les conditions d’usage. GitHub écrit que Pages n’est pas destiné à faire tourner « your online business ». Vercel réserve l’offre Hobby à l’usage personnel et non commercial, avec une définition large : est commercial tout déploiement qui sert le gain financier de quiconque participe au projet, et parmi les exemples cités figure la promotion d’un produit ou d’un service5. Le blog d’un développeur indépendant qui présente ses prestations y entre sans forcer.
Ce que coûte le serveur, en vrai
La plus petite offre publique de Contabo, le Cloud VPS 4, est affichée à 4,40 € par mois pendant 24 mois7, et la même machine peut servir plusieurs sites, ce qui divise la facture. L’argent n’est pas le problème. Le temps l’est.
Un serveur demande des mises à jour de sécurité, un Caddy à jour, une version de Hugo que je choisis et que je dois suivre, et une surveillance que personne ne fait à ma place. Quand une reconstruction échoue, l’erreur se répète toutes les dix minutes dans un journal que personne ne lit. Je n’ai jamais chronométré ce temps, mais un calcul suffit : si ton heure vaut 50 €, une seule heure passée sur la machine coûte plus de onze mois d’abonnement. Le vrai prix d’un VPS, ce n’est pas sa facture, c’est l’heure de maintenance.
Un PaaS ne supprime pas tout ce temps, il le déplace. Il faut écrire le déclencheur, fixer la version de Hugo dans la configuration, surveiller le solde de crédits avant qu’il ne suspende le site. La différence est ailleurs : une panne chez Netlify n’est pas la mienne. Une panne de mon serveur, si.
DevOps Dave : J’ai passé le blog sur Netlify. Gratuit, réseau mondial, plus de serveur à patcher.
Security Sarah : Et la publication programmée ?
DevOps Dave : Un build hook toutes les dix minutes, comme avant.
Security Sarah : Trois cents crédits, quinze par déploiement, six déploiements par heure. Ton site tiendra trois heures et vingt minutes.
Pour la plupart des sites statiques, l’offre gratuite d’un PaaS reste la bonne réponse : plus rapide, mieux répartie, sans machine à entretenir. Le serveur ne mérite ses quelques euros que si on lui demande ce que les offres gratuites rationnent : reconstruire à volonté, garder ses journaux bruts, publier depuis un dépôt privé, et ne pas se demander si un site professionnel a sa place dans une offre « non commerciale ». Ce blog demande les quatre. Héberger des fichiers HTML ne coûte rien. Ce qui coûte, c’est tout ce qu’on demande à l’hébergeur en plus.
Journal d’accès du serveur Caddy, au format « combined » : toutes les requêtes reçues, robots compris, et la taille des réponses telle que le serveur l’enregistre. Septembre 2026 complet, octobre du 1er au 25. Le décompte par famille de visiteurs vient de l’article sur la mesure d’audience : sur sa période d’observation, 28,4 % des requêtes venaient de sondes WordPress et PHP, 7,8 % d’autres robots déclarés, 6,6 % de robots d’IA et 1,5 % de Googlebot et Bingbot. ↩︎
Les limites de GitHub Pages : « Published GitHub Pages sites may be no larger than 1 GB », une « soft bandwidth limit of 100 GB per month », et « GitHub Pages is not intended for or allowed to be used as a free web-hosting service to run your online business ». La page de création d’un site précise : « If the account that owns the repository uses GitHub Free or GitHub Free for organizations, the repository must be public. » Les limites de Cloudflare Pages donnent 500 builds par mois, un build à la fois et 20 000 fichiers sur l’offre gratuite ; sa page de tarification ajoute : « On both free and paid plans, requests to static assets are free and unlimited. » Prix de Netlify et de Vercel relevés le 25 octobre 2026. ↩︎ ↩︎
La documentation des crédits de Netlify : « each successful production deploy consumes 15 credits », 20 crédits par Go de bande passante, 2 crédits par 10 000 requêtes. Les déploiements échoués et les aperçus de branche ne coûtent rien. L’offre gratuite est une limite ferme : une fois le solde épuisé, « all of your web projects (sites/apps) are paused ». Les comptes créés avant le 4 septembre 2025 restent sur l’ancienne tarification. Les log drains, qui incluent les journaux de trafic du site, sont « available on Enterprise plans ». ↩︎ ↩︎
La documentation des deploy hooks de Cloudflare Pages cite parmi leurs usages : « Schedule a CRON trigger to update your website on a fixed timeline ». Les limites de Workers fixent à 5 le nombre de déclencheurs planifiés par compte sur l’offre gratuite, 250 sur l’offre payante. Pour Web Analytics sur Pages : « Cloudflare will automatically add the JavaScript snippet to your Pages site on the next deployment. » ↩︎ ↩︎
Les limites des tâches planifiées de Vercel : sur Hobby, une exécution par jour au plus, avec une précision « Per-hour (±59 min) ». Les règles d’usage équitable définissent l’usage commercial comme tout déploiement « used for the purpose of financial gain of anyone involved in any part of the production of the project », exemples à l’appui, dont « Advertising the sale of a product or service ». La documentation des Drains les réserve aux offres Pro et Enterprise, facturés 0,50 dollar par Go. ↩︎ ↩︎ ↩︎
Réponse du support de GitHub dans une discussion de la communauté, en juillet 2020 : « The insights tab within your repository displays traffic for your repo, not your GitHub pages site itself », suivie du conseil de configurer « a third party analytics service ». ↩︎
La page des VPS de Contabo, consultée le 25 octobre 2026 : Cloud VPS 4, 4 cœurs, 8 Go de mémoire, 100 Go de SSD, trafic illimité sous réserve d’usage équitable, 5,50 € ramenés à 4,40 € par mois « for the first 24 months ». La note de bas de page précise : « The price displayed is the effective monthly rate for a 24-month subscription including applicable taxes ». Les taxes dépendent du pays de facturation. ↩︎