Eigenen Gitlab-Server unter Linux installieren und betreiben
Vorwort zur Anleitung:
Diese Anleitung hat einen mittleren Schwierigkeitsgrad.
Installation von Linux und Kenntnisse in der Befehlszeile sind vorausgesetzt.
GitLab ist eine DevOps-Plattform, die Entwicklern hilft, Code zu verwalten und zu entwickeln.
GitLab CE (Community Edition)
• Open Source: Die Community Edition ist die kostenlose, Open-Source-Version von GitLab. Sie bietet Funktionen für die Versionskontrolle und DevOps-Prozesse..
• Funktionsumfang: GitLab CE umfasst Funktionen wie:
◦ Git-Repository-Management
◦ Code-Reviews
◦ CI/CD-Pipelines (mit begrenztem Funktionsumfang im Vergleich zur kostenpflichtigen Version)
◦ Issue-Tracking
◦ Merge-Requests
◦ Wiki und Snippets
Einsatzmöglichkeiten eines GitLab CE Servers
• Entwicklerteams können ihre Projekte und Code-Repositorys auf diesem Server verwalten.
• CI/CD-Prozesse für automatisierte Tests und Deployments werden auf dem GitLab CE Server eingerichtet.
• Private Git-Instanzen: Unternehmen oder Einzelpersonen, die GitLab für ihre eigene Infrastruktur verwenden möchten, ohne eine kommerzielle Lizenz (Enterprise Edition) zu benötigen, können GitLab CE auf einem eigenen Server betreiben.
Zusammengefasst ist ein GitLab CE Server einfach eine selbstgehostete Installation von GitLab in der Community Edition. Er kann auf einer Vielzahl von Betriebssystemen installiert werden und ermöglicht es Teams, GitLab mit den grundlegenden Funktionen zu nutzen.
Vorbereitungen / Anforderungen:
Anforderungen
Schwierigkeitsgrad-Installation: Mittel
Schwierigkeitsgrad-Anwendung: Schwer
Erforderliche Kenntnisse: Linux-Befehlszeile
Systemvoraussetzungen:
Basis: Debian
Betriebssystem: Ubuntu Server (Headless)
Festplattenspeicher: Mindestens 17 GB
CPU: Mindestens 2 CPU
RAM: Mindestens 5 GB
Internetverbindung: Verfügbar
Die Systemanforderungen wurden in einer virtualisierten Umgebung getestet.
Tipp:
Wenn du mit Virtualisierung, z.B. ProxMox, vertraut bist, kannst du deine eigenen Server effizient und stromsparend betreiben!
Getestet auf:
Ubuntu-Server 22.04
Ubuntu-Server 24.10
Installationsablauf:
1. Durchführung von System-Upgrade
2. Statische IP-Adresse festlegen und anwenden
3. (Optional) Hostnamen festlegen
4. Installation und Einstellungen
5. CUPS Bedienoberfläche
6. Systembedienung
7. Störungsanalyse
Optionale Schritte können weggelassen werden, da sie lediglich unterstützende Funktionen bieten, wie zum Beispiel die Zusammenfassung von Servern in einem Rechenzentrum.
Für den Betrieb in einem Rechenzentrum sollten die optionalen Abläufe jedoch aus Gründen des beruflichen Stolzes in Betracht gezogen werden.
1. Durchführung von System-Upgrade
Vor jeder Installation ist ein System-Update erforderlich:
$> ssh DEINUSER@192.168.1.X
# Stelle eine SSH-Verbindung zu deinem Server her
$> sudo apt update
# Aktualisiere die Paketquellen
$> sudo apt upgrade -y
# Starte das System-Upgrade
$> sudo apt autoclean
# Optional: Entferne überflüssige Pakete
$> sudo apt autoremove
# Optional: Bereinige das System von Abhängigkeiten
2. Statische IP-Adresse festlegen und anwenden
Ein Gitlab-Server benötigt eine statische IP-Adresse. Alternativ kann auch eine per DHCP zugewiesene feste Adresse verwendet werden, jedoch sollte diese niemals geändert werden.
Es besteht die Möglichkeit, sich selbst vom Server auszuschließen, wenn die IP-Adresse nicht korrekt konfiguriert ist.
$> ip addr
# Liste alle Netzwerkadapter und Informationen auf
$> sudo su
# Wechsel in die Super-User-Shell
$> cd /etc/netplan
# Wechsle ins Netplan-Verzeichnis
$> ls -l
# Zeige alle Dateien im Netplan-Verzeichnis an
$> for i in $( ls ); do mv $i $i.bak; done
# Sichere alle bestehenden Konfigurationen als Backup
$> touch /etc/netplan/01_static_ip.yaml
# Erstelle eine neue Konfigurations-Datei
$> nano /etc/netplan/01_static_ip.yaml
# Öffne die neue Konfigurations-Datei
network:
version: 2
renderer: networkd
ethernets:
ens18: #Edit this line according to your network interface name.
dhcp4: no
addresses:
- 192.168.1.150/24
gateway4: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4 # Öffne die Datei mit einem Texteditor (Copy-Paste)
# Ersetze ens18 durch den Namen deines Netzwerk-Adapters (siehe Ausgabe von ip addr).
# Ändere die IP-Adresse und die Netzmaske nach Bedarf.
# Passen die DNS-Adressen an, falls erforderlich.
# Überprüfe und passe ggf. die Routen (Gateway) an.
Speichern und Verlassen
• Speichern der Datei: Ctrl + O
• Editor verlassen: Ctrl + X
$> netplan generate && netplan apply
# Wende die neuen Netzwerkeinstellungen an
🚨 Der Server wechselt nun zu einer neuen IP-Adresse, was dazu führt, dass deine SSH-Sitzung unterbrochen wird.
3. (Optional) Hostnamen festlegen
Durch das Ändern des Hostnamens der Server-Station vergibst du einen eindeutigen Namen für das System.
In unserem Fall könnte der Hostname beispielsweise „S5-Gitlab-Server“ lauten.
Die Hosts-Datei wird verwendet, um auf Server-Ebene IP-Adressen Namen zuzuordnen, die intern genutzt werden. Wenn du den Hostnamen änderst, muss auch der entsprechende Eintrag in der Hosts-Datei aktualisiert werden. Bei produktiven Systemen sollte diese Kleinigkeit unbedingt beachtet werden, da sie ein Zeichen von Berufsethos und Professionalität ist. Für Tests und Experimente ist dies jedoch nicht zwingend erforderlich.
Der neue Hostname muss zwingen der gleiche sein wie auch im Hosts-File.
$> ssh DEINUSER@192.168.1.X
# Wiederherstellen der SSH-Verbindung
$> sudo hostnamectl set-hostname DEINHOSTNAME
# Einen neuen Host-Namen setzen
$> sudo nano /etc/hosts
# Hosts-Datei öffnen und ändere den markierten Bereich
127.0.0.1 localhost
127.0.1.1 DEINHOSTNAME
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ……..
# Speichern und Verlassen
• Speichern der Datei: Ctrl + O
• Editor verlassen: Ctrl + X
$> sudo reboot
# Server neu starten, damit die Änderungen wirksam werden
4. Installation und Einstellungen
$> ssh DEINUSER@192.168.1.x
# Wiederherstellen der SSH-Verbindung
$>sudo apt install curl openssh-server ca-certificates tzdata perl postfix -y
# Zusatz-Systeme installieren
$> curl -O https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh
# Download Install-Script
$> chmod +x script.deb.sh
# SH-File ausführbar machen
$> sudo bash script.deb.sh
# Script ausführen
$> sudo apt install gitlab-ce
# System installieren
$> nano /etc/gitlab/gitlab.rb
# Konfiguration eintragen
…
external_url ‚http://192.168.1.151‘
…
# IP / URL Eintragen
$> sudo gitlab-ctl reconfigure
# Einstellung laden
$> sudo cat /etc/gitlab/initial_root_password
# Root-Passwort anzeigen
$> sudo gitlab-rake "gitlab:password:reset[root]"
# Optional: Neues Root-Passwort setzen
$> sudo reboot
# System-Neustart
5. Systembedienung
$> sudo gitlab-ctl restart
# Dienst starten
$> sudo gitlab-ctl stop
# Dienst stoppen
$> sudo gitlab-ctl status
# Dienst Status
$> sudo nano /etc/gitlab/gitlab.rb
# Konfigurationsdatei bearbeiten
$> gitlab-ctl --help
# Hilfe-Prompt, Steuerungsoptionen
$> sudo gitlab-ctl upgrade
# Gitlab upgrade
$> sudo apt install nmap -y && nmap localhost
# System-Ports anzeigen
$> sudo proftpd -t
# Konfigurations-Überprüfung
$> cat /var/log/proftpd/proftpd.log
# Log-Files
$> cat /var/log/proftpd/xferlog
# Log-Files
6. Gitlab Bedienoberfläche, erstes Projekt erstellen
Öffnen des Web-GUI via Web-Browser
Für das erste Login ist der Account «root» zu verwenden.
Wechsle auf die Admin-Seite wo du auf eine Nutzer-Übersicht gelangst.
Erstelle einen neuen GitLab-Benutzer.
Wähle passende Credentionals und sieh dir die möglichen Einstellungen genau an:
In unserem Fall existiert noch kein Mail-Server, richte für den Benutzer X also ein Passwort ein:
Logge dich mit dem neuen Benutzer ein.
Lege unter dem neuen User ein Projekt an.
Immer schön easy bleiben... und ein leeres Projekt erstellen – man kann die Funktionalitäten damit unverfälscht testen und erkunden:
Erstelle ein Projekt nach deinem Geschmack! Sieh dir die möglichen Einstellungen genau an.
Dein Test-Projekt wurde erfolgreich erstellt. Hier findest du die Projekt-Übersicht:
Für weiter Schritte ist es hilfreich unter «Code» die http-Sektion des Projektes zu kopieren: