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 :
sudo apt-get install curl openssh-server ca-certificates postfix
L'installation via le repos de Gitlab
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 :
nano /etc/gitlab/gitlab.rb
ou pour ceux qui préfère vi :
vi /etc/gitlab/gitlab.rb
Dans le fichier, le minimum à éditer (décommenter) :
# 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.
#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>
#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) :
git clone git@git.ikilote.net:groupe/project.git
Normalement devrait aussi fonctionner
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.
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) :
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.