Comment héberger gratuitement un site statique avec GitHub Pages
Posté le 23 septembre 2025 • 8 min de lecture • 1 667 motsUn guide pour héberger gratuitement un site statique avec GitHub Pages, étape par étape.

.github.io, support des domaines personnalisés et le HTTPS natif.USERNAME.github.io pour un site utilisateur ou organisation, ou dépôt générique pour un site de projet.README.md ou un index.html.Avant de pouvoir déployer un site statique avec GitHub Pages, il faut effectuer une configuration de base sur GitHub. Voici les étapes détaillées :
Si vous n’avez pas encore de compte GitHub :
Allez sur https://github.com/new pour créer un dépôt :
| Type de site | Nom du dépôt | URL publique du site |
|---|---|---|
| Site utilisateur/organisation | USERNAME.github.io | https://USERNAME.github.io/ |
| Site de projet | Nom libre, ex. mon-projet | https://USERNAME.github.io/mon-projet/ |
💡 Pour un site personnel, le nom du dépôt doit absolument correspondre à
USERNAME.github.io(en remplaçantUSERNAMEpar votre nom d’utilisateur GitHub exact).
Deux options :
README.md ou un index.html de base (ex. Hello World!).git clone, puis ajouter vos fichiers statiques et les pousser ensuite.Exemple de index.html minimal :
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8" />
<title>Mon premier site GitHub Pages</title>
</head>
<body>
<h1>Hello GitHub Pages !</h1>
</body>
</html>GitHub Pages peut fonctionner sans GitHub Actions si vous déployez des fichiers statiques simples.
Cependant, il est fortement recommandé d’activer GitHub Actions si :
npm run build, hugo, etc.) à chaque modification..github/workflows/.Exemple de fichier :
.github/workflows/deploy.yml
📄 .github/workflows/deploy.yml
name: Deploy static site to GitHub Pages
on:
push:
branches:
- main # Déclenchement à chaque push sur "main"
permissions:
contents: write # Requis pour publier sur gh-pages
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 18
- name: Install dependencies
run: npm ci
- name: Build the site
run: npm run build
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./dist # Remplace par ./public selon ton générateurAdapté à des stacks modernes comme Astro, Vite, React statique, etc. Déploie automatiquement le dossier dist/ à chaque push sur main.
📄 .github/workflows/deploy.yml
name: Deploy Hugo site to GitHub Pages
on:
push:
branches:
- main # Déclenche le workflow sur chaque push vers main
permissions:
contents: write # Requis pour pousser sur gh-pages
jobs:
build-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout source
uses: actions/checkout@v4
- name: Setup Hugo
uses: peaceiris/actions-hugo@v2
with:
hugo-version: '0.124.1' # Spécifie ta version de Hugo
- name: Build Hugo site
run: hugo --minify
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./publicCe workflow build automatiquement le site Hugo et publie le contenu du dossier public/ sur la branche gh-pages. Aucune configuration manuelle de clé SSH n’est nécessaire, le token GitHub suffit.
Si vous développez un blog avec Hugo, vous pouvez créer une Action GitHub qui :
hugo pour générer le site statique,gh-pages.Cela permet un déploiement automatique à chaque git push.
| Étape | Action requise |
|---|---|
| Compte GitHub | Créer un compte sur github.com |
| Type de site | USERNAME.github.io ou nom de dépôt personnalisé |
| Contenu initial | Ajouter index.html, README.md, etc. |
| Activer GitHub Actions | Vérifier que les actions sont autorisées via Settings |
| Prêt pour Pages | Activer GitHub Pages dans Settings > Pages |
Une fois votre dépôt prêt et configuré, voici comment publier votre site statique avec GitHub Pages en local, étape par étape :
Commencez par cloner le dépôt GitHub sur votre machine :
git clone https://github.com/USERNAME/USERNAME.github.ioRemplacez
USERNAMEpar votre nom d’utilisateur GitHub.
Ce dépôt sera utilisé si vous créez un site utilisateur ou organisation.
Pour un site de projet, utilisez plutôt :
git clone https://github.com/USERNAME/nom-du-depotRemplacez
nom-du-depotpar le nom exact de votre dépôt projet.
Dans le dossier du dépôt cloné, placez vos fichiers de site web :
index.htmlstyle.css)script.js)Arborescence typique :
mon-site/
├── index.html
├── style.css
├── script.js
└── img/
└── logo.pngUne fois les fichiers en place, exécutez les commandes suivantes dans votre terminal :
git add --all
git commit -m "Initial commit"
git push origin mainSi la branche par défaut est
master, adaptez la dernière commande :git push origin master
Rendez-vous dans l’interface GitHub :
Deploy from a branchmain (ou master, selon votre configuration)/ (root) si vos fichiers sont à la racineUn message de confirmation s’affiche avec l’URL de votre site.
| Type de site | URL générée automatiquement |
|---|---|
| Site utilisateur | https://USERNAME.github.io/ |
| Site de projet | https://USERNAME.github.io/nom-du-depot/ |
Les modifications futures seront visibles à cette URL après chaque
git push.
Remarque : il peut parfois prendre jusqu’à 10 minutes pour que les modifications soient visibles en ligne,nottamment lors de la première mise en route.
Si les modifications ne sont pas visibles, pensez à vider le cache de votre navigateur.
GitHub Pages prend en charge Jekyll, un générateur de site statique populaire basé sur Ruby et Markdown. Il permet de transformer automatiquement des fichiers .md en pages HTML, rendant la publication de contenu technique ou de blog très simple.
📚 Référence : Jekyll – Wikipédia, Kinsta – Guide GitHub Pages
Si vous préférez utiliser Hugo, Astro, Gatsby ou un autre générateur statique moderne :
dist/, public/, etc.).gh-pages)..nojekyll à la racine pour désactiver Jekyll et éviter les conflits de traitement automatique.Vous pouvez aussi automatiser cette étape avec GitHub Actions.
📚 Référence : GitHub Docs – Désactiver Jekyll
GitHub Pages propose des thèmes prédéfinis faciles à appliquer via l’interface ou à déclarer dans le fichier _config.yml.
Vous pouvez aussi :
📚 Référence : GitHub Pages, Kinsta
Il est possible d’associer votre propre domaine en quelques clics :
A ou CNAME) chez votre fournisseur.GitHub Pages activera automatiquement le HTTPS via Let’s Encrypt.
📚 Référence : GitHub Docs – Domaines personnalisés, DEV.to, LinkedIn
| Objectif | GitHub Pages (gratuit) | Limitations principales |
|---|---|---|
| Site statique (HTML/CSS/JS) | ✅ Très simple à déployer | ❌ Pas de backend dynamique |
| Documentation ou Wiki | ✅ Jekyll intégré | ❌ Peu adapté pour gros volumes ou trafic élevé |
| Domaine personnalisé & HTTPS | ✅ Support natif | – |
| Intégration CI/CD via GitHub Actions | ✅ Déploie automatique à chaque push | – |
| Interfaces ou formulaires dynamiques | ❌ Nécessite services externes (ex. Formspree) | ❌ Pas de PHP ou traitement serveur |
GitHub Pages est une solution gratuite, fiable et simple d’usage pour héberger des sites statiques. Elle convient parfaitement aux portfolios, blogs personnels, documentations de projet, et landing pages.
Grâce au support natif de Jekyll, à l’intégration avec GitHub Actions et à la gestion facilitée des domaines personnalisés, cette solution offre un excellent point d’entrée pour héberger vos projets web sans frais.
Pour des besoins plus avancés (backend, base de données, traitements dynamiques), d’autres options comme AWS S3, Netlify ou Vercel seront plus adaptées.