GitLab kann relativ einfach selbst gehostet werden. Ein Weg ist hierbei, den Service in einem Docker-Container laufen zu lassen, was wir hier vorstellen wollen. Unser Ziel ist es, einen selbstgehosteten GitLab-Server auf einem Server mit öffentlicher IP und entsprechendem DNS-Eintrag aufzusetzen. Dabei soll auch ein GitLab-Runner für CI / CD zum Einsatz kommen.

Um loszulegen, aktualisieren wir die Software am Server (in unserem Fall Debian 10) und installieren docker-compose:

Shell

Als Nächstes konfigurieren wir unser Docker-Setup. Unser GitLab-Server soll im Ordner /srv/gitlab (als Beispiel) liegen. Dafür erstellen wir diesen Ordner und legen darin die Datei docker-compose.yml an.

YAML

Danach können wir den Server erstmalig starten. Dies wird einige Minuten dauern, bis alles initialisiert ist. Gestartet wird mit folgendem Befehl:

YAML

Die Log-Files können mit folgendem Kommando betrachtet werden:

YAML

Während des ersten Startes wird auch ein HTTPS Zertifikat über Let’s Encrypt ausgestellt. Sobald alles erledigt ist, kann auf den Server über die entsprechende Domain zugegriffen werden. Beim ersten Aufruf muss ein Passwort für den Benutzer “root” vergeben werden.

Nun ist es an der Zeit, den GitLab-Runner zu konfigurieren!

In den Administrationseinsellungen (https://<YOUR DOMAIN FOR THE GITLAB SERVER>/admin/runners) wird ein Registrierungstoken für den Runner angezeigt. Diese brauchen wir im nächsten Schritt.

Zuvor führen wir diesem Befehl im festgelegten GitLab-Ordner aus /srv/gitlab:

YAML

Das erste “gitlab-runner” ist der Containername, welchen wir in der Datei docker-compose.yml festgelegt haben (falls hier ein anderer Name vergeben wurde)

Im Registrierungsprozess muss als Erstes die Domain des GitLab-Servers eingegeben werden (https://<YOUR DOMAIN FOR THE GITLAB SERVER>), danach der Registrierungstoken von den Administrationseinstellungen. Schlussendlich kann noch eine Beschreibung und auch Tags vergeben werden.

Sofern die Verbindung zum GitLab-Server hergestellt werden kann, wird nach einem „Executor“ gefragt. In unserem Fall wählen wir hier “docker” und “alpine:latest” für das Standard-Docker image.

Danach sollte der Runner in den Administrationseinstellungen aufscheinen (https://<YOUR DOMAIN FOR THE GITLAB SERVER>/admin/runners).

Um diesen Runner für alle Projekte am GitLab-Server zur Verfügung zu stellen, muss in den Runner-Einstellungen folgende Option deaktiviert werden: “Lock to current projects”.

Und nun haben wir unseren self-hosted GitLab Server mit CI / CD Funktionalität!

Beteilige dich an der Unterhaltung

3 Kommentare

  1. Ist es ein sicherheitsrisiko falls die ports (http, https, ssh) nach außen freigegeben sind für Prod?

    1. Grundsätzlich stellt dies alleine noch kein Sicherheitsrisiko dar – jeder Webserver muss schließlich auch die Ports für HTTP und HTTPS geöffnet haben.
      Sofern daher die einzelnen Softwarekomponenten jeweils auf aktuellem Stand sind, sichere Passwörter verwendet werden, und die Serverkonfiguration sinnvoll getätigt worden ist, sollte hier kein grundsätzliches Problem vorliegen.
      Zu einem vollständigem Sicherheitskonzept sollten noch Dinge wie Firewall, DDoS-Protection, Backups etc. bedacht werden.

Schreib einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert