Publier sans CMS : mon workflow code-first (SSH, rsync & CI/CD)
Comment je publie ce blog sans interface d’admin : du code, un commit, du SSH et du rsync.
Ce blog ne se “publie” pas, il se déploie
Je n’utilise pas de CMS classique.
Pas de panel d’administration.
Pas de bouton “Publier”.
Pas de base de données.
Pour écrire un article, je fais simplement :
- J’ouvre mon éditeur de code
- J’écris un fichier Markdown
- Je commit
- Je push
Le reste est automatisé.
Le workflow en pratique
Créer un article ressemble à ça :
src/content/blog/fr/mon-article.md
Contenu :
---
title: "Titre de l’article"
date: "2025-12-05"
description: "Résumé court"
---
Quelques lignes, pas de friction.
Je ne quitte jamais mon éditeur.
CI/CD minimaliste : SSH + rsync
Le déploiement ne repose pas sur une plateforme magique.
Il repose sur deux outils simples et robustes :
- SSH pour l’accès serveur
- rsync pour la synchronisation
Mon pipeline CI/CD :
- Build Astro
- Génération du site statique
- Connexion SSH vers le serveur
rsyncvers le dossier de production
Exemple de logique utilisée :
rsync -az --delete dist/ user@server:/var/www/portfolio
Résultat :
- Pas de containers pour ce site
- Pas d’orchestrateur inutile
- Déploiement rapide, lisible, traçable
Pourquoi ce choix
J’utilise SSH + rsync volontairement :
- Pas de dépendance cloud
- Pas de vendor lock-in
- Contrôle total du process
- Debug simple
C’est la même philosophie que j’applique sur de l’infra plus complexe : simplicité, traçabilité, reproductibilité.
Le vrai CMS, c’est Git
Versionner le contenu est plus puissant qu’un back-office.
Chaque article est :
- versionné
- diffable
- réversible
- reviewable
Un git log vaut mieux qu’un historique CMS mal conçu.
Publier sans quitter son éditeur
Le vrai confort, c’est ça :
Je code. J’écris. Je commit. Je push.
Le reste — build et mise en ligne — est entièrement automatisé.
Conclusion
Ce blog est une démonstration de mon approche :
- Le contenu est du code
- L’infra est maîtrisée
- Le déploiement est simple
- Pas d’interface inutile
Un éditeur. Un terminal. Un serveur.
C’est tout ce dont j’ai besoin.