Aller au contenu

Serveur Gitlab (Raspberry Pi)⚓︎

Mise en place d'un serveur Gitlab sur Raspberry Pi.

Documentation

Tutoriel basé sur celui-ci :

Running on a Raspberry Pi

(en fait c'est simplement une synthèse donc un copier coller du tutoriel, mais bien pratique pour retrouver les commandes effectuées).

Pour la configuration d'Apache de gitlab, vous pouvez aussi trouver des informations là :

How To Install and Configure Gitlab and Website on Apache Server in your VPS

01 - Installation et Configuration⚓︎

Premièrement, mettez à jour votre système (cf. mises à jour).

01.1 - L'espace SWAP⚓︎

Mettre l'espace SWAP à 4Go.

1
2
sudo dphys-swapfile swapoff
sudo nano /etc/dphys-swapfile

Dans le fichier modifiez ou ajoutez les lignes suivantes :

1
2
CONF_SWAPSIZE=4096
CONF_MAXSWAP=4096

Puis faites :

1
2
sudo dphys-swapfile setup
sudo dphys-swapfile swapon

01.2 - Installation des dépendances⚓︎

1
2
sudo apt-get install curl openssh-server ca-certificates apt-transport-https perl
curl https://packages.gitlab.com/gpg.key | sudo apt-key add -

Choisir l’option « Site internet » si demandé.

Installer Postfix (pour la gestion des mails) :

1
sudo apt-get install -y postfix

01.3 - Ajout du répertoire et installation de Gitlab⚓︎

1
sudo curl -sS https://packages.gitlab.com/install/repositories/gitlab/raspberry-pi2/script.deb.sh | sudo bash

Ensuite lancez l'installation en précisant votre nom de domaine ou sous-domaine à la place de gitlab.votredomaine.fr :

1
sudo EXTERNAL_URL="https://gitlab.votredomaine.fr" apt-get install gitlab-ce

Tip

Vous pouvez mettre http:// à la place de https:// pour une configuration avec apache

02 - Bugs⚓︎

02.1 - Ruby_block⚓︎

Lors du lancement de l'installation, si le téléchargement est trop long et qu'il est bloqué sur la ligne suivante :

1
* ruby_block[wait for redis service socket] action run

Vous pouvez exécuter la commande suivante dans un autre terminal pour débloquer le téléchargement (cf. résolution du problème ici) :

1
sudo /opt/gitlab/embedded/bin/runsvdir-start &

02.2 - Accès git clone en HTTP.S⚓︎

Caution

Après installation, il peut subvenir une erreur 500 lors d'un git clone. Je n'ai pas trouvé de solutions donc j'utilise la connexion en SSH (avec clé) qui fonctionne parfaitement.

03 - Optimisations pour la Raspi⚓︎

Allez dans le fichier de configuration :

1
sudo nano /etc/gitlab/gitlab.rb

Puis faites les modifications suivantes :

1
2
3
4
5
# Reduce the number of running workers to the minimum in order to reduce memory usage
puma['worker_processes'] = 2
sidekiq['concurrency'] = 9
# Turn off monitoring to reduce idle cpu and disk usage
prometheus_monitoring['enable'] = false

Appliquez les changements :

1
2
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

04 - Configurer le serveur pour Apache⚓︎

  1. Désactivez NGinx dans le fichier de configuration
1
sudo nano /etc/gitlab/gitlab.rb
1
2
web_server['external_users'] = ['www-data']
nginx['enable'] = false
  1. Créez un fichier Apache 'gitlab.conf' (cf. Configuration Apache)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<VirtualHost *:80>
    ServerName gitlab.votredomaine.fr

    DocumentRoot /opt/gitlab/embedded/service/gitlab-rails/public

    ServerSignature Off

    ProxyPreserveHost On
    AllowEncodedSlashes NoDecode

    <Location />
        Require all granted

        ProxyPassReverse http://127.0.0.1:8080
        ProxyPassReverse gitlab.votredomaine.fr
    </Location>

    RewriteEngine on
    # RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
    # RewriteRule .* http://127.0.0.1:8080%{REQUEST_URI} [P,QSA]

    #Set up apache error documents, if back end goes down (i.e. 503 error) then a maintenance/deploy page is thrown up.
    ErrorDocument 404 /404.html
    ErrorDocument 422 /422.html
    ErrorDocument 500 /500.html
    ErrorDocument 503 /deploy.html

    CustomLog /var/log/apache2/gitlab.access.log "combined"
    ErrorLog /var/log/apache2/gitlab.error.log
</VirtualHost>

05 - Connexion à Gitlab avec Git⚓︎

Définir les variables globales avec les commandes suivantes :

1
2
3
4
git config --global user.name [votreNom]
git config --global user.email [votreMail]
git config --global core.autocrlf input
git config --global core.eol lf

Ensuite pour faire un git clone vous pouvez utiliser plusieurs moyens présentés ici. Ici nous allons utiliser la connexion par SSH. Pour cela, vous devez :

  • Créer une clé SSH sur votre machine
  • L'ajouter sur le Gitlab dans vos compte
  • Exécuter le git clone

05.1 - Créer une clé SSH⚓︎

Pour générer une clé SSH vous dever exécuter la commande suivante (Cf. cette documentation) :

1
ssh-keygen -t ed25519 -C "Titre de votre clé"

Validez toutes les questions en faisant entrée (Ne rien mettre si vous ne savez pas quoi mettre).

Pour la suite vous aurez besoin de récupérer la clé public que vous pouvez récupérer à l'adresse indiquée lors de la création de la clé (elle sera de forme : ~/.ssh/id_ed25519.pub).

05.2 - Configuration de Gitlab pour SSH⚓︎

  • Clickez sur votre profil
  • Edit profile
  • Dans le menu latéral gauche : SSH Keys
  • Collez la clé dans le champs de text
  • Ajoutez votre clé en validant

Vous n'avez plus qu'à exécuter le git clone :

1
git clone ssh://git@gitlab.votredomaine.fr:1111/chemin/vers/repertoire.git

Ensuite, pour les commandes globales Git, vous pourrez trouver de la documentation ici.

06 - Exemple de configuration Gitlab complète⚓︎

1
sudo nano /etc/gitlab/gitlab.rb
1
2
3
4
5
6
7
external_url 'http://gitlab.votredomaine.fr'

puma['worker_processes'] = 2
sidekiq['concurrency'] = 9
web_server['external_users'] = ['www-data']
nginx['enable'] = false
prometheus_monitoring['enable'] = false

07 - Sources⚓︎