Installer Gitlab en 5 minutes avec Docker

Auto-hébergement

Le sujet du serveur git auto-hébergé me tient à coeur puisqu’il a été le sujet de nombreux articles sur la SheevaBoite. Ces articles commencent à dater d’autant plus que cela fait longtemps que j’utilise Gitlab pour mes dépôts personnels.

Comme je suis entrain de réinstaller mon serveur suite à un petit upgrade matériel, j’installe des containers Docker pour tous mes services et j’ai pensé que cela serai intéressant d’en faire un article sur Gitlab, puisque c’est simple, rapide et efficace.

1re minute : Installation du container

Je ne parle pas de l’installation de Docker, le site officiel explique tout cela en détail très bien.

Pour mon service Gitlab, on va utiliser l’image docker officielle de la Community Edition. Selon la doc, il faut créer 3 répertoires qui seront montés en tant que volume dans le container. Ainsi les données importantes du container seront isolés sur la machine hôte et facilement «backupables».

$> mkdir -p /data/gitlab/{config,data,logs}

Il suffit maintenant de lancer le container avec la commande :

$> sudo docker run --detach \
    --hostname gitlab.mon-domaine.fr \
    --publish 4433:443 --publish 8080:80 --publish 2222:22 \
    --name gitlab \
    --restart always \
    --volume /data/gitlab/config:/etc/gitlab \
    --volume /data/gitlab/logs:/var/log/gitlab \
    --volume /data/gitlab/data:/var/opt/gitlab \
    gitlab/gitlab-ce:latest

La commande semble compliquée mais en fait elle est vraiment simple :

Je n’utilise pas directement les ports 80, 443 et 22 puisque j’ai déjà des services qui tournent sur ces ports (et c’est probablement le cas pour vous aussi ! ).

Une fois que le container est démarré, vous pouvez vérifier qu’il est bien démarré avec la commande suivante :

$> docker ps -a
CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS              PORTS                                                                  NAMES
f8011b5157f9        gitlab/gitlab-ce:latest   "/assets/wrapper"        53 seconds          Up 53 seconds       0.0.0.0:8080->80/tcp, 0.0.0.0:4433->443/tcp, 0.0.0.0:2222->22/tcp      gitlab

Gitlab est accessible maintenant sur http://<MON-IP>:8080/ et vous pourrez vous connecter en SSH sur le port 2222 sur votre serveur.

2e minute : Configuration de Gitlab

L’installation de Gitlab est terminée mais il faut encore faire un peu de configuration.

Par défaut, un utilisateur root a été créé avec le mot de passe 5iveL!fe. Connectez-vous et vous devriez changer immédiatement le mot de passe de cet utilisateur. Profitez-en aussi pour changer le nom de l’utilisateur, ça permettra d’éviter le brute-force sur l’utilisateur root.

Ajoutez aussi votre clé privée à votre compte afin de pouvoir communiquer avec le serveur en SSH et créer un dépôt de test, par exemple «dummy_repo».

3e minute : Configuration de votre machine

Sur votre machine, il faut faire un peu de config aussi, afin de justement se connecter en SSH. Editez le fichier ~/.ssh/config et ajoutez les lignes :

Host mon-domaine.fr
   Port 2222
   Identityfile <PATH_VERS_MA_CLE_PRIVE>

Dorénavant, vous devriez pouvoir cloner le projet que vous avez créé :

$> git clone git@<VOTRE_IP>:<VOTRE_USER>/dummy_repo.git

4e minute : Création d’un proxy

Le serveur Gitlab opérationnel en moins de 5 minutes… Mais si vous vous souvenez lors du démarrage du container, on avait un paramètre hostname, si on veut pouvoir accéder à notre serveur via cette url, il faut installer un petit proxy. Installez nginx si ce n’est pas déjà fait et ajouter un vhost avec la configuration suivante :

server {
  listen 80;
  server_name gitlab.mon-domaine.fr;

  location / {
    proxy_pass https://0.0.0.0:8080;
    proxy_set_header        X-Real-IP  $remote_addr;
  }

}

Redémarrer votre instance nginx et vous pouvez accéder maintenant à votre service Gitlab via l’url mon-domaine.fr, ce qui est tout de même plus pratique que via l’adresse IP.

5e minute : Enjoy !

Voilà comment installer rapidement une instance Gitlab, je n’ai pas besoin d’envoyer des mails donc le sujet de la configuration SMTP n’a pas été abordé, mais si cela est important pour vous, tout se trouve dans le fichier : /data/gitlab/config/gitlab.rb.

Pour finir, Gitlab a ses défauts, il est un peu lourd (comptez 1,33Go pour l’image de base) et il demande de la puissance pour fonctionner, mais avec Docker il n’est plus du tout compliqué à installer. Avant que les package omnibus existe l’installation de Gitlab était bien compliqué mais avec Docker c’est une question de quelques minutes…

Profitez-en pour l’essayer et l’adopter si ce n’est pas déjà fait…

Partager