Aller au contenu principal

Guide Pratique pour Installer GitLab

GitLab, bien plus qu'un simple gestionnaire de code source, est un outil incontournable pour les administrateurs systèmes et les développeurs. Avec ses fonctionnalités étendues de gestion de projets, d'intégration continue/déploiement continu (CI/CD) et de surveillance, GitLab offre une solution tout-en-un pour gérer l'ensemble du cycle de vie du développement logiciel.

Dans ce guide, je vais vous montrer étape par étape comment installer Gitlab. Que vous soyez un administrateur système expérimenté ou un débutant dans le domaine du DevOps, ce guide est conçu pour vous fournir toutes les informations nécessaires pour une installation réussie de Gitlab.

Prérequis à l'installation

Avant de plonger dans le processus d'installation de Gitlab, il est essentiel de s'assurer que votre environnement système répond aux exigences nécessaires. Installer Gitlab n'est pas simplement une question de téléchargement et de clic sur "Installer". Il y a des prérequis à considérer pour garantir une installation fluide et fonctionnelle.

Configuration Système Requise

Premièrement, la configuration système. Gitlab est assez flexible en termes de systèmes d'exploitation supportés. Vous pouvez l'installer sur diverses distributions Linux comme Ubuntu, Debian, CentOS et même sur des clusters Kubernetes si vous envisagez une installation à grande échelle. Toutefois, chaque distribution a ses propres instructions d'installation spécifiques. Il est donc important de consulter la documentation officielle de Gitlab pour les directives correspondant à votre système.

En termes de matériel, les exigences varient en fonction de la taille de votre équipe et du nombre de projets que vous prévoyez de gérer. Pour une petite équipe, un serveur avec au moins 4 Go de RAM et 2 cœurs de processeur fera l'affaire. Pour les équipes plus grandes ou pour une utilisation plus intensive, il est recommandé d'augmenter ces spécifications.

Dépendances Logicielles

Ensuite, les dépendances logicielles. Gitlab dépend de plusieurs logiciels et services tiers, comme PostgreSQL pour la base de données, Nginx ou Apache pour le serveur web et Redis pour la mise en cache. La plupart de ces composants sont inclus dans le package Omnibus de Gitlab, qui simplifie l'installation en regroupant Gitlab avec ses dépendances.

A moins que vous ne fassiez le choix d'installer gitlab à partir de son code source, là c'est à vous de les installer. Il est important de s'assurer que ces services soient installés et configurés correctement avant de lancer l'installation de Gitlab.

Installation de GitLab

Maintenant que nous avons couvert les prérequis, nous pouvons aborder le cœur du sujet : l'installation de Gitlab.

Téléchargement de GitLab

La première étape consiste à télécharger le bon package d'installation pour votre système. Gitlab propose plusieurs options, notamment l'installation via un package Omnibus ou une installation à partir du code source. Pour la plupart des utilisateurs, le package Omnibus est recommandé car il simplifie le processus en incluant Gitlab et ses dépendances.

Vous pouvez trouver les liens de téléchargement sur le site officiel de Gitlab. Assurez-vous de sélectionner la version qui correspond à votre distribution Linux.

Instructions d'installation pas à pas

Une fois le package téléchargé, suivez ces étapes générales :

  1. Mise à jour du système : Avant d'installer Gitlab, il est conseillé de mettre à jour votre système avec les dernières mises à jour de sécurité et de logiciels. Sur un système basé sur Debian ou Ubuntu, vous pouvez utiliser :
sudo apt update && sudo apt upgrade
  1. Installation du package : Installez le package Gitlab Omnibus en utilisant la commande spécifique à votre système. Par exemple, sur Ubuntu, vous lancerez quelque chose comme :
export EXTERNAL_URL: "https://gitlab.stephrobert.tech"
export GITLAB_ROOT_PASSWORD: "xxxxxxxxxxxxx"
sudo apt install gitlab-ce

Problèmes courants et dépannage

Il se peut que vous rencontriez des problèmes lors de l'installation. Voici quelques conseils de dépannage courants :

  • Assurez-vous que toutes les dépendances sont correctement installées et configurées.
  • Vérifiez les logs d'installation pour identifier les erreurs spécifiques.
  • Consultez la communauté Gitlab ou la documentation en ligne pour des solutions spécifiques à votre problème. Les liens

Configuration initiale de GitLab

Une fois Gitlab installé, la prochaine étape importante est la configuration initiale. Cela implique la personnalisation de Gitlab pour l'adapter aux besoins spécifiques de votre organisation. La clé de cette personnalisation réside dans le fichier de configuration de Gitlab, se trouvant dans le répertoire /etc/gitlab et se nommant gitlab.rb.

Paramètres Clés dans gitlab.rb

Voici quelques-uns des paramètres importants que vous pourriez vouloir configurer.

Configuration HTTPS

L'utilisation de HTTPS est essentielle pour sécuriser les communications entre les utilisateurs et votre instance Gitlab.

Vous aurez besoin d'un certificat SSL/TLS pour votre domaine. Vous pouvez obtenir un certificat :

  • auprès d'une autorité de certification (AC)
  • avec Let's Encrypt.
  • ou auto-signé

Ouvrez le fichier de configuration situé dans /etc/gitlab/.Indiquez le chemin de votre certificat SSL et de la clé privée dans gitlab.rb.

Par exemple :

nginx['ssl_certificate'] = "/etc/gitlab/ssl/votredomaine.com.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/votredomaine.com.key"

Après avoir apporté les modifications, enregistrez le fichier et exécutez sudo gitlab-ctl reconfigure pour appliquer les paramètres. Redémarrez Gitlab pour s'assurer que toutes les configurations sont correctement chargées.

Ouvrez un navigateur et accédez à votre instance Gitlab via HTTPS. Vérifiez que la connexion est sécurisée (symbolisée par un cadenas dans la barre d'adresse du navigateur).

Utilisation d'une base de données externe

Bien que Gitlab Omnibus vienne avec une base de données PostgreSQL intégrée, vous pouvez configurer Gitlab pour utiliser une base de données externe. Assurez-vous que votre base de données externe (PostgreSQL recommandé) est installée, sécurisée et accessible depuis le serveur Gitlab.

Ouvrez le fichier de configuration gitlab.rb et localisez la section de configuration de la base de données.Remplacez les paramètres par défaut par ceux de votre base de données externe. Cela inclut l'adresse du serveur de base de données, le port, le nom de la base de données, l'utilisateur et le mot de passe.

Par exemple :

gitlab_rails['db_adapter'] = 'postgresql'
gitlab_rails['db_host'] = 'adresse_db'
gitlab_rails['db_port'] = 5432
gitlab_rails['db_username'] = 'utilisateur_db'
gitlab_rails['db_password'] = 'motdepasse_db'
gitlab_rails['db_database'] = 'nom_db'

Enregistrez le fichier gitlab.rb et exécutez sudo gitlab-ctl reconfigure pour appliquer les modifications.

Assurez-vous que Gitlab peut se connecter et interagir correctement avec la base de données externe.

Paramètres de messagerie

Gitlab utilise le système de messagerie pour une variété de notifications importantes, comme les confirmations d'inscription, les alertes de sécurité, et les notifications de merge requests. Configurer correctement les paramètres de messagerie est donc essentiel pour assurer une communication fluide et efficace.

La configuration de la messagerie se fait via le fichier gitlab.rb. Vous devrez le modifier pour inclure les détails de votre serveur SMTP.

Ajoutez ou modifiez les paramètres SMTP pour correspondre à votre configuration de messagerie. Voici un exemple de configuration pour un serveur SMTP générique :

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "adresse_serveur_smtp"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "nom_utilisateur_smtp"
gitlab_rails['smtp_password'] = "motdepasse_smtp"
gitlab_rails['smtp_domain'] = "votredomaine.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true

Remplacez adresse_serveur_smtp, nom_utilisateur_smtp et motdepasse_smtp par vos propres informations.

Après avoir apporté des modifications, enregistrez le fichier et exécutez sudo gitlab-ctl reconfigure pour appliquer les changements.

Effectuez un test d'envoi de mail pour vérifier que la configuration fonctionne correctement.

Les paramètres de sauvegarde

La sauvegarde régulière de votre instance Gitlab est essentielle pour prévenir la perte de données en cas de défaillance matérielle, de corruption de données ou d'autres incidents. Gitlab offre des options intégrées pour faciliter la sauvegarde des données importantes.

Les sauvegardes de Gitlab incluent généralement :

  • Les bases de données Gitlab (projets, utilisateurs, commentaires, etc.).
  • Les fichiers de configuration.
  • Les fichiers et les dépôts (repositories).

Ouvrez le fichier gitlab.rb situé dans /etc/gitlab/. Spécifiez le chemin où les sauvegardes doivent être stockées.

Par exemple :

gitlab_rails['backup_path'] = '/var/opt/gitlab/backups'
gitlab_rails['backup_keep_time'] = 604800

Configurez une tâche cron pour lancer régulièrement votre sauvegarde. Vous pouvez le faire en modifiant le fichier crontab du serveur où Gitlab est installé.

Par exemple :

sudo mkdir /secret/gitlab/backups/
sudo crontab -e -u root
15 04 * * 2-6  gitlab-ctl backup-etc --delete-old-backups && cd /etc/gitlab/config_backup && cp $(ls -t | head -n1) /secret/gitlab/backups/
important

Il est important de dupliquer ses sauvegardes sur un autre système !

Rotation des logs

Une gestion correcte des logs est essentielle pour maintenir la performance. Une rotation des logs appropriée aide à gérer l'espace disque, facilite le débogage et soutient les efforts de conformité.

Gitlab génère divers types de logs, tels que :

  • Logs d'application : Contiennent des informations sur les opérations de Gitlab Rails.
  • Logs Nginx : Incluent les logs d'accès et d'erreur du serveur web Nginx.
  • Logs de la base de données : Logs relatifs aux opérations de la base de données PostgreSQL.
  • Logs Sidekiq : Concernent le traitement en arrière-plan de Gitlab.

Ouvrez le fichier gitlab.rb dans /etc/gitlab/.

Gitlab utilise logrotate pour la rotation des logs. Vous pouvez configurer les paramètres de logrotate dans gitlab.rb. Par exemple :

logging['logrotate_frequency'] = "daily" # rotate logs daily
logging['logrotate_maxsize'] = nil # logs will be rotated when they grow bigger than size specified for `maxsize`, even before the specified time interval (daily, weekly, monthly, or yearly)
logging['logrotate_size'] = nil # do not rotate by size by default
logging['logrotate_rotate'] = 30 # keep 30 rotated logs
logging['logrotate_compress'] = "compress" # see 'man logrotate'
logging['logrotate_method'] = "copytruncate" # see 'man logrotate'
logging['logrotate_postrotate'] = nil # no postrotate command by default
logging['logrotate_dateformat'] = nil # use date extensions for rotated files rather than numbers e.g. a value of "-%Y-%m-%d" would give rotated files like production.log-2016-03-0*gz

Après avoir configuré les paramètres, sauvegardez gitlab.rb et exécutez sudo gitlab-ctl reconfigure pour appliquer les modifications.

Bonnes Pratiques de Gestion des Logs
  • Surveillance régulière : Vérifiez régulièrement vos logs pour détecter d'éventuels problèmes ou anomalies.
  • Sauvegarde des Logs : Envisagez de sauvegarder les logs importants pour une analyse future ou pour des raisons de conformité.
  • Sécurité des Logs : Assurez-vous que l'accès aux logs est sécurisé pour éviter toute divulgation d'informations sensibles.
  • Analyse des Logs : Utilisez des outils d'analyse de logs pour surveiller et analyser les tendances et les problèmes potentiels.

Sécurisation de Gitlab

La sécurisation de votre serveur Gitlab est primordiale pour protéger vos données, vos projets et vos utilisateurs contre les menaces en ligne.

Mise en Place d'un Pare-feu

  1. Configurer un Pare-feu : Utilisez des outils comme iptables ou ufw (Uncomplicated Firewall) pour contrôler le trafic entrant et sortant. Seuls les ports nécessaires pour Gitlab et ses services associés (comme SSH, HTTP/HTTPS) devraient être ouverts.
  2. Règles de Pare-feu : Définissez des règles strictes pour limiter l'accès aux services essentiels et bloquer tout trafic non sollicité.

Sécurisation de SSH

  1. Utilisation de Clés SSH : Encouragez l'utilisation de clés SSH plutôt que des mots de passe pour l'authentification Git.
  2. Désactivation de l'Authentification par Mot de Passe : Dans le fichier de configuration SSH (/etc/ssh/sshd_config), désactivez l'authentification par mot de passe pour réduire le risque d'attaques par force brute.

Plus d'informations ici

Utilisation de HTTPS

  1. Configurer HTTPS : Comme mentionné précédemment, configurez HTTPS pour sécuriser la communication entre les utilisateurs et le serveur Gitlab.
  2. Renouvellement des Certificats SSL : Assurez-vous que vos certificats SSL/TLS sont à jour et renouvelés avant leur expiration.

Mises à Jour et Patchs de Sécurité

  1. Appliquer les Mises à Jour de Sécurité : Gardez Gitlab et toutes ses dépendances à jour avec les derniers patchs de sécurité.
  2. Surveiller les Bulletins de Sécurité : Restez informé des dernières vulnérabilités et des correctifs disponibles pour Gitlab.

Contrôles d'Accès et Politiques de Sécurité

  1. Gestion des Droits d'Accès : Appliquez le principe du moindre privilège, en ne donnant aux utilisateurs que les droits nécessaires pour leurs rôles.
  2. Audit des Comptes Utilisateurs : Réalisez des audits réguliers des comptes utilisateurs pour détecter et supprimer les comptes inactifs ou suspects.

Sauvegardes et Plan de Reprise après Sinistre

  1. Sauvegardes Régulières : Effectuez des sauvegardes régulières de Gitlab, comme discuté dans les chapitres précédents.
  2. Tester les Plans de Reprise : Assurez-vous que vous avez un plan de reprise après sinistre et testez-le régulièrement.

Surveillance et Maintenance de GitLab

Une fois Gitlab installé et configuré, il est important de mettre en place des stratégies de surveillance et de maintenance régulières pour assurer son fonctionnement optimal. La surveillance continue et la maintenance proactive sont essentielles pour garantir la sécurité, la performance et la fiabilité de Gitlab :

  • Performance du Serveur : Surveillez l'utilisation des ressources (CPU, mémoire, espace disque).
  • Disponibilité de GitLab : Assurez-vous que Gitlab est accessible et fonctionne correctement.
  • Activités Suspicieuses : Soyez vigilant face à des activités inhabituelles qui pourraient indiquer une tentative de piratage ou un abus du système.

Outils de surveillance

  1. GitLab Monitoring : Gitlab dispose de fonctionnalités intégrées pour la surveillance de la performance, comme Prometheus pour le suivi des métriques de système.
  2. Logs : Surveillez régulièrement les logs de Gitlab pour détecter les erreurs ou problèmes de performance.
  3. Alertes : Configurez des alertes pour être notifié en cas de problèmes critiques, comme une panne de service ou des problèmes de performance.

Bonnes Pratiques avec GitLab

La surveillance et la maintenance régulières de votre instance Gitlab sont essentielles pour assurer une expérience fluide et sécurisée pour vos utilisateurs. En mettant en œuvre ces pratiques, vous pouvez minimiser les temps d'arrêt, prévenir les pertes de données et maintenir un environnement Gitlab sain et performant.

Mises à Jour Régulières

  1. Mises à Jour de GitLab : Suivez les mises à jour de Gitlab pour bénéficier des dernières fonctionnalités et correctifs de sécurité. Utilisez la commande sudo apt update && sudo apt upgrade gitlab-ee (ou gitlab-ce pour la version Community Edition).
  2. Mises à Jour des Dépendances : Assurez-vous également que toutes les dépendances de Gitlab, comme PostgreSQL et Redis, sont à jour.

Sauvegardes et Tests de Restauration

Avant toutes opérations de maintenance commencez toujours par réaliser une sauvegarde de votre instance. Mais attention : Vous ne pouvez restaurer une sauvegarde que vers une instance possédant la même version et le même type (CE ou EE) de Gitlab sur lesquels elle a été créée. Par exemple, CE 15.1.4.

  • Création de Sauvegarde : Pour créer une sauvegarde, exécutez :
sudo gitlab-backup create
  • Restauration à partir d'une Sauvegarde : Pour restaurer Gitlab à partir d'une sauvegarde, utilisez les commandes suivantes :
sudo gitlab-ctl stop puma
sudo gitlab-ctl stop sidekiq
# Verifier
sudo gitlab-ctl status

sudo gitlab-backup restore BACKUP=11493107454_2018_04_25_10.6.4-ce

sudo gitlab-ctl restart
sudo gitlab-rake gitlab:check SANITIZE=true
sudo gitlab-rake gitlab:artifacts:check
sudo gitlab-rake gitlab:lfs:check
sudo gitlab-rake gitlab:uploads:check

Conseils pour les Sauvegardes

  • Testez vos Sauvegardes : Assurez-vous régulièrement que vos sauvegardes fonctionnent en effectuant des tests de restauration.
  • Sauvegarde Hors Site : Envisagez de stocker des sauvegardes hors site ou dans le cloud pour une protection supplémentaire contre les pannes matérielles et les catastrophes naturelles.
  • Sécurité des Sauvegardes : Protégez vos sauvegardes avec des mesures de sécurité appropriées pour éviter les accès non autorisés.
  • Plan de Reprise après Sinistre : Intégrez vos sauvegardes Gitlab dans un plan de reprise après sinistre global pour votre organisation.

Nettoyage et Optimisation

  • Nettoyage des Repositories : Supprimez régulièrement les branches et les projets obsolètes pour économiser de l'espace et améliorer les performances.
  • Optimisation de la Base de Données : Effectuez des tâches de maintenance de la base de données, comme le vacuuming pour PostgreSQL, pour optimiser les performances.

Surveillance de la Sécurité

  • Audits de Sécurité : Effectuez des audits de sécurité réguliers pour détecter et corriger les vulnérabilités.
  • Mises à Jour de Sécurité : Appliquez rapidement les mises à jour de sécurité pour protéger votre instance contre les menaces.

Conclusion

En suivant les pratiques et configurations recommandées dans ce guide, vous pouvez maximiser l'efficacité et la sécurité de votre instance Gitlab. La clé est de rester informé des dernières mises à jour et des meilleures pratiques de la communauté Gitlab. Rappelez-vous, la sécurité et la maintenance sont des processus continus et nécessitent une attention régulière pour garantir une expérience fluide et sécurisée.

En conclusion, Gitlab est plus qu'un outil ; c'est un des piliers de votre infrastructure DevOps.