Aller au contenu
Culture DevOps medium
🔐 Alerte sécurité — Incident supply chain Trivy : lire mon analyse de l'attaque

Installer GitLab CE self-managed sur Linux

14 min de lecture

GitLab self-managed vous donne un contrôle total sur vos données, vos pipelines et votre configuration. Le package Omnibus (méthode recommandée) installe GitLab et toutes ses dépendances en une seule commande, sans avoir à gérer séparément PostgreSQL, Redis, Nginx ou Gitaly. Ce guide couvre l’installation sur Ubuntu 24.04 et RHEL/Rocky 9, avec les prérequis exacts, les étapes validées en lab, et la validation complète.

Prérequis : Un serveur Linux with accès root, une connexion internet, et un nom de domaine (ou une IP pour un lab).

Avant de commencer, choisissez la méthode adaptée à votre contexte :

MéthodeQuand l’utiliserPrérequis
Linux package (Omnibus)Self-managed classique, VM ou bare metalDebian/Ubuntu ou RHEL
Helm chartCluster Kubernetes déjà opéré en prodK8s 1.21+, PostgreSQL externe, Object Storage
OperatorGestion K8s déclarativeK8s + CRD GitLab Operator
GitLab SaaSVous ne voulez pas gérer l’infraCompte gitlab.com
DockerDev / test uniquementDocker Engine

Ce guide traite uniquement du Linux package (Omnibus) — la méthode la plus répandue et la plus simple à maintenir.

Les prérequis varient selon le nombre d’utilisateurs. Ces valeurs correspondent aux recommandations officielles GitLab :

ComposantMinimum (lab/démo)Petit team (≤ 20 users)Production (≤ 500 users)
CPU2 vCPU4 vCPU8 vCPU+
RAM4 Go8 Go16 Go+
Disque (install)40 Go60 Go SSD100 Go+ SSD
SwapRecommandé (2-4 Go)OptionnelNon requis avec 16 Go+

Systèmes d’exploitation supportés (package officiel) :

  • Ubuntu 22.04, 24.04
  • Debian 11, 12, 13
  • RHEL / Rocky Linux / AlmaLinux 8, 9
  • Amazon Linux 2, 2023
  • openSUSE Leap 15.6

Ports à ouvrir :

PortServiceRequis
80 (HTTP)Redirection vers HTTPSOui
443 (HTTPS)Interface web et APIOui (prod)
22SSH GitSi accès SSH aux repos
  1. Mettre le système à jour

    Fenêtre de terminal
    sudo apt-get update && sudo apt-get upgrade -y
  2. Installer les dépendances

    Fenêtre de terminal
    sudo apt-get install -y curl ca-certificates openssh-server tzdata perl postfix

    Lors de la configuration de postfix, choisissez “Internet Site” et acceptez le nom de domaine proposé.

  3. Ajouter le dépôt GitLab

    Fenêtre de terminal
    curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash

    Ce script ajoute la clé GPG, les sources apt et effectue apt-get update.

  4. Installer GitLab CE

    Fenêtre de terminal
    sudo EXTERNAL_URL="http://192.168.1.100" apt-get install -y gitlab-ce

    Remplacez 192.168.1.100 par votre IP ou votre nom de domaine.

    L’installation prend 10 à 20 minutes — GitLab configure PostgreSQL, Redis, Nginx et Gitaly.

  5. Vérifier l’installation

    Fenêtre de terminal
    sudo gitlab-ctl status

    Résultat attendu (tous les services run) :

    run: alertmanager: (pid 25056) 531s; run: log: (pid 24839) 554s
    run: gitaly: (pid 24983) 534s; run: log: (pid 23825) 661s
    run: gitlab-exporter: (pid 25014) 532s; run: log: (pid 24618) 574s
    run: gitlab-kas: (pid 24277) 651s; run: log: (pid 24296) 650s
    run: gitlab-workhorse: (pid 24971) 534s; run: log: (pid 24499) 587s
    run: logrotate: (pid 23697) 677s; run: log: (pid 23749) 674s
    run: nginx: (pid 24995) 533s; run: log: (pid 24512) 586s
    run: node-exporter: (pid 25006) 533s; run: log: (pid 24585) 580s
    run: postgres-exporter: (pid 25067) 530s; run: log: (pid 24876) 549s
    run: postgresql: (pid 23897) 658s; run: log: (pid 23917) 654s
    run: prometheus: (pid 25032) 532s; run: log: (pid 24804) 560s
    run: puma: (pid 24359) 600s; run: log: (pid 24373) 598s
    run: redis: (pid 23752) 671s; run: log: (pid 23767) 670s
    run: redis-exporter: (pid 25019) 532s; run: log: (pid 24727) 568s
    run: sidekiq: (pid 24398) 594s; run: log: (pid 24427) 593s

    Si un service affiche down:, consultez la section Dépannage.

  1. Récupérer le mot de passe initial

    GitLab génère un mot de passe aléatoire pour l’utilisateur root :

    Fenêtre de terminal
    sudo cat /etc/gitlab/initial_root_password

    Résultat :

    # WARNING: This password is only valid if ALL of the following are true:
    # • You set it manually via the GITLAB_ROOT_PASSWORD environment variable
    # OR the gitlab_rails['initial_root_password'] setting in /etc/gitlab/gitlab.rb
    # • You set it BEFORE the initial database setup (typically during first installation)
    # • You have NOT changed the password since then (via web UI or command line)
    #
    # If this password doesn't work, reset the admin password using:
    # https://docs.gitlab.com/security/reset_user_password/#reset-the-root-password
    Password: <mot-de-passe-généré-aléatoirement>=
    # NOTE: This file is automatically deleted after 24 hours on the next reconfigure run.
  2. Se connecter à l’interface web

    Ouvrez http://<VOTRE_IP> dans un navigateur.

    • Identifiant : root
    • Mot de passe : la valeur récupérée à l’étape précédente
  3. Changer le mot de passe root immédiatement

    Compte → Preferences → Password — changez le mot de passe dès la première connexion. Ne jamais laisser le mot de passe initial en place.

Après la première connexion, validez que GitLab est pleinement opérationnel :

Fenêtre de terminal
# Diagnostic Rails complet
sudo gitlab-rake gitlab:check SANITIZE=true

Un résultat sain ressemble à :

Checking GitLab subtasks ...
Checking GitLab Shell ...
GitLab Shell: ... GitLab Shell version >= 14.47.0 ? ... OK (14.47.0)
Internal API available: OK
Redis available via internal API: OK
Checking GitLab Shell ... Finished
Checking Gitaly ...
Gitaly: ... default ... OK
Checking Gitaly ... Finished
Checking Sidekiq ...
Checking Sidekiq ... Finished
Checking Incoming Email ...
Checking Incoming Email ... Finished
Checking GitLab App ...
Checking GitLab App ... Finished
Checking GitLab subtasks ... Finished

Il est normal d’avoir quelques avertissements (FAILED) liés à la configuration SMTP si vous ne l’avez pas encore configurée.

CheminContenu
/etc/gitlab/gitlab.rbConfiguration principale (tous les paramètres)
/etc/gitlab/gitlab-secrets.jsonSecrets chiffrés — ne jamais committer en Git
/var/opt/gitlab/Données GitLab (repos, uploads, DB)
/var/log/gitlab/Logs de tous les services
/opt/gitlab/Binaires et services Omnibus
Fenêtre de terminal
# Appliquer les changements de gitlab.rb
sudo gitlab-ctl reconfigure
# Redémarrer tous les services
sudo gitlab-ctl restart
# Voir les logs en temps réel
sudo gitlab-ctl tail
# Logs d'un service spécifique
sudo gitlab-ctl tail nginx
sudo gitlab-ctl tail puma
SymptômeCause probableSolution
Service puma en downManque de RAMVérifier free -h, augmenter la RAM ou activer le swap
502 Whoops, GitLab is taking too long to respondpuma encore en démarrageAttendre 2-3 min, GitLab démarre lentement après install
500 We're sorry après reconfigureErreur dans gitlab.rbVérifier sudo gitlab-ctl tail puma
Impossible d’accéder à l’UI (timeout)Nginx arrêté ou port fermésudo gitlab-ctl status nginx + vérifier le firewall
git clone échoue en SSHPort 22 non ouvert ou runner de GitLab conflit avec SSH systèmeVoir configuration GitLab SSH port
Page blanche après installationBase de données pas encore prêtesudo gitlab-rake db:migrate:status

Commandes de diagnostic utiles :

Fenêtre de terminal
# État de tous les services
sudo gitlab-ctl status
# Logs en temps réel (Ctrl+C pour quitter)
sudo gitlab-ctl tail
# Diagnostic complet
sudo gitlab-rake gitlab:check SANITIZE=true
# Informations système
sudo gitlab-rake gitlab:env:info
  • Le package Omnibus est la méthode recommandée : GitLab + toutes ses dépendances en un seul package.
  • 8 Go de RAM minimum pour une utilisation réelle — 4 Go suffit pour un lab.
  • L’EXTERNAL_URL définie à l’installation est utilisée partout (emails, webhooks, clones SSH/HTTPS). Changez-la via gitlab.rb + gitlab-ctl reconfigure, pas via variable d’environnement.
  • Le mot de passe initial root expire après 24h — changez-le à la première connexion.
  • /etc/gitlab/gitlab-secrets.json est aussi important que gitlab.rb pour la restauration — sauvegardez-les ensemble.
  • gitlab-ctl reconfigure prend 2-5 minutes. C’est normal.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn