GIT-Repositories selbst hosten: GitLab als Docker-Container starten

This page is also available in English

Wer seine Git-Repositorys selbst hosten will, findet mit GitLab eine Alternative zu GitHub. GitLab bietet eine komfortable Weboberfläche für das Verwalten, Bearbeiten und Deployment von Git-Projekten.

Docker Basics

Docker ermöglicht es, Services oder Applikationen per Befehl in einem sogenannten Container zu starten.
Ein Container ist eine vom Betriebssystem (OS) unabhängige isolierte Umgebung:
Beim ersten Start eines Containers, lädt Docker selbstständig alle notwendigen Quellen
aus dem Internet.
Docker kann unter Windows, macOS oder einer Linux-Distribution installiert werden,
siehe auch: Docker
Dank Docker ist die Installation in wenigen Minuten startklar. Es sollte allerdings genügend freier Arbeitsspeicher vorhanden sein, denn im Betrieb beschlagnahmt GitLab ca. 4 GB und zudem ständig etwas CPU im Hintergrund. Dabei reagiert die Weboberfläche auf meiner NAS etwas träge, daher habe ich GitLab mittlerweile mit Gitea ersetzt, siehe: Gitea Inbetriebnahme. Für größere Teams mit performanter Hardware bietet GitLab mehr Features als Gitea, speziell Richtung Integration und Delivery: CI/CD.

Damit GitLab sicher vom Internet erreicht werden kann, setze ich einen Let's Encrypt Reverse-Proxy ein. Zuerst habe ich Nginx als Reverse-Proxy verwendet, diesen aber später mit Traefik ersetzt. Der Reverse-Proxy stellt eine verschlüsselte HTTPS-Verbindung zur Verfügung und ermöglicht es mehrere Websites auf einem Server zu betreiben.

Schritt fĂĽr Schritt GitLab mit Docker inkl. Zugriff vom Internet

Hardwareanforderung:
  1. Für die Docker-Installation kann eine nahezu beliebige Hardware verwendet werden: Zum Beispiel ein virtueller Server eines Providers, oder für zu Hause: ein PC, Notebook, Raspberry PI, MAC, eine NAS: QNAP, Synology oder eine beliebige andere Hardware auf der sich Windows oder Linux installieren lässt.
Voraussetzungen fĂĽr den Internetzugriff:
  1. Bei einem gemieteten Server eines Providers vergibt dieser eine IP-Adresse. Wer einen Server im eigenen Heimnetzwerk betreiben will, benötigt ein Port-Forwarding.
  2. Der Aufruf aus dem Internet erfolgt am besten über eine Domain mit einem DNS-Eintrag auf die öffentliche IP-Adresse, siehe Domain und dessen Verwaltung.
  3. Für die Zertifikatsverwaltung und den sicheren Zugriff auf die Webservices verwende ich einen Reverse Proxy und Let's Encrypt-Zertifikate. 

Container fĂĽr GitLab:

  1. docker-compose.yml anlegen
  2. Container starten

docker-compose.yml

Beim Einsatz der folgenden docker-compose.yml Datei, muss nur noch die verwendete Domain (hostname, external_url und ..rule=Host) angepasst werden:

[+]
version: '3'
services:
 web:
  image: 'gitlab/gitlab-ee:latest'
  restart: always
  hostname: 'gitlab.domain.tld'
  restart: always
  environment:
    GITLAB_OMNIBUS_CONFIG: |
      external_url 'https://gitlab.domain.tld'
      nginx['listen_port'] = 80
      nginx['listen_https'] = false
      nginx['proxy_set_headers'] = {
      	"X-Forwarded-Proto" => "https",
      	"X-Forwarded-Ssl" => "on"
      }
  expose:
      - "80"
  #FĂĽr einen direkten Test-Zugriff, in den folgenden 2 Zeilen "#" entfernen. Aufruf: http://localhost:83 oder http://ServerIP:83
   #ports:   
    #- "83:80" 

  #Labels fĂĽr ReverseProxy, siehe: https://www.libe.net/traefik
  labels:
      - "traefik.enable=true"
      - "traefik.http.routers.mailserver.rule=Host(`gitlab.domain.tld`)"   
      - "traefik.http.routers.mailserver.entrypoints=web"
      - "traefik.http.routers.mailserver.entrypoints=websecure"
      - "traefik.http.routers.mailserver.tls.certresolver=myresolver"  

  volumes:
    - 'gitlab-config:/etc/gitlab'
    - 'gitlab-logs:/var/log/gitlab'
    - 'gitlab-data:/var/opt/gitlab' 

volumes:
  gitlab-config:
  gitlab-logs:
  gitlab-data:

#Ohne dem Einsatz eines Reverse Proxy (https://www.libe.net/traefik) fehlt voraussichtlich das Netzwerk webproxy 
#und die folgenden Zeilen können entfernt oder auskommentiert werden. Alternativ kann das Netzwerk mit "docker network create webproxy" erstellt werden
networks:
  default:
    external:
      name: webproxy

Der Befehl docker-compose up -d startet Gitlab:

docker-compose up -d

Beim ersten Start kann über die Weboberfläche ein Root-Kennwort vergeben werden.

positive Bewertung({{pro_count}})
Beitrag bewerten:
{{percentage}} % positiv
negative Bewertung({{con_count}})

DANKE fĂĽr deine Bewertung!

Aktualisiert: 29.08.2022 von Bernhard đź””


Top-Artikel in diesem Bereich


ioBroker installieren - Docker
Mit ioBroker können verschiedene Automatisierungslösungen oder Geräte in einem System zusammengefasst werden. Um bestimmte Gateways oder Geräte ansprechen zu können, werden in ioBroker verschiedene Adapter verwendet.

Home-Assistant Docker Conbee 2 und Zigbee2MQTT / deCONZ
Dank zahlreicher Integrationsmöglichkeiten ist Home-Assistant eine einfache Plattform für das Steuern verschiedenster Smart-Home Geräte. Im Vergleich zu ioBroker ist mir der Start mit Home Assistant wesentlich einfacher gefallen. Während ich für ioBroker noch am Suchen war, welches Frontend ich für meine Dashboards verwenden könnte, hatte ich mit Home-Assistant out of the box ein fertig eingerichtetes System. Die Lovelance Dashboards von Home Assistant können einfach in der GUI zusammengeklickt...

Conbee 2: Phoscon deCONZ - Docker Inbetriebnahme | Review
Mit dem kleinen USB-Stick Conbee2 habe ich meinen NAS um ein Zigbee-Gateway erweitert. Conbee2 kann auf Raspbian, Ubuntu, Docker oder Windows installiert werden.

Fragen / Kommentare


Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu Mehr Details