EUR
european

EUR

usa

USD

Ex. VAT Ex. VAT 0%

GitLab auf Dedicated Server installieren

GitLab ist eine Plattform für Git-Repositories, Code-Review, Issue-Tracking und CI/CD, die Sie auf Ihrem eigenen Server betreiben können. Eine selbst gehostete Instanz hält Ihren Quellcode unter Ihrer Kontrolle, und ihre Kapazität hängt nur von den Serverressourcen und den genutzten GitLab-Funktionen ab.

Ein Dedicated Server eignet sich gut für GitLab. Die Repository-Speicherung beansprucht die Festplatten stark, und die Datenbank und die Hintergrunddienste benötigen eine gleichmäßige Menge an RAM. Auf dedizierter Hardware werden diese Ressourcen mit niemandem geteilt, sodass GitLab auch bei großen Pushes und CI-Läufen reaktionsschnell bleibt.

Warum ein eigenes GitLab betreiben

GitLab.com ist für den Einstieg bequem, aber mit dem Wachstum eines Teams wird eine selbst gehostete Instanz oft zur besseren Wahl:

  • Der Code bleibt auf Ihrem Server. Quellcode, Issues und CI/CD-Secrets werden auf Hardware gespeichert, die Sie kontrollieren, am gewählten Rechenzentrumsstandort. Das ist wichtig für Projekte mit NDA- oder Datenresidenzanforderungen.
  • Keine Tarifgrenzen bei Benutzern, Speicher und CI/CD-Minuten. Die kostenlose Stufe von GitLab.com begrenzt sie, auf Ihrem eigenen Server setzen nur dessen Ressourcen die Grenzen.
  • Eigene CI/CD-Runner. Builds laufen auf Ihren Servern, ohne dass Sie für Rechenminuten zahlen, und sie können auf interne Dienste zugreifen, die nicht aus dem Internet erreichbar sind.
  • Volle Kontrolle über Updates und Einstellungen. Sie entscheiden, wann Sie aktualisieren, welche Integrationen Sie aktivieren und wie Sie Daten sichern.

Wenn Sie bereits GitLab.com nutzen, installieren Sie zuerst Ihre eigene Instanz und verschieben dann Gruppen und Projekte dorthin.

Diese Anleitung zeigt, wie Sie GitLab aus dem offiziellen Paket unter Ubuntu oder Debian installieren, ein kostenloses Let's-Encrypt-Zertifikat erhalten und die Instanz für Ihr Team vorbereiten.

Voraussetzungen für die Installation

Ein Dedicated Server mit mindestens 8 vCPU (CPU-Threads) und 16 GB RAM. Ein 4-Kern-Prozessor mit Hyper-Threading oder SMT liefert bereits 8 Threads. GitLab kann mit 8 GB RAM starten, nutzt dann aber fast den gesamten Speicher und ist unter Last langsam. Verwenden Sie SSD- oder NVMe-Laufwerke mit mindestens 40 GB freiem Speicherplatz für das System und GitLab sowie ausreichend Platz für alle Repositories und Backups.

Auf dem Server installiert: Ubuntu 26.04 LTS, Ubuntu 24.04 LTS oder Debian 13. Die Befehle in dieser Anleitung sind für alle drei Systeme gleich; Abweichungen bei Debian sind vermerkt.

Eine Domain oder Subdomain für GitLab, zum Beispiel gitlab.example.com.

Ein DNS-A-Record, der diese Domain auf die öffentliche IPv4-Adresse des Servers verweist.

Warning

Wenn Sie zusätzlich einen AAAA-Record anlegen, muss IPv6 auf dem Server bereits funktionieren. Let's Encrypt bevorzugt IPv6, wenn ein AAAA-Record existiert, und wenn der Server über IPv6 nicht erreichbar ist, wird das Zertifikat nicht ausgestellt. Wenn Sie unsicher sind, legen Sie nur den A-Record an.

Root-Zugriff oder ein Benutzer mit sudo-Rechten. Die Befehle in dieser Anleitung werden als root ausgeführt; wenn Sie einen Benutzer mit sudo verwenden, setzen Sie sudo davor. Beim Befehl zum Hinzufügen des GitLab-Repositorys setzen Sie sudo vor bash: curl ... | sudo bash.

Die Ports 22 (SSH), 80 (HTTP) und 443 (HTTPS) sind aus dem Internet erreichbar. Port 80 wird auch dann benötigt, wenn Sie nur HTTPS nutzen möchten, da Let's Encrypt die Domain über HTTP prüft.

Info

Ersetzen Sie in dieser Anleitung durchgehend gitlab.example.com durch Ihre eigene Domain und 203.0.113.10 durch die IP-Adresse Ihres Servers.

Mit dem Server verbinden

Verbinden Sie sich von Ihrem Computer per SSH mit dem Server:

ssh [email protected]

Prüfen Sie die Version des Betriebssystems:

cat /etc/os-release

Beispielausgabe:

PRETTY_NAME="Ubuntu 26.04 LTS" NAME="Ubuntu" VERSION_ID="26.04" ...

Die Ausgabe muss Ubuntu 26.04, Ubuntu 24.04 oder Debian 13 zeigen. Prüfen Sie anschließend die Anzahl der CPU-Kerne, den RAM und den freien Speicherplatz:

nproc free -h df -h /

Stellen Sie sicher, dass die Domain bereits auf den Server verweist. Führen Sie diesen Befehl auf Ihrem lokalen Computer aus (er funktioniert unter Windows, macOS und Linux):

nslookup gitlab.example.com

Der A-Record muss die öffentliche IPv4-Adresse des Servers zurückgeben. Wenn Sie zusätzlich einen AAAA-Record verwenden, stellen Sie sicher, dass der Server über IPv6 erreichbar ist. Stimmen die Adressen nicht überein, korrigieren Sie die DNS-Einträge und warten Sie, bis die Änderung wirksam wird. Fahren Sie erst fort, wenn die Domain korrekt aufgelöst wird, denn GitLab fordert das Let's-Encrypt-Zertifikat bei der Erstkonfiguration an.

Server aktualisieren und Abhängigkeiten installieren

Aktualisieren Sie die Paketlisten und die installierten Pakete:

apt update && apt upgrade -y

Setzen Sie den Hostnamen des Servers auf die GitLab-Domain. GitLab verlangt das nicht, aber so bleibt der Systemname in Logs und ausgehenden E-Mails mit der GitLab-Adresse konsistent:

hostnamectl set-hostname gitlab.example.com

Installieren Sie die von GitLab benötigten Pakete:

apt install -y curl openssh-server ca-certificates perl tzdata locales

GitLab benötigt außerdem eine UTF-8-Locale: Ohne sie kann die mitgelieferte PostgreSQL-Datenbank bei der Installation nicht initialisiert werden. Aktivieren Sie en_US.UTF-8 in der Locale-Liste und generieren Sie sie (unter Ubuntu 26.04 ist sie bereits aktiviert, und der erste Befehl ändert nichts):

sed -i 's/^# *en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen locale-gen

Firewall konfigurieren

In dieser Anleitung wird die UFW-Firewall verwendet. Sie ist in Ubuntu enthalten, aber standardmäßig deaktiviert; unter Debian installieren Sie sie zuerst:

apt install -y ufw

Wenn UFW auf Ihrem Server bereits aktiviert ist, prüfen Sie zunächst die aktuellen Regeln mit ufw status. Erlauben Sie SSH, HTTP und HTTPS und schalten Sie die Firewall erst danach ein, damit Ihre SSH-Sitzung nicht unterbrochen wird:

ufw allow ssh ufw allow http ufw allow https ufw enable

Bestätigen Sie die Abfrage mit y. Prüfen Sie die Regeln:

ufw status

Beispielausgabe:

Status: active To Action From -- ------ ---- 22/tcp ALLOW Anywhere 80/tcp ALLOW Anywhere 443/tcp ALLOW Anywhere 22/tcp (v6) ALLOW Anywhere (v6) 80/tcp (v6) ALLOW Anywhere (v6) 443/tcp (v6) ALLOW Anywhere (v6)

Warning

Wenn Ihr SSH-Server einen anderen Port als 22 verwendet, erlauben Sie diesen Port vor ufw enable, zum Beispiel mit ufw allow 2222/tcp. Andernfalls geht die Verbindung verloren.

GitLab-Repository hinzufügen

GitLab wird in zwei Editionen angeboten:

  • GitLab Enterprise Edition (gitlab-ee). Sie enthält alle kostenlosen Funktionen und erlaubt es, kostenpflichtige Funktionen später ohne Neuinstallation zu aktivieren.
  • GitLab Community Edition (gitlab-ce). Ein vollständig quelloffener Build mit den kostenlosen GitLab-Funktionen.

Diese Anleitung verwendet gitlab-ee. Wenn Sie die Community Edition bevorzugen, ersetzen Sie in allen Befehlen gitlab-ee durch gitlab-ce.

Fügen Sie das offizielle GitLab-Repository hinzu:

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

Das Skript fügt das Repository und seinen Signaturschlüssel hinzu und aktualisiert die Paketliste.

GitLab installieren

Installieren Sie das Paket und übergeben Sie die Adresse Ihrer Instanz in EXTERNAL_URL. Verwenden Sie https:// in der Adresse: In diesem Fall fordert GitLab ein Let's-Encrypt-Zertifikat an und richtet die Weiterleitung von HTTP auf HTTPS automatisch ein.

EXTERNAL_URL='https://gitlab.example.com' apt install -y gitlab-ee

Bei der Installation entpackt GitLab seine Komponenten (Webserver, PostgreSQL-Datenbank, Redis, Git-Speicher und Hintergrunddienste), schreibt die Konfiguration nach /etc/gitlab/gitlab.rb, fordert das Zertifikat an und startet alle Dienste. Das dauert 5 bis 10 Minuten. Danach endet die Ausgabe mit der Meldung „Thank you for installing GitLab!".

Beispielausgabe:

Thank you for installing GitLab! GitLab should be available at https://gitlab.example.com

GitLab erzeugt ein zufälliges Passwort für das Konto root und speichert es in einer Datei. Zeigen Sie es an:

cat /etc/gitlab/initial_root_password

Kopieren Sie das Passwort. Die Datei wird 24 Stunden nach der Installation automatisch gelöscht, melden Sie sich also vorher an und legen Sie Ihr eigenes Passwort fest.

Info

Sie können das root-Passwort bereits bei der Installation selbst festlegen, indem Sie im Installationsbefehl GITLAB_ROOT_PASSWORD='your-password' vor EXTERNAL_URL ergänzen. Verwenden Sie einfache Anführungszeichen, damit die Shell Zeichen wie $ oder ! nicht verändert. Ist das Passwort kürzer als 8 Zeichen, verwendet GitLab es nicht und erzeugt stattdessen ein zufälliges Passwort.

GitLab öffnen und HTTPS prüfen

Öffnen Sie https://gitlab.example.com in Ihrem Browser. Die Seite muss ohne Sicherheitswarnung geöffnet werden, und der Browser muss ein gültiges, von Let's Encrypt ausgestelltes Zertifikat anzeigen.

Info

Wenn die Seite den Fehler 502 anzeigt, startet GitLab noch seine Dienste. Warten Sie ein bis zwei Minuten und laden Sie die Seite neu.

Melden Sie sich mit dem Benutzernamen root und dem Passwort aus initial_root_password an.

Ändern Sie das Passwort sofort. Wählen Sie Ihren Avatar, dann Edit profile. Erweitern Sie im linken Menü Access, wählen Sie Password and authentication und dann Change password. Geben Sie das aktuelle und ein neues Passwort ein und wählen Sie Save password. GitLab lehnt schwache Passwörter ab, auch solche, die das Wort „gitlab" oder Ihren Benutzernamen enthalten.

Wenn die Seite nicht über HTTPS geöffnet wird, wurde das Zertifikat höchstwahrscheinlich nicht ausgestellt. In diesem Fall enthält die Installationsausgabe einen Let's-Encrypt-Fehler. Prüfen Sie, ob die Domain auf die Server-IP-Adresse auflöst, ob Port 80 offen ist und ob kein AAAA-Record ohne funktionierendes IPv6 existiert. Fordern Sie das Zertifikat nach der Behebung der Ursache erneut an:

gitlab-ctl reconfigure

Let's Encrypt begrenzt die Anzahl fehlgeschlagener Versuche pro Stunde, beheben Sie daher die Ursache, bevor Sie es erneut versuchen.

Grundkonfiguration von GitLab

Öffentliche Registrierung deaktivieren. Wenn die Instanz nur für Ihr Team gedacht ist, schalten Sie die Kontoerstellung auf der Registrierungsseite aus. Standardmäßig kann sich jeder registrieren, der Ihre GitLab-Seite öffnet, und das neue Konto wartet dann auf die Freigabe durch einen Administrator. Am schnellsten geht es mit der Schaltfläche Deactivate im Banner auf der GitLab-Startseite. Alternativ wählen Sie oben rechts Admin, gehen zu Settings > General und erweitern New user account restrictions. Deaktivieren Sie das Kontrollkästchen Allow new user accounts und wählen Sie Save changes. Neue Konten werden dann nur noch von Administratoren erstellt.

Benutzerkonten erstellen. Gehen Sie zu Admin > Instance overview > Users und wählen Sie New user, geben Sie Name, Benutzername und E-Mail-Adresse ein und wählen Sie Create user. Verwenden Sie für die tägliche Arbeit ein persönliches Konto mit Administratorrechten und das Konto root nur bei Bedarf.

Gruppe erstellen. Gruppen fassen Projekte und Teammitglieder zusammen. Wählen Sie in der oberen Leiste Create new (das Plus-Symbol), dann New group > Create group, geben Sie einen Namen ein und wählen Sie Create group. Fügen Sie Ihre Kollegen unter Manage > Members zur Gruppe hinzu.

SSH-Schlüssel hinzufügen. Um über SSH mit Repositories zu arbeiten, fügt jeder Benutzer seinen öffentlichen Schlüssel unter Edit profile > Access > SSH keys hinzu: Wählen Sie Add new key, fügen Sie den Schlüssel ein und wählen Sie Add key.

Info

GitLab sendet E-Mails zum Zurücksetzen von Passwörtern, zur Kontobestätigung und zum Entsperren nach fehlgeschlagenen Anmeldeversuchen. Solange der E-Mail-Versand nicht konfiguriert ist (siehe „Was als Nächstes zu konfigurieren ist"), funktionieren diese Funktionen nicht, und Administratoren müssen Passwörter manuell zurücksetzen.

Installation überprüfen

Prüfen Sie, ob alle GitLab-Dienste laufen:

gitlab-ctl status

Beispielausgabe:

run: gitaly: (pid 2981) 512s; run: log: (pid 2975) 512s run: gitlab-workhorse: (pid 3412) 498s; run: log: (pid 3401) 498s run: nginx: (pid 3530) 495s; run: log: (pid 3522) 495s run: postgresql: (pid 3105) 507s; run: log: (pid 3098) 507s run: puma: (pid 3288) 501s; run: log: (pid 3280) 501s run: redis: (pid 2950) 514s; run: log: (pid 2944) 514s run: sidekiq: (pid 3350) 499s; run: log: (pid 3342) 499s ...

Jede Zeile muss mit run: beginnen.

Führen Sie die integrierte Prüfung der Konfiguration und der Dienste aus:

gitlab-rake gitlab:check SANITIZE=true

Erstellen Sie ein Test-Repository. Wählen Sie in der Weboberfläche Create new > New project/repository > Create blank project, geben Sie den Namen test ein, wählen Sie Ihre Gruppe und lassen Sie Initialize repository with a README aktiviert. Wählen Sie Create project.

Prüfen Sie den Zugriff über SSH von Ihrem Computer aus:

ssh -T [email protected]

Beispielausgabe:

Welcome to GitLab, @username!

Eine funktionierende Einrichtung antwortet mit einer Willkommensnachricht, die Ihren Benutzernamen enthält. Klonen Sie anschließend das Test-Repository:

git clone [email protected]:group/test.git

Ersetzen Sie group durch den Pfad Ihrer Gruppe. Wenn das Repository geklont wird und README.md enthält, ist GitLab installiert und funktioniert.

Was als Nächstes zu konfigurieren ist

Backups. Der Befehl gitlab-backup create erstellt ein Anwendungs-Backup mit der GitLab-Datenbank, den Repositories und weiteren Anwendungsdaten in /var/opt/gitlab/backups. Die Konfigurationsdateien /etc/gitlab/gitlab.rb und /etc/gitlab/gitlab-secrets.json sind nicht enthalten und müssen separat gesichert werden, zum Beispiel mit gitlab-ctl backup-etc. Ohne gitlab-secrets.json kann eine wiederhergestellte Instanz 2FA-Einstellungen und CI/CD-Variablen nicht entschlüsseln. Führen Sie Anwendungs- und Konfigurations-Backups regelmäßig aus und kopieren Sie sie auf einen Speicher außerhalb des GitLab-Servers, zum Beispiel in den INTROSERV Cloud Storage: siehe INTROSERV Cloud Storage mit dem Server verbinden.

Ausgehende E-Mails. Konfigurieren Sie einen SMTP-Server in /etc/gitlab/gitlab.rb, damit GitLab Benachrichtigungen, Passwort-Rücksetzungen und Kontobestätigungen versenden kann. Siehe SMTP-Einstellungen in der GitLab-Dokumentation.

GitLab Runner. Der Runner führt CI/CD-Pipelines aus. Builds beanspruchen viel CPU und RAM, daher ist es besser, den Runner auf einem separaten VPS oder Dedicated Server zu installieren statt auf dem GitLab-Server selbst.

Updates. GitLab veröffentlicht jeden Monat eine neue Version und häufiger Sicherheitskorrekturen. Prüfen Sie vor einem Upgrade über mehrere Versionen den offiziellen Upgrade-Pfad: GitLab muss bestimmte Zwischenversionen durchlaufen. Erstellen Sie ein Backup und aktualisieren Sie dann mit apt update && apt install -y gitlab-ee.

Monitoring. GitLab enthält Prometheus und exportiert eigene Metriken. Den Zustand der Instanz können Sie unter Admin > Monitoring > Health check prüfen, und die dort aufgeführten Endpunkte lassen sich an Ihr externes Monitoring-System anbinden.

Informationen zur Wahl eines Servers für Ihre GitLab-Instanz finden Sie auf der Seite Dedicated Server.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • kingdom
  • germany
  • Español
  • French
  • Hrvatska
  • Italiano
  • Poland
  • Slovenski
  • ukraine
  • Türkçe
  • Русский
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA