Files
wiki/Catalogue-Self-Hosted/apps/app-gitlab.md
T
2026-06-09 18:40:21 +02:00

158 lines
5.7 KiB
Markdown

---
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