de DevOps Software Gitlab

Gitlab auf ubuntu installieren

Wir möchten hier ein Gitlab Server aufsetzen, dafür setzen wir einfach mal ein Server voraus, der Pakete aus dem Internet ziehen kann. Der Server läuft auf Ubuntu 22.04 und hat noch nichts installiert. Wir befinden uns also in der Phase nach der Netzwerkkonfiguration und starten nun mit einer Aktualisierung unseres Systems mittels:

1apt update && apt upgrade -y && apt dist-upgrade -y 

Damit kriegen wir alle vorhandenen Pakete auf die aktuellste Version aktualisiert und können uns nun um das Gitlab Paket kümmern.

Installation des Pakets

Um das Paket von Gitlab via apt installieren zu können, müssen wir zuerst die Abhängigkeiten installieren, die wir benötigen um die Quelle für apt hinzuzufügen.

1sudo apt-get install -y curl openssh-server ca-certificates tzdata perl
2
3# for mailing you need to install this too
4sudo apt-get install -y postfix

hinzufügen der Abhängigkeiten

Jetzt können wir das Script, welches direkt von Gitlab kommt ausführen um gitlabs Pakete hinzufügen.

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

Wenn das durchgelaufen ist sollte es ungefähr so aussehen:

 1Detected operating system as Ubuntu/jammy.
 2Checking for curl...
 3Detected curl...
 4Checking for gpg...
 5Detected gpg...
 6Running apt-get update... done.
 7Installing apt-transport-https... done.
 8Installing /etc/apt/sources.list.d/gitlab_gitlab-ce.list...done.
 9Importing packagecloud gpg key... done.
10Running apt-get update... done.

Installiert wird Gitlab-ce dann nun mittels apt. Wir konfigurieren also mittels einer Variablen die URL auf die unser Gitlab hören soll und installieren es anschließend:

1sudo EXTERNAL_URL="https://gitlab.fritz.box" apt-get install gitlab-ce

Danach steht Gitlab nach einer weile zur Verfügung auf unserer URL oder aber natürlich über die IP-Adresse von unserem Server. Es kann dabei auch gut sein, dass der Vorgang 10 Minuten benötigt. Die Zeit ist abhängig von der Stärke unseres Servers.

Wichtig Gitlab steht auch zur Verfügung, wenn lets encrypt fehltschlägt. Der Fehlschlag sieht so aus

1[2024-03-13T12:06:49+00:00] FATAL: RuntimeError: letsencrypt_certificate[gitlab.fritz.box] (letsencrypt::http_authorization line 6) had an error: RuntimeError: acme_certificate[staging] (letsencrypt::http_authorization line 43) had an error: RuntimeError: ruby_block[create certificate for gitlab.fritz.box] (letsencrypt::http_authorization line 110) had an error: RuntimeError: [gitlab.fritz.box] Validation failed, unable to request certificate, Errors: [{url: https://acme-staging-v02.api.letsencrypt.org/acme/chall-v3/11642353554/bnjxtQ, status: invalid, error: {"type"=>"urn:ietf:params:acme:error:connection", "detail"=>"2001:19f0:6c00:1b0e:5400:4ff:fecd:7828: Fetching http://gitlab.fritz.box/.well-known/acme-challenge/hKCKYfkPdBKYBkGehx_I1eBK3HyNnNIPM0Ht6GxYMWM: Connection reset by peer", "status"=>400}} ]
2dpkg: Fehler beim Bearbeiten des Paketes gitlab-ce (--configure):
3 »installiertes gitlab-ce-Skript des Paketes post-installation«-Unterprozess gab den Fehlerwert 1 zurück
4Fehler traten auf beim Bearbeiten von:
5 gitlab-ce
6needrestart is being skipped since dpkg has failed
7E: Sub-process /usr/bin/dpkg returned an error code (1)

Fehlschlag von einem Zertifikat. Es wird dann mit einem selbstsignierten weitergemacht

Anmeldung

Angemeldet werden kann man sich nun mit dem User root und mit dem Passwort, welches unter /etc/gitlab/initial_root_password aufgerufen werden kann. Wichtig ist dabei allerdings, dass diese Datei nach 24 Stunden gelöscht wird. Man speichert sich also das Passwort für den Root User irgendwo ab oder ändert es auf ein anderes.

Status Prüfen

Der Status von gitlab kann mittels der CLI gitlab-ctl kontrolliert werden. Das Argument für den Status ist auch einfach status womit der komplette Befehl wie folgt aussieht:

1gitlab-ctl status

Hierbei dann sollte dann im idealfall folgendes bei raus kommen

 1root@gitlab:~# gitlab-ctl status
 2run: crond: (pid 13865) 605s; run: log: (pid 13877) 602s
 3run: gitaly: (pid 14263) 494s; run: log: (pid 13583) 708s
 4run: gitlab-kas: (pid 13802) 687s; run: log: (pid 13820) 684s
 5run: gitlab-workhorse: (pid 14183) 512s; run: log: (pid 13947) 584s
 6run: logrotate: (pid 13504) 723s; run: log: (pid 13513) 719s
 7run: nginx: (pid 14193) 511s; run: log: (pid 13984) 579s
 8run: postgresql: (pid 13632) 694s; run: log: (pid 13647) 692s
 9run: puma: (pid 13880) 599s; run: log: (pid 13889) 596s
10run: redis: (pid 13540) 717s; run: log: (pid 13559) 714s
11run: registry: (pid 14202) 511s; run: log: (pid 14074) 556s
12run: sidekiq: (pid 13899) 593s; run: log: (pid 13924) 590s