Déployer un projet hébergé dans Gitlab sur Ubuntu avec clé SSH et Git

Depuis le temps que je voulais faire cet article, il arrive enfin. J’espère qu’il aidera les débutants et c’est toujours un plaisir de voir vos commentaires qui me remercient de l’aide. Vous avez pu résoudre votre problématique presque facilement en passant ici et ça me rend vraiment heureux. Aujourd’hui, on va parler de Git, un outil formidable que vous connaissez déjà si vous êtes arrivés ici, mais aussi comment faire pour l’exploiter et installer votre projet sur un serveur Linux Ubuntu.

J’ai utilisé plusieurs forges logicielles par le passé, comme Bitbucket qui a fini par me décevoir après des restrictions où il fallait payer. Il y a aussi Github, mais ce n’est pas adapté à tout en version gratuite et depuis quelque temps mon dévolu s’est jeté sur GitLab. Leurs services remplissent toutes mes conditions, ça marche bien et depuis plusieurs années, je n’ai pas eu le moindre problème. Il existe aussi des forges logiciels que vous pouvez héberger vous-même et qui fonctionnent avec Git, mais ce sera l’occasion de traiter ce sujet dans un autre article. Gitlab, c’est donc le service que j’utilise gratuitement pour la majorité de mes projets en solo ou en équipe. Allez, il est temps de passer aux choses sérieuses et prendre le cas le plus simple. Vous avez un projet hébergé sur Gitlab et on va le déployer sur un serveur Ubuntu à jour.

Créer une clé SSH sur le serveur sous Ubuntu

Dans un premier temps, pour récupérer notre projet de manière sécurisé, il faut avoir une clé SSH valide qui va nous permettre de nous authentifier auprès de la forge ou le code du projet est stocké. On va donc si ce n’est pas encore fait créer une clé SSH sur notre serveur Ubuntu avec la commande suivante :

ssh-keygen -t ed25519 -C "mon@email.zonetuto"

Cette commande va donc nous générer une clé SSH pour notre utilisateur. Il est possible de lui attribuer un mot de passe pour pouvoir l’utiliser dans le futur et de choisir son emplacement. Je laisse tout par défaut et j’obtiens les informations suivantes dans le terminal :

Generating public/private ed25519 key pair.
Enter file in which to save the key (/zonetuto/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /zonetuto/.ssh/id_ed25519
Your public key has been saved in /zonetuto/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:moP+Zq3e/FWSr5tLc6edGc5Vrq9b16X0EJ2oVcBiReK admin@zonetuto.fr
The key's randomart image is:
+--[ED25519 256]--+
|    o  .+        |
|   o .o o        |
|    . o o        |
|     o.o E       |
|      + . +      |
|     . . + .     |
|      .o+ o.     |
|      oBo. .     |
|    .oo+=%..     |
+----[SHA256]-----+

Il faut maintenant récupérer le contenu de cette clé publique, vous pouvez le faire avec la commande cat :

cat ~/.ssh/id_ed25519.pub

Importer la clé SSH publique dans GitLab

Maintenant, que vous êtes en possession de votre clé publique, vous devez l’importer dans GitLab pour pouvoir vous authentifier. Attention n’oubliez jamais qu’il ne faut pas que votre clé privée fuite sinon il faudra régénérer une paire de clés SSH pour garantir que la sécurité ne puisse pas être compromise par un vol et une utilisation frauduleuse de votre clé SSH.

Dans GitLab, c’est assez simple et l’interface est bien faite. Allez dans les préférences de votre profil pour pouvoir accéder à la gestion des clés SSH rattachées à votre compte. Vous pouvez aussi directement passer par ce lien pour y accéder : https://gitlab.com/-/user_settings/ssh_keys. Cliquez sur le bouton Add new key et vous devriez arriver sur cette interface :

Il faudra renseigner votre clé publique et lui donner un titre. Je vous conseille de bien la nommer, car cela pourra vous être utile dans quelques mois si vous voulez révoquer une clé ou savoir quelle clé de quel serveur a expiré. À ce propos, vous pouvez mettre une date d’expiration sur votre clé. Est-ce qu’il faut le faire systématiquement ? Je dirais que ça dépend des cas. Selon les projets et les serveurs que je vais utiliser, parfois, j’ajoute une date parfois non donc c’est vous qui voyez. Une fois que vous avez indiqué, vous pouvez valider et ajouter votre clé SSH dans GitLab.

Vous pouvez maintenant retourner sur votre serveur en SSH et vous placer dans le dossier ou vous souhaitez déployer votre projet. Tant que j’y pense, si ce n’est pas encore fait, il faudra installer Git, car sans lui, vous ne pourrez pas récupérer votre projet. Pour installer Git rien de plus simple sous Ubuntu avec :

sudo apt install git

Dans mon cas, je vais utiliser ce projet avec NGINX, car il a vocation à être accessible à travers un nom de domaine donc je me déplace dans le bon dossier :

cd /var/www/

Une fois dans ce dossier, je peux maintenant cloner mon projet à l’aide de la commande suivante qui va créer un dossier avec le nom du projet et votre code à l’intérieur :

git clone git@gitlab.com:groupe-ou-namespace/slug-du-projet.git

Vu que c’est la première fois que vous utilisez cette clé, il faudra confirmer et votre projet devrait se cloner sans encombre, j’ai alors le résultat suivant qui s’affiche :

Cloning into 'slug-du-projet'…
The authenticity of host 'gitlab.com (168.1.2.3)' can't be established.
ED25519 key fingerprint is SHA256:FWSr5tLc6edGc5Vrq9b16X0EJ2oVcBiReK.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'gitlab.com' (ED25519) to the list of known hosts.
remote: Enumerating objects: 689, done.
remote: Counting objects: 100% (689/689), done.
remote: Compressing objects: 100% (396/396), done.
remote: Total 689 (delta 263), reused 689 (delta 263), pack-reused 0 (from 0)
Receiving objects: 100% (689/689), 184.40 KiB | 1.30 MiB/s, done.
Resolving deltas: 100% (263/263), done.

Voilà vous avez maintenant déployé le code source de votre projet sur votre serveur. Selon le projet, il faudra ensuite l’installer proprement avec par exemple composer pour Laravel, mais s’il s’agit de scripts simples, vous pouvez directement l’utiliser sur votre serveur. J’espère que ce tutoriel vous sera utile pour utiliser les clés SSH dans un serveur avec GitLab !

Laisser un commentaire