Installation von GitLab auf Debian 9 (SSH) mit einem NGINX Reverse Proxy

Procédure

Benötigen Sie Gitlab, um Ihre Projekte zu verwalten? Erstelle deine eigene Instanz von GitLab auf deinem VPS, indem du diesem Tutorial folgst.

Git ist gut. Gitlab ist besser. Gitlab ist ein Open-Source-Git-Repository-Manager. Er wurde von GitLab Inc. entwickelt und bietet eine intuitive grafische Benutzeroberfläche, mit der Sie Ihre verschiedenen Projekte verwalten können und die gleichzeitig mit Git kompatibel ist. So können Sie Feature Requests (Funktionsanforderungen) erstellen, Bugs nachverfolgen, ... im Team und über einen Webbrowser.

Gitlab wird in verschiedenen Versionen angeboten, sowohl kostenpflichtig als auch kostenlos. Im folgenden Tutorial werden wir die GitLab Community Edition (Gitlab CE), die kostenlose Open-Source-Version von Gitlab, installieren .

Voraussetzungen

Um GitLab nutzen zu können, sollten Sie mindestens :

  • 2 vCores
  • 4 GB RAM.

Daher ist dasVPS M-Angebot aus der LWS Starter-Reihe für ein Gitlab mit wenigen Projekten gut geeignet. Wenn du jedoch mehrere Mitarbeiter und/oder mehrere Projekte zu betreuen hast, empfiehlt sich der VPS L oder einer der VPS aus der Pro-Reihe.

Für dieses Tutorial betrachten wir ein völlig jungfräuliches Betriebssystem aus dem Systemabbild Debian 9 + SSH, das auf LWS Panel angeboten wird. Hier sind die Links zu den anderen Tutorials für andere Betriebssysteme :

Wenn Sie das Betriebssystem Ihres VPS ändern möchten, finden Sie hier einen Link zur Hilfedokumentation: Wie ändere ich das Betriebssystem meines VPS?

Beachten Sie, dass dieses Tutorial auf einer VIERGEBIETLICHEN Installation von Debian 9 basiert. Wenn Sie bereits etwas darauf installiert haben, können wir nicht garantieren, dass das Tutorial effektiv ist und/oder dass alle Ihre anderen Dienste nach der Installation verfügbar sind.

Denken Sie daran, den SSH-Port auf der Firewall Ihres VPS zu aktivieren, damit Sie sich als Root auf der SSH-Konsole anmelden können.

Zusammenfassung des Tutorials

Dies sind die Schritte, die in diesem Tutorial behandelt werden:

  1. Aktualisierung des Betriebssystems
  2. Installation von Gitlab CE
  3. Einrichten eines NGINX-Reverse-Proxys vor Gitlab
  4. Einrichten eines Let's Encrypt SSL-Zertifikats auf dem NGINX Reverse Proxy.

Schritt 1: Aktualisieren Sie das Betriebssystem.

Bevor Sie etwas installieren, empfiehlt es sich, die Paketliste und die Pakete selbst zu aktualisieren.

Schreiben Sie auf Ihrer SSH-Konsole die folgenden Befehle:

apt-get update
apt-get upgrade -y
apt-get dist-upgrade -y

Schritt 2: Installation von Gitlab CE.

Zunächst installieren wir die erforderlichen Abhängigkeiten:

apt-get install -y curl openssh-server ca-certificates.

Als nächstes fügen wir das Gitlab-Repository zu Ihrem VPS hinzu :

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | bash

Nun installieren wir Gitlab :

EXTERNAL_URL="http://vpsXXXXX.lws-hosting.com" apt-get install gitlab-ee

Die Installation dauert mehrere Minuten, Sie können in der Zwischenzeit einen Kaffee trinken.

Tipp: Wenn Sie eine nicht sehr stabile Internetverbindung haben, können Sie screen einrichten, um sich bei einer ungeplanten Trennung der Verbindung wieder mit der Detachable-Konsole zu verbinden. Dokumentation zur Verwendung von screen.

Wenn die Installation abgeschlossen ist, rufen Sie http://vpsXXXXX.lws-hosting.com auf, um Gitlab zu konfigurieren.

Tipp: Wenn Sie einen Fehler 502 erhalten, versuchen Sie Gitlab mit dem Befehl gitlab-ctl restart neu zu starten und warten Sie dann 5 Minuten, bevor Sie es erneut versuchen(Strg+F5).

Wenn alles nach Plan läuft, werden Sie zu einer Seite weitergeleitet, auf der Sie Ihr Gitlab-Passwort erstellen können.

Installation von GitLab auf Debian 9 (SSH) mit einem NGINX Reverse Proxy

Geben Sie dann ein relativ komplexes Passwort an. Sie können auch ein Zufallspasswort generieren.

Wenn das erledigt ist, können Sie sich mit dem Benutzer root und dem von Ihnen angegebenen Passwort bei Gitlab anmelden.

Installation des NGINX-Reverse-Proxys

Nun werden wir einen Reverse Proxy mit NGINX einrichten. Damit können Sie in Zukunft weitere Websites und Anwendungen hosten, insbesondere wenn Sie sich für einen VPS-Server Cloud Pro S oder höher entschieden haben.

Der erste Schritt besteht darin, Gitlab auf einen nicht verwendeten Port zu verschieben. Für dieses Tutorial nehmen wir den Port 6080 (zufällig genommen).

Tipp: Du kannst die Liste der bereits verwendeten Ports mit dem Befehl netstat -tunap | grep LISTEN finden.

Bearbeiten Sie dazu die Datei /etc/gitlab/gitlab.rb mit nano (oder vim, oder einem anderen Editor) :

nano /etc/gitlab/gitlab.rb

Und editieren Sie den Wert von external_url, indem Sie den Port einbeziehen :

[...]
## GitLab URL
##! URL, unter der GitLab erreichbar sein wird.
##! Weitere Details zur Konfiguration von external_url finden Sie unter:
##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab
external_url'http://vpsXXXXX.lws-hosting.com:6080'
[...].

Ctrl+X, Y und dann Enter, um die Datei zu speichern und nano zu schließen(Esc und dann :wq für vim).

Um diese Konfiguration anzuwenden, müssen Sie den folgenden Befehl ausführen:

gitlab-ctl reconfigure.

Dies wird ein bis zwei Minuten dauern, bis Gitlab eine Synchronisation seiner Einstellungen mit den von Gitlab standardmäßig eingebetteten Anwendungen (NGINX, omnibus, ...) durchgeführt hat.

Derzeit ist Gitlab auf 6080. Nun muss NGINX eingerichtet werden. Die Installation von NGINX lässt sich mit den folgenden Befehlszeilen zusammenfassen:

apt-get install -y curl gnupg2 ca-certificates lsb-release
echo "deb http://nginx.org/packages/debian `lsb_release -cs` nginx" | tee /etc/apt/sources.list.d/nginx.list
curl -fsSL https://nginx.org/keys/nginx_signing.key | apt-key add -
apt-get update
apt-get install -y nginx.

Nun ist es an der Zeit, eine NGINX-Konfigurationsdatei für GitLab zu erstellen. Wir werden sie /etc/nginx/conf.d/000-gitlab.conf nennen. Erstellen wir diese Datei mit nano :

nano /etc/nginx/conf.d/000-gitlab.conf.

Als nächstes müssen wir einen neuen Block server{} erstellen und den Reverse Proxy durchführen. Hier ein Vorschlag für den Inhalt:

server {
listen 80;
server_name gitlab.example.com;

location / {
proxy_pass http://localhost:6080;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header X-Url-Scheme $scheme;
}
}

Tipp: Das Präfix "000-" ist erforderlich, damit die Datei vor default.conf geladen wird. Andernfalls überschreibt die Datei default.conf unsere Konfiguration.

Aktivieren Sie NGINX beim Start :

systemctl enable nginx

Starten Sie dann nginx mit folgendem Befehl neu:

systemctl restart nginx

Als nächstes müssen Sie gitlab.example.com auf Ihren VPS verweisen, indem Sie einen A-Eintrag zu Ihrer DNS-Zone hinzufügen. Wenn Ihr DNS auf dem LWS-Kundenbereich verwaltet wird, gehen Sie wie folgt vor:

Installation von GitLab auf Debian 9 (SSH) mit einem NGINX Reverse Proxy

Als nächstes konfigurieren wir Gitlab erneut so, dass es den X-Forwarded-For-Header akzeptiert, um die tatsächlichen IP-Adressen der Besucher zu ermitteln. Dies geschieht, indem wir die Datei /etc/gitlab/gitlab.rb editieren:

[...]
nginx['real_ip_header'] = 'X-Forwarded-For'
nginx['real_ip_recursive'] = 'on'
[...].

Dann führe eine erneute Synchronisation der Konfigurationen von Gitlab und seinen eingebetteten Diensten durch:

gitlab-ctl reconfigure

An diesem Punkt sollten Sie in der Lage sein, sich mit http://gitlab.exemple.com zu verbinden.

Einrichten eines Let's Encrypt SSL-Zertifikats auf NGINX

Wir werden nun unseren Zugang mit einem Let's Encrypt SSL-Zertifikat absichern. Zunächst installieren wir certbot :

apt-get install certbot -y

Als Nächstes richten wir einen Webroot ein, der für die Let's Encrypt-Authentifizierung vorgesehen ist. Dazu bearbeiten wir die Datei /etc/nginx/conf.d/000-gitlab.conf und fügen diese Zeilen nach dem Block location /:

[...]
location / {
proxy_pass http://localhost:6080;
[...]
}

location ^~ /.well-known/acme-challenge/ {
root /var/wwww/letsencrypt;
}

}

Erstellen Sie den Ordner :

mkdir -p /var/wwww/letsencrypt.

Und starten Sie NGINX neu :

systemctl restart nginx

Erstellen wir nun ein SSL-Zertifikat für gitlab.example.com:

certbot certonly --webroot -w /var/www/letsencrypt/ -d gitlab.example.com

Folgen Sie den Anweisungen auf dem Bildschirm :

  • Geben Sie Ihre E-Mail-Adresse an.
  • Lesen und akzeptieren Sie die Nutzungsbedingungen.
  • Melden Sie sich für den EFF-Newsletter an (oder auch nicht).

Anschließend bearbeiten wir erneut /etc/nginx/conf.d/000-gitlab.conf, um einen neuen Server über HTTPS/443 hinzuzufügen. Dann müssen wir die folgenden Zeilen am Ende der Datei hinzufügen:

[...]
server {
listen 443 ssl;
server_name gitlab.example.com;

ssl_certificate /etc/letsencrypt/live/gitlab.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/gitlab.example.com/privkey.pem;

location / {
proxy_pass http://localhost:6080;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header X-Url-Scheme $scheme;
}
}

Und starten Sie Ihren NGINX-Server neu :

systemctl restart nginx

So, jetzt haben Sie einen einsatzbereiten Gitlab-Server unter https://gitlab.exemple.com.

Diesen Artikel bewerten :

Dieser Artikel war hilfreich für Sie ?

Article utileJa

Article non utileNicht

Vous souhaitez nous laisser un commentaire concernant cet article ?

Si cela concerne une erreur dans la documentation ou un manque d'informations, n'hésitez pas à nous en faire part depuis le formulaire.

Pour toute question non liée à cette documentation ou problème technique sur l'un de vos services, contactez le support commercial ou le support technique

MerciMerci ! N'hésitez pas à poser des questions sur nos documentations si vous souhaitez plus d'informations et nous aider à les améliorer.


Vous avez noté 0 étoile(s)

Ähnliche Artikel


Stellen Sie eine Frage an das LWS-Team und seine Gemeinschaft