Suite à la migration récente de mon site funix.org sur Scaleway qui me permet de bénéficier des outils cPanel, j’ai mis en place une synchronisation par Git de mon site. C’est à dire que mon site de référence et de travail est celui en local et le site distant visible sur internet se synchronise sur cette référence.
La connexion Git se fait via une connexion chiffrée avec SSH et la première étape est de générer une nouvelle clé SSH au niveau Sécurité->Accès SSH du menu cPanel :

J’ai récupéré ensuite localement la clé privée que j’ai placée sous ~/.ssh sur le PC local et pour voir si ça fonctionne sur le PC on se connecte à distance en tapant :
cpXXXXX correspond à mon login sur Scaleway et funix.org à mon domaine.
Maintenant pour que Git puisse se connecter sans avoir à indiquer de mot de passe, il faudra préalablement sur le PC local générer le couple clé publique/clé privée. Sur la console distante, on tape ssh-agent, voilà le résultat:
toujours sur le serveur distant dans le fichier .ssh/authorized_keys on y copiera la clé publique locale. Puis on tape, toujours sur la console distante :
id_ecdsa-locale étant la clé privée locale. On revient maintenant à cPanel et Fichiers->Git Version Control. On va créer un dépôt (il faudra décocher Clone a repository) :

On indique un nom de répertoire pour le dépôt qui ne sera pas forcément celui qui contient le site. Après avoir cliqué sur Créer, cPanel nous donne ces indications :

Dans la pratique mon site se trouve localement sous /ultra/data/homepage/www.funix.org, sur le PC local j’ai initialisé le dépôt Git de référence.
Pour lier le dépôt distant au dépôt Git local, je tape localement la commande :
La dernière commande est un peu plus verbeuse et donne
Maintenant on va créer une clé de déploiement qui automatisera chaque mise à jour. C’est le fichier .cpanel.yml qui contiendra :
Le chemin de déploiement est /home/cpXXXXX/public_html, c’est là qu’on retrouve les fichiers du site sur le serveur distant. L’enchaînement de commandes permet en l’absence de la commande rsync de synchroniser le dépôt avec un répertoire temporaire, puis on fait une copie des fichiers modifiés dans le répertoire de déploiement. La commande find permet de supprimer les fichiers du site qui ne sont plus dans le dépôt. C’est une configuration bien adaptée pour un site statique comme le mien. On place ce fichier à la racine du site à distance sur /home/cpXXXXX/public_html
On revient au cPanel et Git Version Control, au niveau de Checked-Out Branch, il faudra indiquer main, voilà le résultat :

Dans l’onglet Pull or Deploy, cela donnera suite à la bonne prise en compte du fichier de déploiement :

La mise à jour au quotidien du site se fera donc en modifiant les fichiers localement puis en tapant toujours localement :
Pour être totalement complet on pourra créer au niveau du dépôt local de référence le fichier .gitignore pour ignorer certains fichiers, le mien contient :
On trouvera le fichier de log du déploiement sous /home/cpXXXX/.cpanel/logs.
Quelques sources utiles qui ont pu m’aider à mettre en place cette configuration :
- Git Version Control https://docs.cpanel.net/cpanel/files/git-version-control
- SSH access https://docs.cpanel.net/cpanel/security/ssh-access/
- Guide to Git deployment https://docs.cpanel.net/knowledge-base/web-services/guide-to-git-deployment/
- Créer des dépôts Git sur votre hébergement https://faq.o2switch.fr/cpanel/fichiers/gitweb/
- Utiliser le système de contrôle de version Git sur cPanel https://aide.lws.fr/base/cPanel/Publication-de-site-avec-cPanel/Comment-utiliser-Git-Version-Control-sur-cPanel#