HowTo: Gitlab hinter Apache2 + SSL (https)
Um Gitlab hinter Apache2 als Reverse Proxy zu verwenden, folge einfach diesem kleinen How-To. In unserem Beispiel haben wir Debian Jessie verwendet, es sollte aber auch mit anderen Distributionen wie Ubuntu problemlos klappen. Vergiss nicht die Platzhalter mit deinen eigenen Werten zu ersetzen!
Gitlab installieren
Als erstes benötigen wir ein installiertes Gitlab. Folge hierfür einfach der Anleitung, welche du auf der offiziellen Seite von gitlab findest.
Gitlab rekonfigurieren
Wir benötigen Gitlab als lokalen Webserver, welcher über einen freien Port lauscht (z.B. 8888). Füge einfach folgende Zeilen in die /etc/gitlab/gitlab.rb ein:
external_url 'https://{example.tld}' nginx['listen_address'] = 'localhost' nginx['listen_port'] = 8888 nginx['listen_https'] = false
Als nächstes führe das Rekonfigurationsskript aus:
gitlab-ctl reconfigure
Apache2 konfigurieren
Für unser HowTo benötigen wir einen vorkonfigurierten Apache2-Webserver, welcher SSL-Support und auf Port 443 (Standard https-Port) horcht. Wenn du nicht weißt, wie das geht, suche einfach im Web.
Seitenkonfigurationsdateien erstellen
Konfigurationsdatei für http
Als erstes möchten wir alle http-Anfragen auf https weiterleiten. Erstelle hierfür einfach eine Konfigurationsdatei in folgendem Verzeichnis: /etc/apache2/sites-availabe/{example.tld}.conf
<VirtualHost {yourip}:80> ServerName {example.tld} ServerAdmin {mail@example.tld} ErrorLog /var/log/apache2/{example.tld}/error.log Redirect 301 / https://{example.tld}/ </VirtualHost>
Nun aktivieren wir die Konfigurationsdatei:
a2ensite {example.tld}
Konfigurationsdatei für https
Als nächstes die Hauptdatei, welche einen Reverse Proxy zur lokalen Gitlab Instanz aufsetzt. Erstelle hierfür einfach eine Konfigurationsdatei in folgendem Verzeichnis: /etc/apache2/sites-availabe/{example.tld}_ssl.conf
<VirtualHost {yourip}:443> ServerName {example.tld} ServerAdmin {mail@example.tld} ErrorLog /var/log/apache2/{example.tld}/error.log RequestHeader set Host "{example.tld}" RequestHeader add X-Forwarded-Ssl on RequestHeader set X-Forwarded-For %<span class="pl-s1"><span class="pl-pse">{</span>REMOTE_ADDR<span class="pl-pse">}</span></span>e RequestHeader set X-Forwarded-Proto "https" ProxyPreserveHost On ProxyPass / http://localhost:8888/ ProxyPassReverse / http://localhost:8888/ SSLEngine On SSLCertificateFile /etc/gitlab/ssl/{example.tld}.pem SSLCertificateChainFile /etc/gitlab/ssl/{example.tld}.pem </VirtualHost>
Nun aktivieren wir die Konfigurationsdatei:
a2ensite {example.tld}_ssl
Und ebenso das benötigte headers Modul:
a2enmod headers
Zertifikat hinzufügen
Vergiss nicht dein Zertifikat zum oben konfigurierten Pfad zu kopieren. In unserem Beispiel müsste das Zertifikat unter: /etc/gitlab/ssl/{example.tld}.pem liegen. Das Zertifikat müsste den entschlüsselten privaten Schlüssel, öffentlichen Schlüssel und Zwischenzertifikat beinhalten. Wenn du nicht weißt, wie man eine .pem-Datei erstellt oder ein Zertifikat bekommt, stöbere einfach im Internet rum.
Zuletzt laden wir Apache2 neu (ein Neustart des Dienstes wäre ebenso möglich):
service apache2 reload
Du kannst Gitlab auch ohne SSL-Support laufen lassen. Da es nicht empfohlen ist, werde ich nicht genauer darauf eingehen. Wenn du weißt, was du tust, ist es sehr einfach einen Reverse Proxy ohne SSL (https) zu konfigurieren.