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.

Sommaire de cette page
  1. Dropdown de publication — interface du bouton Publier
  2. Déploiement Production / Pré-production — rsync via SSH
  3. Git (commit & push) — versionner et pousser le code
  4. Export ZIP (Télécharger) — deux modes d'export
  5. Log de déploiement — sortie en temps réel
  6. Indicateurs de statut — points vert/rouge et dates
  7. Configuration requise — .deploy.env et clés SSH
  8. Module JS — API et méthodes exposées

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.

Panel de publication — Production, GitHub et téléchargement

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 .htpasswd avec 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

  1. L'utilisateur clique sur "Déployer" sur la carte Production ou Pré-production
  2. Le Configurateur exécute l'API /api/deploy avec le paramètre target=prod ou target=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/deploy qui exécute le script deploy.sh.)
  3. Le serveur Python exécute ./deploy.sh <target> en subprocess
  4. Le résultat (stdout + stderr) est affiché dans le log de déploiement
  5. Le statut et la date sont sauvegardés dans le registre (pages.jsondeploys.prod / deploys.preprod)
  6. Préprod uniquement : deploy.sh injecte automatiquement un header X-Robots-Tag: noindex, nofollow dans le .htaccess distant 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

  1. L'utilisateur saisit un message de commit dans le champ dédié
  2. Clic sur "Commit & Push"
  3. Le Configurateur exécute l'API /api/git-push avec le message
  4. Le serveur exécute : git add -A && git commit -m "message" && git push
  5. Le résultat est affiché dans le log de déploiement
  6. 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

  1. Ouvrir le dropdown « Publier » dans la topbar du Configurateur
  2. Dans la section « Télécharger », cliquer sur « Serveur (publication) »
  3. Un fichier .zip est téléchargé automatiquement dans votre dossier de téléchargements
  4. 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.
  5. Connectez-vous à votre hébergeur via un client FTP (FileZilla, Cyberduck, etc.)
  6. Uploadez le contenu du ZIP (pas le dossier ZIP lui-même) à la racine du répertoire public (public_html/, www/, etc.)
  7. Vérifiez que le fichier .htaccess est bien présent sur le serveur (certains clients FTP masquent les fichiers cachés)
⚠ Important
  • Le fichier .env est 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.example et .deploy.env.example sont é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/)

Voir aussi