Synchroniser son site web avec Git avec Infomaniak

Dans un post précédent j’avais montré comment synchroniser son site web avec Git et cPanel avec Scaleway, maintenant je vais montrer l’équivalent avec Infomaniak.

Infomaniak ne dispose pas de cPanel, mais on peut y arriver quand même via l’interface maison. La première chose à faire est de créer sur le PC local une clé Ed25519 avec la commande ssh-keygen -t ed25519. Sur la console Infomaniak on veillera à ce que SSH soit bien activé à partir du même login que pour la connexion FTP.

On pourra se connecter avec l’onglet Console SSH

On pourra également se connecter à distance en ligne de commande (avec les indications données dans le premier écran ci-dessus) :

ssh login@XXXXX.ftp.infomaniak.com

Dans le répertoire distant .ssh, on créera un fichier authorized_keys contenant la clé publique Ed25519 créé précédemment localement. On doit les droits 600 à ce fichier avec chmod. Toujours dans le shell distant, on va créer le dépôt Git avec les commandes suivantes :

uidXXXXXX@YYYYYYYY:~$ cd
uidXXXXXX@YYYYYYYY:~$ ls -l
total 20
drwxr-sr-x 2 root gidXXXXXX 10 Oct 25 19:20 backups
drwxr-sr-x 2 vector vector 4096 Jan 2 00:00 ik-logs
drwxrwsr-x 4 uidXXXXXX gidXXXXXX 62 Oct 30 19:51 sites
drwxrwsrwt 2 uidXXXXXX gidXXXXXX 12288 Jan 2 16:21 tmp
uidXXXXXX@YYYYYYYY:~$ mkdir git_depot
uidXXXXXX@YYYYYYYY:~$ cd git_depot/
uidXXXXXX@YYYYYYYY:~/git_depot$ git init --bare hoarau.org.git
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
Initialized empty Git repository in /home/clients/XXXXXX/git_depot/hoarau.org.git/


Localement on va créer le dépôt Git de référence au niveau du répertoire contenant les fichiers du site :

$ cd /ultra/data/homepage/www.hoarau.org/
$ git init
Dépôt Git vide initialisé dans /ultra/data/homepage/www.hoarau.org/.git/

On va maintenant le lier au dépôt distant :

git remote add origin ssh://login@XXXXXX.ftp.infomaniak.com:/home/clients/XXXXXXXX/git_depot/hoarau.org.git
git add .
git commit -a -m "Commit initial"

git branch -M master
git push --set-upstream origin master
Enter passphrase for key '/home/olivier/.ssh/id_ed25519':
X11 forwarding request failed on channel 0
Énumération des objets: 3159, fait.
Décompte des objets: 100% (3159/3159), fait.
Compression par delta en utilisant jusqu'à 4 fils d'exécution
Compression des objets: 100% (3152/3152), fait.
Écriture des objets: 100% (3159/3159), 581.67 Mio | 13.38 Mio/s, fait.
Total 3159 (delta 95), réutilisés 0 (delta 0), réutilisés du paquet 0 (depuis 0)
remote: Resolving deltas: 100% (95/95), done.
To ssh://XXXXXX.ftp.infomaniak.com:/home/clients/XXXXXX/git_depot/hoarau.org.git
* [new branch] master -> master
la branche 'master' est paramétrée pour suivre 'origin/master'.

On donnera le mot de passe de la clé Ed25519 locale. Pour le clonage initial du site on tapera dans le shell distant :

cd
cd sites
rm -Rf hoarau.org
git clone /home/clients/XXXXXX/git_depot/hoarau.org.git hoarau.org/
Cloning into 'hoarau.org'...
done.
Updating files: 100% (3072/3072), done.

Maintenant pour une mise à jour du site, on travaillera sur les fichiers hébergés localement. Le travail terminé, on tapera localement (avec un exemple avec 3 fichiers modifiés) :

git add .
git commit -m "Rajout carnet de session windsurf 2026"
[master 8e2756c] Rajout carnet de session windsurf 2026
3 files changed, 353 insertions( ), 204 deletions(-)
create mode 100644 funboard/carnet-session26.htm

git push
Enter passphrase for key '/home/olivier/.ssh/id_ed25519':
X11 forwarding request failed on channel 0
Énumération des objets: 10, fait.
Décompte des objets: 100% (10/10), fait.
Compression par delta en utilisant jusqu'à 4 fils d'exécution
Compression des objets: 100% (6/6), fait.
Écriture des objets: 100% (6/6), 3.95 Kio | 505.00 Kio/s, fait.
Total 6 (delta 4), réutilisés 0 (delta 0), réutilisés du paquet 0 (depuis 0)
To ssh://XXXXXX.ftp.infomaniak.com:/home/clients/XXXXXXX/git_depot/hoarau.org.git
d6e7c30..8e2756c master -> master

C’est toujours le mot de passe de la clé Ed25519 qu’il faut donner. Ce n’est pas fini, maintenant il faut synchroniser avec les pages visibles sur internet, on tapera :

cd
mkdir deploy_tmp
cd deploy_tmp
git clone /home/clients/XXXXXX/git_depot/hoarau.org.git .
rsync -a --delete ./ ../sites/hoarau.org
cd
rm -rf deploy_tmp

L’avantage de passer par un répertoire intermédiaire est que ça ne provoque pas d’interruption de service et la commande rsync ne copiera que les fichiers mis à jour, l’option –delete permet de supprimer les fichiers du site qui ont disparu du dépôt Git. Avantage d’Infomaniak par rapport à Scaleway, on dispose de la commande rsync qui simplifie grandement la synchronisation.

Maintenant on pourra créer un script bash deploy sur le répertoire distant en créant préalablement le répertoire bin à la racine. Le fichier contiendra :

#/bin/bash
cd
# 1. Nettoyer et créer le dossier temporaire
rm -rf deploy_tmp
mkdir -p deploy_tmp
# 2. Clonage vers le dossier temporaire
cd deploy_tmp
git clone /home/clients/XXXXXXXX/git_depot/hoarau.org.git .
# 3. Synchroniser avec le dossier sites
rsync -a --delete ./ ../sites/hoarau.org
# 5. Nettoyage final du temporaire
cd
rm -rf deploy_tmp

On le rend ensuite exécutable avec un chmod et on l’appellera en se connectant en tapant bin/deploy au shell.

Quelques pages qui ont pu m’être utiles pour mettre en place cette synchronisation via Git :

Laisser un commentaire