Techno-magis

Installation de Gitlab avec Ubuntu Server/Apache 2

Vendredi 15 Juillet 2016

Je ne prétends pas que ça soit l'installation parfaite, mais ayant un peu galéré à faire marcher le tout, ça me sert surtout de mémo. Si vous avez mieux à proposer, un commentaire sera le bienvenu.

Les prérequis :

CODE :

sudo apt-get install curl openssh-server ca-certificates postfix

L'installation via le repos de Gitlab

CODE :

curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
sudo apt-get install gitlab-ce
gitlab-ctl reconfigure

Pour changer un peu la conf :

CODE :

nano /etc/gitlab/gitlab.rb

ou pour ceux qui préfère vi :

CODE :

vi /etc/gitlab/gitlab.rb

Dans le fichier, le minimum à éditer (décommenter) :

CODE :

 
# l'URL qui servira de référence pour les liens
external_url 'http://git.domaine.com'
 
# il faut autoriser à ce qu'Apache prenne la main
web_server['external_users'] = ['www-data']
 
# on désactive nginx (sinon ça fout la merde, il peut prendre le dessus sur Apache et lui piquer le port 80)
nginx['enable'] = false
 
# on passe sur le serveur workhorse (Unicorn merde complet, ne pas l'utiliser)
gitlab_workhorse['listen_network'] = "tcp"
gitlab_workhorse['listen_addr'] = "localhost:8181"
 
# facultatif : bonus piwik
gitlab_rails['extra_piwik_url'] = 'stats.domaine.com'
gitlab_rails['extra_piwik_site_id'] = 'id'
 
# facultatif : par défaut à 25, mais ça peut-être trop pour un petit serveur, je l'ai réduit à 10
sidekiq['concurrency'] = 10
 

Pour la suite, je pars du principe que vous avez un minimum manipuler la conf Apache et les VirtualHost.

L'idée maintenant c'est de récupérer le 8080 et le rediriger vers un VirtualHost d'Apache. Pour cela on passe par le ProxyPass et ProxyPassReverse. On ajout un peu RewriteRule pour permettre au lien .git de fonctionner. Changer git.domaine.com.conf par le votre.

Note : pour la partie HTTPS, c'est un truc un peu bancal. Pas moyen de faire générer correctement mon certificat Let's Encrypt. Si quelqu'un a le truc ? Il ne me génère jamais le fichier git.domaine.com-le-ssl.conf que j'ai donc écrit moi même.

CODE :

#Pour HTTP (git.domaine.com.conf), redirection vers HTTPS :
 
<VirtualHost *:80>
    ServerName git.domaine.com
 
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>
 
CODE :

 
#Pour HTTPS (git.domaine.com-le-ssl.conf):
<IfModule mod_ssl.c>
 
<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/git.domaine.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/git.domaine.com/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf
 
    ServerName git.domaine.com
 
 
    RewriteEngine On
    RewriteRule ^(.+\.git)\/+$ $1 [R=301,L]
 
    ProxyPass        /  http://localhost:8181/
    ProxyPassReverse /  http://localhost:8181/
 
    DocumentRoot /opt/gitlab/embedded/service/gitlab-rails/public
 
    #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 502 /502.html
    ErrorDocument 503 /503.html
 
    # Custom log file locations
    ErrorLog /var/log/apache2/gitlab_error.log
    CustomLog /var/log/apache2/gitlab_access.log combined
</VirtualHost>
 
</IfModule>
 

Ensuite, je vous conseille de passer par SSH (plus secure) :

CODE :

git clone git@git.ikilote.net:groupe/project.git

Normalement devrait aussi fonctionner

CODE :

git clone http://git.ikilote.net/groupe/project.git

Le seul souci pour SSH, c'est qu'il faut impérativement un compte et entrer une clef SSH.

CODE :

cat ~/.ssh/id_rsa.pub

Si vous n'en avez pas généré, remplacer user@domain.com par votre email. (Note : n'entrez pas de passphase à moins que vous vouliez la rentrer à chaque pull ou push) :

CODE :

ssh-keygen -t rsa -C "user@domain.com"
cat ~/.ssh/id_rsa.pub 

Ce n'est pas parfait, mais ça cohabite assez bien avec mon serveur LAMP.

Édit 21/10/2016 : mise à jour pour corriger tous les problèmes en HTTPS, par contre ça merde en HTTP du coup je redirige automatique vers HTTPS.

Catégories :
Par Zéfling, le 15/07/2016 à 00:36:44
Le billet a été lue 557 fois, avec 1 commentaire publié.
👍 0 👎 0

1 commentaire déposé

Par Zéfling, le 12/04/2022 à 23:29:35
Avatar
Webmaster

Pour régler les problèmes WebIDE, une config Apache plus robuste :

CODE :

<IfModule mod_ssl.c>
 
<VirtualHost *:443>
    SSLEngine on
    Include /etc/letsencrypt/options-ssl-apache.conf
 
    ServerName git.domaine.com
 
    ProxyPass / http://localhost:8181/
    ProxyPassReverse / http://localhost:8181/
 
    RewriteEngine        On
 
    #Don't escape encoded characters in api requests
    RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
    RewriteRule .* http://127.0.0.1:8181%{REQUEST_URI} [P,QSA,NE]
 
    DocumentRoot /opt/gitlab/embedded/service/gitlab-rails/public
 
    #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 502 /502.html
    ErrorDocument 503 /503.html
 
    # Custom log file locations
    ErrorLog /var/log/apache2/gitlab_error.log
    CustomLog /var/log/apache2/gitlab_access.log combined
 
 
    ProxyRequests Off
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
 
    SSLProxyEngine on
    SSLProxyVerify none
    SSLProxyCheckPeerCN off
    SSLProxyCheckPeerName off
    SSLProxyCheckPeerExpire off
    ProxyRequests Off
 
    <Location />
        Order allow,deny
        Allow from all
    </Location>
 
    Header edit Location ^http://git.domaine.com/ https://git.domaine.com/
    AllowEncodedSlashes NoDecode
    RequestHeader set X-Forwarded-Proto "https"
 
    Include /etc/letsencrypt/options-ssl-apache.conf
    SSLCertificateFile /etc/letsencrypt/live/git.domaine.com-0001/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/git.domaine.com-0001/privkey.pem
</VirtualHost>
 
</IfModule>
 

L'homme est le plus inhumain des animaux.

Écrire un commentaire