Gitlab sur un serveur Cloud
Introduction
Gitlab peut servir de serveur central pour le système de gestion de versions git. En outre, il offre aux équipes des fonctionnalités pour la gestion de projets logiciels, telles qu’un système de billetterie intégré et des fonctionnalités pour l’intégration continue ainsi que la livraison continue. Gitlab est comparable à github.com, mais avec la différence qu’il peut être installé sur un serveur privé et que l’on a ici un contrôle total en tant qu’administrateur. Étant donné qu’il est proposé en logiciel open source, des adaptations spécifiques à Gitlab seraient théoriquement possibles.
Le logiciel comprend essentiellement une interface web, mais inclut également un serveur SSH intégré par lequel les clients git peuvent accéder aux dépôts sur le serveur. Développé en Ruby, Go et Vue.js, Gitlab ne peut pas être installé sur un espace web, mais fonctionne sur les distributions Linux courantes, rendant son utilisation sur un serveur Cloud possible.
Gitlab est fourni par la société Gitlab, Inc dont le siège est à San Francisco, et cela en deux variantes. Une édition communautaire “Gitlab CE” est disponible sous une licence Open Source MIT et peut être utilisée gratuitement. Si des fonctionnalités supplémentaires, non incluses dans “Gitlab CE”, sont nécessaires, on peut se tourner vers l’édition payante “Gitlab EE”.
Prérequis
Connaissances
Ce guide s’adresse à des personnes ayant des connaissances de base en Linux, familiarisées avec l’exploitation de serveurs Linux. Vous devriez être capable de gérer la ligne de commande Linux et savoir comment vous connecter à votre serveur Cloud via SSH.
Matériel
Gitlab fonctionne avec 4 Go de mémoire RAM, mais un minimum de 8 Go est recommandé. Il est également recommandé d’avoir au moins deux cœurs de CPU à disposition. Dans cette configuration, il y a suffisamment de ressources pour environ 100 utilisateurs. La taille de l’espace disque dépend de la taille des dépôts git qui doivent être stockés sur le serveur. Pour plus de détails sur les prérequis pour Gitlab, veuillez consulter cette page.
Si des sauvegardes de Gitlab doivent être effectuées sur le serveur lui-même, plus d’espace de stockage sera nécessaire.
Système d’exploitation
Ce guide montre l’installation sur un serveur Cloud nouvellement configuré avec Debian 10 “Buster”. Gitlab prend en charge d’autres distributions Linux. Un aperçu de tout cela se trouve sur cette page.
Domaine
Pour le serveur Gitlab, vous devriez créer un domaine ou un sous-domaine propre, comme par exemple git.domaine-mustermann.fr.
Installation
Il existe plusieurs méthodes pour installer Gitlab sur un système Debian. Nous utilisons ici le paquet “Omnibus Gitlab”. Il permet l’installation des différents composants de Gitlab sous une forme groupée et évite de grandes configurations complexes.
Veuillez vous connecter par SSH en tant qu’utilisateur root sur votre serveur Cloud :
ssh root@git.domaine-mustermann.fr
et installez les dépendances nécessaires avec les commandes suivantes :
apt-get update
apt-get install -y curl sudo ca-certificates
Veuillez ajouter le dépôt de Gitlab et l’installer avec la commande suivante :
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
Ensuite, installez le paquet gitlab-ce pour l’édition communautaire :
apt install gitlab-ce
Après l’installation du paquet, le message suivant devrait apparaître sur l’écran :
*. *.
*** ***
***** *****
.****** *******
******** ********
,,,,,,,,,***********,,,,,,,,,
,,,,,,,,,,,*********,,,,,,,,,,,
.,,,,,,,,,,,*******,,,,,,,,,,,,
,,,,,,,,,*****,,,,,,,,,.
,,,,,,,****,,,,,,
.,,,***,,,,
,*,.
_______ __ __ __
/ ____(_) /_/ / ____ _/ /_
/ / __/ / __/ / / __ `/ __ \
/ /_/ / / /_/ /___/ /_/ / /_/ /
\____/_/\__/_____/\__,_/_.___/
Merci d'avoir installé GitLab !
GitLab n'a pas pu détecter un nom d'hôte valide pour votre instance.
Veuillez configurer une URL pour votre instance GitLab en définissant le paramètre `external_url`
dans le fichier /etc/gitlab/gitlab.rb.
Ensuite, vous pouvez démarrer votre instance GitLab en exécutant la commande suivante :
sudo gitlab-ctl reconfigure
Pour une liste complète des options de configuration, veuillez consulter le readme d'Omnibus GitLab
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md
Configuration
Après une installation réussie, quelques éléments doivent encore être configurés avant que Gitlab puisse être utilisé.
Veuillez ouvrir le fichier /etc/gitlab/gitlab.rb avec un éditeur de texte, tel que nano ou vim (pour les utilisateurs avancés) sur le serveur :
nano /etc/gitlab/gitlab.rb
Configuration d’une URL correcte
Veuillez définir le paramètre external_url sur l’URL du serveur, par exemple sur https://git.domaine-mustermann.fr. Veuillez vous assurer d’utiliser https:// au lieu de http:// pour une connexion sécurisée au serveur. Gitlab génère et utilise automatiquement un certificat SSL/TLS de “Let’s encrypt”.
## URL GitLab
##! URL à laquelle GitLab sera accessible.
##! Pour plus de détails sur la configuration de external_url, voyez :
##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab
external_url 'http://git.domaine-mustermann.fr'
Veuillez exécuter ensuite la commande suivante pour activer la nouvelle configuration :
sudo gitlab-ctl reconfigure
L’opération prendra un certain temps. Après de nombreux messages, le message “gitlab reconfiguré !” devrait apparaître.
Configuration d’un serveur de messagerie pour les e-mails sortants (optionnel)
Dans le fichier /etc/gitlab/gitlab.rb, vous pouvez saisir les informations d’identification pour un serveur de messagerie externe, si l’envoi ne doit pas se faire directement via le serveur Gitlab. Les paramètres pourraient ressembler par exemple aux suivants :
### Paramètres du serveur de messagerie GitLab
###! Docs: https://docs.gitlab.com/omnibus/settings/smtp.html
###! **Utilisez smtp au lieu de sendmail/postfix.**
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "mail.domaine-mustermann.fr"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "gitlab@domaine-mustermann.fr"
gitlab_rails['smtp_password'] = "motdepassealéatoire"
gitlab_rails['smtp_domain'] = "domaine-mustermann.fr"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
De plus, l’adresse de l’expéditeur peut également être spécifiée :
### Paramètres des e-mails
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = 'gitlab@domaine-mustermann.fr'
Veuillez ensuite activer la nouvelle configuration :
sudo gitlab-ctl reconfigure
Vous pouvez tester l’envoi d’e-mails en utilisant plus tard par exemple la fonction “Mot de passe oublié” de votre compte utilisateur.
Configuration du compte utilisateur administrateur
Veuillez maintenant accéder à la page dans votre navigateur via l’URL de l’instance Gitlab. Vous pourrez y définir le mot de passe administrateur :

Connectez-vous ensuite avec le nom d’utilisateur “root” et le mot de passe que vous avez défini :

Après connexion, Gitlab se présente comme suit :

Comme votre nom n’est probablement pas “root”, il est utile de changer votre nom d’utilisateur. Cela se fait dans vos paramètres de compte. Veuillez y accéder via le menu déroulant dans le coin supérieur droit de la page :

Sur la page suivante, vous pouvez, par exemple, changer votre nom affiché et votre adresse e-mail.

Ensuite, cliquez dans le menu à gauche sur “Compte”, vous pourrez alors changer votre nom d’utilisateur sur la page suivante :

La langue de l’interface peut être changée en allemand dans “Préférences” pour le compte utilisateur individuel :

Sous “Clés SSH”, vous pouvez ajouter une clé SSH publique pour accéder à Gitlab avec git :

Désactiver l’enregistrement public
Gitlab permet généralement à quiconque de créer un nouveau compte utilisateur sur l’instance via l’interface Web. Il est conseillé de désactiver ou de restreindre cette fonctionnalité. Pour ce faire, veuillez accéder à la zone “Admin” :

Cliquez ensuite sur “Paramètres” > “Général” et dépliez les paramètres sous “Restrictions d’enregistrement” :

Veuillez enlever la coche à “Inscription autorisée”. Au lieu de désactiver l’enregistrement, vous pouvez également, par exemple, autoriser uniquement les utilisateurs ayant une adresse e-mail du domaine de votre entreprise à s’inscrire.
Création de comptes utilisateurs
De nouveaux comptes utilisateurs peuvent être créés dans la zone “Admin”. Cliquez là-dessus sur “Vue d’ensemble” > “Utilisateurs” :

Pour ajouter un nouvel utilisateur, cliquez là-dessus sur “Nouvelle(l) Utilisateur(trice)”.

Les utilisateurs nouvellement créés reçoivent automatiquement un lien d’invitation par e-mail pour définir leur mot de passe.
Sauvegardes
Comme le serveur Gitlab contient généralement des données critiques pour l’entreprise, des sauvegardes régulières doivent être effectuées. Gitlab inclut un outil de sauvegarde dans l’installation Omnibus, qui sécurise toutes les données importantes de l’installation. Pour cela, les dépendances nécessaires doivent d’abord être installées :
apt update
apt install tar rsync
Ensuite, une sauvegarde peut être créée sur le serveur même avec la commande :
gitlab-backup create
Les sauvegardes sont stockées dans le répertoire /var/opt/gitlab/backups/ sous forme d’archives tar. Veuillez copier les fichiers de là à un endroit sécurisé en dehors du serveur.
La sauvegarde ne contient pas la configuration de l’installation de Gitlab. Toutefois, elle contient des clés cryptographiques importantes. Par conséquent, la configuration doit être sauvegardée séparément. Veuillez copier le répertoire
/etc/gitlab
à un endroit sûr en dehors du serveur.
Pour plus d’informations sur les sauvegardes et la restauration de Gitlab, vous pouvez consulter la documentation de Gitlab.
Mises à jour et entretien
Gitlab reçoit continuellement de nouvelles fonctionnalités et, comme dans tout autre logiciel, des erreurs et des failles de sécurité peuvent être survenues durant le processus de développement, qui ne peuvent être corrigées que par l’installation régulière de mises à jour. Puisque Gitlab a été installé via le gestionnaire de paquets Debian, les mises à jour pour l’installation Omnibus de Gitlab seront automatiquement appliquées lors de la mise à jour du système d’exploitation avec
apt update
apt upgrade
Autres fonctionnalités
Mattermost
L’installation de Gitlab inclut directement le service de messagerie instantanée web pour les entreprises “Mattermost”. Comment configurer Mattermost facilement est décrit dans la documentation de Gitlab.
Large File Storage (LFS)
L’extension Large File Storage" (LFS) pour git permet de gérer également de grands fichiers de manière économiquement dans git. Git LFS ne stocke pas tout l’historique des versions sur l’ordinateur client, mais sur le serveur, c’est pourquoi Gitlab doit soutenir cette fonctionnalité. Comment activer LFS dans Gitlab est décrit ici.
Intégration continue, livraison continue et déploiement continu
“L’intégration continue” (CI) est une méthode dans le développement logiciel où de petits changements d’un logiciel sont testés automatiquement et isolément pendant le processus de développement et ne sont ajoutés à la base de code qu’après un test réussi.
“La livraison continue” et “le déploiement continu” (CD) permettent l’installation semi-automatique ou entièrement automatisée du logiciel développé sur les systèmes cibles.
Gitlab propose de nombreuses fonctionnalités pour la CI et le CD. Vous pouvez trouver plus d’informations à ce sujet dans la documentation de Gitlab.
Conclusion
Ce tutoriel a montré comment installer Gitlab sur un serveur Cloud et comment le configurer de manière basique. Il a également montré comment assurer un fonctionnement sécurisé grâce à l’installation de mises à jour et à la création de sauvegardes à long terme.
Références
- Site officiel du système de gestion de versions git
- Informations générales sur Gitlab
- “Installation de GitLab” dans la documentation de Gitlab
- “Options de configuration” dans la documentation de Gitlab
- “Sauvegarde et restauration de GitLab” dans la documentation de Gitlab