Configurateur — Déploiement
Le Configurateur intègre un système de publication directement dans l'interface, accessible via le bouton « Publier » dans la barre supérieure.
- Dropdown de publication — interface du bouton Publier
- Déploiement Production / Pré-production — rsync via SSH
- Git (commit & push) — versionner et pousser le code
- Export ZIP (Télécharger) — deux modes d'export
- Log de déploiement — sortie en temps réel
- Indicateurs de statut — points vert/rouge et dates
- Configuration requise — .deploy.env et clés SSH
- Module JS — API et méthodes exposées
Dropdown de publication
La modale de publication est située dans la topbar du Configurateur, à droite. Elle s'ouvre au clic sur le bouton « Publier ». La modale a une hauteur maximale de 80vh avec scroll interne.
Une fois ouverte, elle affiche 4 sections dépliables (éléments <details> avec chevrons) :
- Production — déploiement vers le serveur de production, avec champs SSH config inline et bouton « Déployer » dans le summary (ferré à droite, désactivé si non configuré)
- Pré‑production — idem pour le serveur de pré‑production
- GitHub — configuration du remote origin, commit et push
- Protection HTTP — activer/désactiver la protection
.htpasswdavec identifiant, mot de passe et choix de la cible (prod/préprod)
Deux boutons ZIP (Serveur / Projet complet) sont situés en bas de la modale.
Les pills de statut Prod, Préprod et Git dans la topbar ouvrent directement la modale Publier et déplient la section correspondante via window.BuilderPublish.open(sectionId).
La section GitHub permet de :
- Configurer le remote origin (champ texte + bouton ✓)
- Voir le statut de connexion (Connecté / Non configuré)
- Saisir un message de commit (auto-généré si vide)
- Lancer un Commit & Push en un clic
Chaque carte déploiement affiche :
- Statut — un point vert (succès) ou rouge (erreur / jamais déployé)
- Date du dernier déploiement — au format lisible
- URL du domaine — lien cliquable vers le site déployé
- Bouton d'action — « Déployer » ou « Commit & Push »
Déploiement Production / Pré-production
Le déploiement utilise le script deploy.sh qui effectue un rsync via SSH vers le serveur cible.
Prérequis
Configurer le fichier .deploy.env avec les credentials SSH (voir la section Configuration requise).
Fonctionnement
- L'utilisateur clique sur "Déployer" sur la carte Production ou Pré-production
- Le Configurateur exécute l'API
/api/deployavec le paramètretarget=prodoutarget=preprod(une API est un ensemble de commandes que le Configurateur utilise pour communiquer avec le serveur Python. Quand vous cliquez sur « Déployer », le Configurateur envoie la commande/api/deployqui exécute le scriptdeploy.sh.) - Le serveur Python exécute
./deploy.sh <target>en subprocess - Le résultat (
stdout+stderr) est affiché dans le log de déploiement - Le statut et la date sont sauvegardés dans le registre (
pages.json→deploys.prod/deploys.preprod) - Préprod uniquement :
deploy.shinjecte automatiquement un headerX-Robots-Tag: noindex, nofollowdans le.htaccessdistant pour empêcher l'indexation de la préprod par les moteurs de recherche
Fichiers exclus du déploiement
Le fichier .rsync-exclude définit les fichiers et dossiers exclus du transfert :
| Exclusion | Raison |
|---|---|
.git/ |
Historique Git, inutile en production |
.gitignore |
Fichier de configuration Git |
CLAUDE.md |
Directives Claude Code |
.claude/ |
Configuration Claude Code |
.env |
Non exclu — déployé sur le serveur (nécessaire pour les API PHP : token Baserow, CORS origin) |
.deploy.env |
Credentials SSH de déploiement |
deploy.sh |
Script de déploiement |
.rsync-exclude |
Fichier d'exclusion rsync |
generate-sitemap.js |
Outil CLI de génération de sitemap |
.DS_Store |
Fichiers système macOS |
Git (commit & push)
La carte Git dans le dropdown de publication permet de versionner et pousser le code directement depuis le Configurateur.
Interface
- Champ de saisie — pour écrire le message de commit
- Bouton "Commit & Push" — lance l'opération
Fonctionnement
- L'utilisateur saisit un message de commit dans le champ dédié
- Clic sur "Commit & Push"
- Le Configurateur exécute l'API
/api/git-pushavec le message - Le serveur exécute :
git add -A && git commit -m "message" && git push - Le résultat est affiché dans le log de déploiement
- Le statut et la date sont sauvegardés dans le registre (
deploys.git)
Export ZIP (Télécharger)
La section « Télécharger » du dropdown de publication propose deux boutons d'export ZIP, chacun adapté à un usage différent.
Deux modes d'export
| Mode | Bouton | Usage |
|---|---|---|
| Serveur (publication) | « Serveur (publication) » | Exporte uniquement les fichiers nécessaires au fonctionnement du site sur un serveur web. Idéal pour un déploiement via FTP. |
| Projet complet | « Projet complet » | Exporte l'intégralité du projet, y compris les outils de développement. Idéal pour une sauvegarde ou un transfert vers une autre machine. |
Comparaison du contenu
Le tableau ci-dessous détaille ce que chaque mode inclut ou exclut :
| Fichier / Dossier | Serveur | Projet complet | Notes |
|---|---|---|---|
core/ |
✓ | ✓ | Framework CSS + JS |
api/ |
✓ | ✓ | Proxy PHP (Baserow, formulaires) |
pages/ |
✓ | ✓ | Pages HTML du site |
assets/ |
✓ | ✓ | Images, fonts, icônes |
components/ |
✓ | ✓ | Composants JS du projet |
snippets/ |
✓ | ✓ | Extraits réutilisables |
forms/ |
✓ | ✓ | Formulaires |
config-site.js |
✓ | ✓ | Configuration client |
.htaccess |
✓ | ✓ | Règles Apache (rewrite, sécurité) |
.env |
✓ | ✓ | Secrets API (token Baserow, CORS origin) |
404.html |
✓ | ✓ | Page d'erreur personnalisée |
robots.txt |
✓ | ✓ | Directives pour les moteurs de recherche |
sitemap.xml |
✓ | ✓ | Plan du site pour le SEO |
configurateur/ |
✗ | ✓ | Outil de construction visuel |
.framework/ |
✗ | ✓ | Submodule du framework |
data/ |
✗ | ✓ | Registre pages.json, données locales |
deploy.sh, setup.sh |
✗ | ✓ | Scripts de déploiement et d'installation |
.deploy.env |
✗ | ✓ | Credentials SSH |
.rsync-exclude |
✗ | ✓ | Fichier d'exclusion rsync |
generate-sitemap.js |
✗ | ✓ | Générateur de sitemap |
CLAUDE.md, README.md |
✗ | ✓ | Documentation développeur |
.git/, .gitmodules, .github/ |
✗ | ✗ | Historique et config Git |
.claude/, .vscode/ |
✗ | ✗ | Configuration outils de développement |
node_modules/ |
✗ | ✗ | Dépendances Node.js |
.DS_Store, Thumbs.db |
✗ | ✗ | Fichiers système |
.baserow-credentials, .mcp.json |
✗ | ✗ | Credentials sensibles et config MCP |
Quand utiliser chaque mode ?
| Scénario | Mode recommandé |
|---|---|
| Mettre le site en ligne via FTP | Serveur (publication) |
| Livrer le site à un client pour hébergement | Serveur (publication) |
| Sauvegarder le projet complet | Projet complet |
| Transférer le projet sur une autre machine | Projet complet |
| Archiver le projet avant une refonte | Projet complet |
Déployer via FTP avec le ZIP serveur
- Ouvrir le dropdown « Publier » dans la topbar du Configurateur
- Dans la section « Télécharger », cliquer sur « Serveur (publication) »
- Un fichier
.zipest téléchargé automatiquement dans votre dossier de téléchargements - Avant d'uploader : ouvrir le ZIP et vérifier le fichier
.env— il contient vos tokens API (Baserow, CORS origin). Assurez-vous que les valeurs correspondent à l'environnement cible. - Connectez-vous à votre hébergeur via un client FTP (FileZilla, Cyberduck, etc.)
- Uploadez le contenu du ZIP (pas le dossier ZIP lui-même) à la racine du répertoire public (
public_html/,www/, etc.) - Vérifiez que le fichier
.htaccessest bien présent sur le serveur (certains clients FTP masquent les fichiers cachés)
- Le fichier
.envest inclus dans le ZIP serveur car il est nécessaire au fonctionnement des API PHP (proxy Baserow, formulaires). Vérifiez son contenu avant de l'uploader. - Le ZIP serveur ne contient ni le configurateur, ni les outils de développement. C'est le strict minimum pour faire tourner le site.
- Les fichiers
.gitignore,.env.exampleet.deploy.env.examplesont également exclus du ZIP serveur — ils ne sont utiles qu'en développement.
Log de déploiement
Une zone de texte située en bas du dropdown affiche la sortie du script de déploiement en temps réel.
- Scrollable — permet de consulter l'intégralité de la sortie
- Fond sombre — style terminal pour une meilleure lisibilité
- Persistant — le contenu reste visible pendant toute la session
Le log affiche à la fois la sortie standard (stdout) et les erreurs (stderr) du processus exécuté.
Indicateurs de statut
Chaque carte de déploiement affiche un indicateur visuel de l'état du dernier déploiement :
| Indicateur | Signification |
|---|---|
| Point vert | Le dernier déploiement s'est terminé avec succès |
| Point rouge | Le dernier déploiement a échoué, ou l'environnement n'a jamais été déployé |
La date du dernier déploiement est affichée au format lisible :
- Format relatif pour les déploiements récents (ex : il y a 2 heures)
- Date complète pour les déploiements plus anciens (ex : 6 mars 2026 à 14:30)
Configuration requise
Le déploiement nécessite un fichier .deploy.env à la racine du projet. Créez-le depuis le template .deploy.env.example.
Variables de production
| Variable | Description | Exemple |
|---|---|---|
PROD_HOST |
Adresse IP ou nom de domaine du serveur | 1.2.3.4 |
PROD_PORT |
Port SSH du serveur | 22 (ou 65002 sur Hostinger) |
PROD_USER |
Utilisateur SSH | votre_user |
PROD_PATH |
Chemin distant vers le répertoire public | /home/votre_user/domains/mon-site.com/public_html/ |
PROD_URL |
URL publique du site en production | https://mon-site.com |
La même structure s'applique pour la pré-production avec le préfixe PREPROD_ (PREPROD_HOST, PREPROD_PORT, PREPROD_USER, PREPROD_PATH, PREPROD_URL).
Clé SSH
Une clé SSH ed25519 sans mot de passe est recommandée pour permettre le déploiement automatisé sans intervention manuelle :
ssh-keygen -t ed25519 -C "deploy@mon-site.com" -f ~/.ssh/id_ed25519 -N ""
Ajoutez la clé publique au fichier ~/.ssh/authorized_keys du serveur distant.
Script deploy.sh
Le script deploy.sh doit être exécutable :
chmod +x deploy.sh
Module JS
L'interface de déploiement est gérée par le module configurateur-publish.js. Il expose ses méthodes via l'objet global window.BuilderPublish.
API utilisées
| Méthode | Description |
|---|---|
BuilderAPI.deploy(target) |
Lance le déploiement vers la cible spécifiée ("prod" ou "preprod"). Retourne une promesse avec le résultat du script. |
BuilderAPI.gitPush(message) |
Exécute un commit & push avec le message fourni. Retourne une promesse avec le résultat de la commande Git. |
BuilderAPI.deployConfig() |
Récupère la configuration de déploiement (URLs, statuts, dates des derniers déploiements). |
Exemple d'utilisation
// Déployer en production
BuilderAPI.deploy('prod').then(result => {
console.log('Déploiement terminé :', result);
});
// Commit & push
BuilderAPI.gitPush('Mise à jour du header').then(result => {
console.log('Push terminé :', result);
});
// Récupérer la config de déploiement
BuilderAPI.deployConfig().then(config => {
console.log('Dernier déploiement prod :', config.deploys.prod);
});
Module source
Le fichier source du module est configurateur-publish.js. Il est chargé par le Configurateur et initialisé automatiquement lorsque le dropdown de publication est ouvert.
Problèmes courants
| Problème | Cause probable | Solution |
|---|---|---|
Permission denied (publickey) |
Clé SSH non autorisée | Vérifier que la clé publique est bien ajoutée dans hPanel → Avancé → Accès SSH |
Connection refused |
Mauvais port SSH | Hostinger utilise le port 65002, pas 22 — vérifier .deploy.env |
rsync error: some files/attrs were not transferred (code 23) |
Fichiers protégés côté serveur (.env, etc.) |
C'est un warning, pas une erreur — le déploiement a fonctionné |
| Le site ne s'affiche pas après déploiement | Mauvais PROD_PATH |
Vérifier le chemin dans .deploy.env (ex : /home/user/domains/monsite.fr/public_html/) |