Juste après l’installation, GitLab est en état “ouvert” : n’importe qui peut créer un compte, les emails ne partent pas, et aucune sauvegarde n’est planifiée.
Cette page couvre les réglages à faire en priorité avant de donner accès à votre équipe : SMTP, sécurité des comptes, SSH, et sauvegardes.
Tous ces paramètres se configurent dans un seul fichier : /etc/gitlab/gitlab.rb.
Le fichier de configuration gitlab.rb
Section intitulée « Le fichier de configuration gitlab.rb »Tout GitLab self-managed se configure dans /etc/gitlab/gitlab.rb.
C’est un fichier Ruby où chaque paramètre est une ligne de la forme cle['valeur'] = ....
# Ouvrir la configurationsudo nano /etc/gitlab/gitlab.rb
# Appliquer les changements (obligatoire après chaque modification)sudo gitlab-ctl reconfigureLe fichier /etc/gitlab/gitlab.rb fait ~3000 lignes en incluant tous les commentaires.
La grande majorité des lignes est commentée — vous ne modifiez que ce dont vous avez besoin.
Configurer l’envoi d’emails (SMTP)
Section intitulée « Configurer l’envoi d’emails (SMTP) »Sans SMTP, GitLab ne peut pas envoyer de notifications, d’invitations ou de liens de mot de passe oublié.
gitlab_rails['smtp_enable'] = truegitlab_rails['smtp_address'] = "smtp.gmail.com"gitlab_rails['smtp_port'] = 587gitlab_rails['smtp_user_name'] = "votre-email@gmail.com"gitlab_rails['smtp_password'] = "votre-mot-de-passe-app"gitlab_rails['smtp_domain'] = "gmail.com"gitlab_rails['smtp_authentication'] = "login"gitlab_rails['smtp_enable_starttls_auto'] = truegitlab_rails['smtp_tls'] = false
# Adresse expéditeur des emails GitLabgitlab_rails['gitlab_email_from'] = 'gitlab@votrdomaine.com'gitlab_rails['gitlab_email_reply_to'] = 'noreply@votredomaine.com'# Utiliser le MTA local (Postfix doit être configuré)gitlab_rails['smtp_enable'] = false# GitLab utilise sendmail en fallback → Postfix localSi Postfix est installé sur le serveur, GitLab l’utilise automatiquement. Vérifiez que Postfix fonctionne :
echo "Test" | mail -s "Test GitLab" votre@email.comPour un lab sans besoin d’emails :
gitlab_rails['smtp_enable'] = falseLes notifications seront désactivées — acceptable pour un lab.
Vérifier que les emails partent :
# Depuis le serveur, via la console Railssudo gitlab-rails console
# Puis dans la console Rails :Notify.test_email('destinataire@test.com', 'Test GitLab', 'Contenu test').deliver_nowRésultat attendu (aucune erreur) :
Sent mail to destinataire@test.com (1234.5ms)Tapez exit pour quitter la console.
Désactiver les inscriptions publiques
Section intitulée « Désactiver les inscriptions publiques »Par défaut, GitLab autorise n’importe qui à créer un compte. À désactiver en production.
- Connectez-vous en tant qu’administrateur
- Admin Area → Settings → General
- Déroulez Sign-up restrictions
- Décochez Sign-up enabled
- Cliquez Save changes
gitlab_rails['gitlab_signup_enabled'] = falsePuis appliquer :
sudo gitlab-ctl reconfigureConfigurer le port SSH GitLab
Section intitulée « Configurer le port SSH GitLab »Par défaut, GitLab utilise le port 22 pour les clones SSH — le même que votre serveur SSH. Sur un serveur qui a également SSH pour l’administration, c’est un conflit.
Trois approches selon votre situation :
| Approche | SSH admin | SSH Git | Quand utiliser |
|---|---|---|---|
| Port SSH distinct | 22 | 2222 | Serveur admin + GitLab sur même IP |
| URL SSH distincte | domaine:22 | git.domaine:22 | Reverse proxy / DNS séparé |
| Garder port 22 | ≠ port (ex: 2222) | 22 | GitLab est la fonction principale |
Pour utiliser un port SSH différent pour GitLab (ex: 2222) :
gitlab_rails['gitlab_shell_ssh_port'] = 2222Après gitlab-ctl reconfigure, les URLs de clone s’afficheront avec :2222.
Configurer les sauvegardes automatiques
Section intitulée « Configurer les sauvegardes automatiques »GitLab n’a pas de sauvegarde automatique par défaut. Configuration recommandée :
Paramètres de sauvegarde dans gitlab.rb
Section intitulée « Paramètres de sauvegarde dans gitlab.rb »# Dossier de destination des sauvegardesgitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
# Durée de conservation (en secondes) — ici 7 joursgitlab_rails['backup_keep_time'] = 604800
# Exclure certains éléments lourds si besoin# gitlab_rails['env'] = { "SKIP" => "builds,artifacts" }Planifier les sauvegardes avec cron
Section intitulée « Planifier les sauvegardes avec cron »# Éditer le crontab de rootsudo crontab -eAjouter une ligne pour une sauvegarde quotidienne à 2h du matin :
0 2 * * * /opt/gitlab/bin/gitlab-backup create CRON=1 >> /var/log/gitlab-backup.log 2>&1Le paramètre CRON=1 supprime les messages informatifs et ne garde que les erreurs dans les logs.
Lancer une sauvegarde manuelle
Section intitulée « Lancer une sauvegarde manuelle »sudo gitlab-backup createRésultat attendu :
2026-03-28 10:15:30 +0000 -- Dumping database ...2026-03-28 10:15:45 +0000 -- Dumping database ... done2026-03-28 10:15:45 +0000 -- Dumping repositories ......2026-03-28 10:16:30 +0000 -- Creating backup archive: 1743157890_2026_03_28_18.10.1_gitlab_backup.tar ...2026-03-28 10:16:35 +0000 -- Backup 1743157890_2026_03_28_18.10.1 is done.Le fichier est créé dans /var/opt/gitlab/backups/.
Autres paramètres recommandés
Section intitulée « Autres paramètres recommandés »Limiter la taille des dépôts et des transferts
Section intitulée « Limiter la taille des dépôts et des transferts »# Taille max d'importation de projet (Mo) — défaut illimitégitlab_rails['max_attachment_size'] = 25
# Limite de profondeur du fetch initial (performances réseau)# gitlab_rails['gitlab_default_projects_features_builds'] = trueActiver HTTPS (production)
Section intitulée « Activer HTTPS (production) »Si vous avez un nom de domaine avec DNS public :
# Let's Encrypt automatiqueexternal_url 'https://gitlab.monentreprise.com'letsencrypt['enable'] = trueletsencrypt['contact_emails'] = ['admin@monentreprise.com']GitLab demande et renouvelle le certificat automatiquement.
Pour un certificat existant (ex: wildcard) :
external_url 'https://gitlab.monentreprise.com'nginx['ssl_certificate'] = "/etc/ssl/certs/gitlab.crt"nginx['ssl_certificate_key'] = "/etc/ssl/private/gitlab.key"Désactiver Prometheus si ressources limitées
Section intitulée « Désactiver Prometheus si ressources limitées »Prometheus consomme ~200-400 Mo de RAM. Sur un lab avec contraintes :
prometheus_monitoring['enable'] = falseCela désactive aussi Alertmanager, Node Exporter et les exporteurs associés.
Vérification complète
Section intitulée « Vérification complète »Après toutes vos modifications et un gitlab-ctl reconfigure, validez :
# Tous les services actifssudo gitlab-ctl status
# Diagnostic completsudo gitlab-rake gitlab:check SANITIZE=true
# Envoyer un email de test (remplacer l'adresse)sudo gitlab-rails runner "Notify.test_email('test@example.com', 'Test', 'OK').deliver_now"À retenir
Section intitulée « À retenir »- Tout se configure dans
/etc/gitlab/gitlab.rb— modifiez, puissudo gitlab-ctl reconfigure. - SMTP est indispensable en production : sans lui, les notifications et les réinitialisations de mot de passe ne fonctionnent pas.
- Désactiver les inscriptions publiques dès que GitLab n’est pas accessible uniquement à votre équipe.
- Sauvegarder
/etc/gitlab/gitlab-secrets.jsonhors du serveur — sans ce fichier, la restauration est impossible. - Groupez vos modifications dans
gitlab.rbavant de lancer un seulreconfigurepour économiser du temps. gitlab-ctl tailen parallèle lors d’unreconfigureaide à diagnostiquer les problèmes en temps réel.