Retour aux outils
Dev ToolsIntermédiaireOpen sourceAuto-hébergeable

GitLab

**Forge Git complète tout-en-un** : dépôt Git, CI/CD, registry Docker, wiki, issue tracker, planning

MAJ 2026-06-14
GitLab
Site officiel Code source★ 24 422

GitLab est une plateforme DevOps complète qui couvre tout le cycle de vie d'un projet logiciel, en un seul produit :

Description

GitLab est une plateforme DevOps complète qui couvre tout le cycle de vie d'un projet logiciel, en un seul produit :

  • Forge Git : dépôt, branches, merge requests, code review
  • CI/CD : pipelines (.gitlab-ci.yml), runners Go, registry d'images
  • Container Registry : images Docker, Helm charts, packages
  • Issue Tracker : tickets, boards Kanban, milestones
  • Wiki : documentation par projet
  • Monitoring : Prometheus + Grafana intégrés (depuis v13)
  • Pages : hébergement statique (comme GitHub Pages)
  • Web IDE : édition de fichiers en ligne (VS Code-like)
  • Sécurité : SAST, DAST, dependency scanning (Ultimate)
  • Planning : epics, roadmaps (Ultimate)

Édition Community (CE) — open source, gratuite :

  • Forge, CI/CD, registry, wiki, issues, pages
  • Pas de SAML, pas d'audit logs avancés, pas de compliance, pas de multi-cluster

Édition Enterprise (EE) — propriétaire, payante :

  • SAML SSO, audit events, IP allow-listing
  • Multi-cluster Kubernetes, deploy boards
  • Compliance, vulnerability management avancé

Cas d'usage :

  • Remplacer GitHub + CI/CD + Docker Hub + Jira + Wiki par un seul outil self-hosted
  • Workflow DevOps complet sans dépendre du cloud
  • Projets open source : auto-héberger ses propres projets
  • Entreprises : conformité RGPD, contrôle total des données

Concurrents directs : [[app-forgejo]] / [[app-gitea]] (légers, mono-machine) vs GitLab (lourd, full-featured).

Installation

Via Docker Compose (méthode officielle Omnibus-like)

# docker-compose.yml
version: '3.8'
services:
  gitlab:
    image: gitlab/gitlab-ce:latest
    container_name: gitlab
    restart: unless-stopped
    hostname: gitlab.example.com
    environment:
      - GITLAB_OMNIBUS_CONFIG=true
    shm_size: '256m'
    ports:
      - "22:22"       # SSH
      - "80:80"       # HTTP
      - "443:443"     # HTTPS
    volumes:
      - gitlab-config:/etc/gitlab
      - gitlab-logs:/var/log/gitlab
      - gitlab-data:/var/opt/gitlab
    networks:
      - proxy

volumes:
  gitlab-config:
  gitlab-logs:
  gitlab-data:

networks:
  proxy:
    external: true

Méthode recommandée : Omnibus (bare-metal)

# Sur Ubuntu/Debian
curl -L https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
sudo EXTERNAL_URL="https://gitlab.example.com" apt-get install gitlab-ce

# Configuration dans /etc/gitlab/gitlab.rb puis :
sudo gitlab-ctl reconfigure

⚠️ Ne pas exposer ports 80/443 du conteneur si reverse proxy en amont — utiliser Traefik/Nginx.

Configuration

  1. Premier accès : on vous demandera de définir un mot de passe pour l'utilisateur root
  2. SMTP : configurer dans gitlab.rb (gitlab_rails['smtp_*'])
  3. Reverse proxy : [[traefik]] recommandé avec nginx['listen_port'] = 8080 dans le conteneur
  4. Backups : gitlab-backup create (cron recommandé)
  5. Runners : ajouter des runners auto-hébergés pour vos pipelines
  6. LDAP/SAML : SAML = EE, LDAP = CE (config dans gitlab.rb)

Alternatives

  • [[app-forgejo]] — Fork communautaire Gitea, plus léger, 100% libre
  • [[app-gitea]] — Forge légère, n'inclut pas la CI complète (Gitea Actions)
  • [[app-woodpecker-ci]] + Forgejo — Stack léger équivalent à GitLab
  • GitHub Enterprise — Managé, pas self-hosted
  • Gitea + Drone CI (historique) — Stack légère complète
  • OneDev — Concurrent direct, all-in-one en Java

Sécurité

  • HTTPS obligatoire (Traefik ou Let's Encrypt intégré)
  • Auth forte : 2FA activable par utilisateur
  • SAML : EE uniquement, sinon LDAP/OAuth
  • Audit logs : CE basique, EE avancé
  • IP allowlist : EE uniquement
  • Container scanning : EE uniquement
  • Backups : gitlab-backup create (chiffrement supporté)
  • Runners non-privilégiés : faire tourner les runners en rootless Docker

Ressources