---
title: GitLab
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, development, forge, git, ci-cd, devops]
confidence: high
contested: false
sources: [https://selfh.st/apps/?tag=Development, https://github.com/gitlabhq/gitlabhq]
---

# 💻 GitLab

> **Forge Git complète tout-en-un** : dépôt Git, CI/CD, registry Docker, wiki, issue tracker, planning, monitoring. La solution DevOps la plus complète en open source.

## 📋 Informations Générales

| Champ | Valeur |
| :--- | :--- |
| **Site web** | [about.gitlab.com](https://about.gitlab.com/) |
| **GitHub (mirror)** | [gitlabhq/gitlabhq](https://github.com/gitlabhq/gitlabhq) |
| **Dépôt principal** | [gitlab.com/gitlab-org/gitlab](https://gitlab.com/gitlab-org/gitlab) |
| **License** | MIT (CE) / Propriétaire (EE) |
| **Langage** | Ruby (on Rails) + Go (runners) |
| **Étoiles GitHub** | 7 159 ⭐ (mirror) |
| **Catégorie** | [[cat-development\|Development]] |
| **Note** | ⚠️ **Très lourd** : ~4-8 Go de RAM minimum, le plus complet de tous les self-hosted (mais aussi le plus gourmand). Édition **Community (CE) vs Enterprise (EE)** : EE a des features avancées (SAML, audit, compliance) payantes. |

## 📝 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)

```yaml
# 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)

```bash
# 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

- [Documentation officielle](https://docs.gitlab.com/)
- [GitLab.com (SaaS de référence)](https://gitlab.com/)
- [Comparatif CE vs EE](https://about.gitlab.com/pricing/)
- [GitLab CI/CD Examples](https://docs.gitlab.com/ee/ci/examples/)

## 🔗 Pages Liées

- [[cat-development]] — Catégorie Development
- [[app-forgejo]] / [[app-gitea]] — Alternatives plus légères
- [[app-woodpecker-ci]] — CI/CD externe (si pas GitLab CI)
- [[app-traefik]] — Reverse proxy
- [[securisation-home-lab]] — Bonnes pratiques
- [[recettes-docker-compose]] — Templates Docker
