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@votredomaine.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 ci-dessous ; la stratégie complète (stockage objet, restauration testée) est détaillée dans Sauvegarder et restaurer GitLab :
Paramètres de sauvegarde dans gitlab.rb
Section intitulée « Paramètres de sauvegarde dans gitlab.rb »Deux réglages décident de l'essentiel : le dossier de destination des archives et leur durée de conservation, au-delà de laquelle gitlab-backup create supprime les plus anciennes. Gardez le dossier sur un disque distinct de celui des données, sinon une panne disque emporte l'instance et ses sauvegardes.
# 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 17:39:09 UTC -- Dumping database ...2026-03-28 17:39:10 UTC -- Dumping database ... done2026-03-28 17:39:10 UTC -- Dumping repositories ......2026-03-28 17:39:11 UTC -- Creating backup archive: 1774719549_2026_03_28_18.10.1_gitlab_backup.tar ... done2026-03-28 17:39:11 UTC -- Backup 1774719549_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 »Une instance qui démarre n'est pas encore une instance prête pour la production. Trois réglages de /etc/gitlab/gitlab.rb reviennent presque toujours : limiter la taille des transferts, servir l'interface en HTTPS, et couper la supervision intégrée quand la machine manque de mémoire. Les deux derniers ne prennent effet qu'après sudo gitlab-ctl reconfigure ; le premier se règle hors de gitlab.rb, comme l'explique son paragraphe.
Limiter la taille des dépôts et des transferts
Section intitulée « Limiter la taille des dépôts et des transferts »Une pièce jointe déposée dans une issue ou une merge request est stockée sur le disque de l'instance. Plafonner sa taille évite qu'un fichier volumineux remplisse le volume des données. Ce plafond ne se règle pas dans gitlab.rb : c'est un réglage de l'application, stocké en base. Il se change dans l'interface, sous Admin > Settings > General > Account and limit, champ Maximum attachment size (MiB), ou par l'API application/settings. Le push maximal (Maximum push size) et la taille d'un dépôt (Size limit per repository, réservée aux éditions Premium et Ultimate) se règlent au même endroit, dans l'interface.
# Taille maximale d'une pièce jointe : 25 Mo (jeton d'un administrateur)curl --request PUT --header "PRIVATE-TOKEN: <jeton-administrateur>" \ "https://gitlab.monentreprise.com/api/v4/application/settings?max_attachment_size=25"La réponse JSON contient "max_attachment_size": 25 quand le changement est pris en compte, sans reconfigure. Si vous fixez une valeur supérieure à celle du serveur web, les envois échouent en erreur 413 ; sur une installation par paquet Linux, on relève alors nginx['client_max_body_size'] dans /etc/gitlab/gitlab.rb.
Activer 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"Une fois ces vérifications au vert, l'instance est prête à recevoir ses premiers projets. Pour exécuter des pipelines, ajoutez un runner en suivant Maîtriser GitLab Runner. Chaque nouvelle version de GitLab est ensuite appliquée par la procédure de mise à jour, toujours précédée d'une sauvegarde et d'un nouveau gitlab-ctl status.
À 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.