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

 

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 Traefik als Let's Encrypt Reverse-Proxy ein. Der Reverse-Proxy stellt eine verschlĂŒsselte HTTPS-Verbindung zur VerfĂŒgung und ermöglicht es mehrere Websites auf einem Server zu betreiben.

Alternativ zu einem Reverse-Proxy kann auch ein Cloudflare-Tunnel fĂŒr das Veröffentlichen von Webservices aus dem eigenen Netzwerk verwendet werden:

Schritt fĂŒr Schritt GitLab in Docker inklusive 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 Mini-PC, Notebook, MAC, ein NAS: QNAP, Synology oder eine andere Hardware mit x68-64 Architektur auf der sich Windows oder Linux installieren lĂ€sst.

Schematische Darstellung: Zugriff vom Internet
Voraussetzungen fĂŒr den Internetzugriff:
  1. Eigene registrierte Domain, siehe Domain und dessen Verwaltung.
  2. Cloudflare oder Reverse Proxy:
    1. Cloudflare-Tunnel Service
    2. oder alternativ:
    3. Port-Forwarding und Reverse Proxy mit Let's Encrypt-Zertifikat
    siehe auch: Cloudflare oder Reverse Proxy

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:

[+]
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:
    name: webproxy
    external: true

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: 04.07.2023 von Bernhard | Translation English |🔔 | Kommentare:0

➚ Schlanker und schneller GIT-Server, Ă€hnlich GitHub (Docker) | ➊ Container | Internet-Werbung blockieren im ganzen Netzwerk - Pi-hole/Docker ➚
➊ Home Server | GĂŒnstiger und sparsamer Docker Mini Server fĂŒr zu Hause ➚

Top-Artikel in diesem Bereich


NAS selber bauen: flexibel, stromsparend und gĂŒnstig [HowTo]

Wer nach einem NAS (Network Attached Storage oder Netzwerkspeicher) fĂŒr den Heimgebrauch sucht, kommt an den Herstellern Synology und QNAP nicht vorbei. Beide Hersteller liefern kleine NAS-Komplettlösungen mit der Möglichkeit, Daten lokal oder ĂŒber das Internet zu synchronisieren und beide verlangen fĂŒr die verwendete Hardware nicht gerade wenig Geld.


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.


Bitwarden in Docker betreiben - Setup Schritt fĂŒr Schritt

Bitwarden ist ein webbasierter Passwort-Manager, Ă€hnlich LastPass, aber Open Source und der Möglichkeit diesen selbst zu betreiben (hosten). Wie sich Bitwarden im Vergleich zu anderen Passwort-Managern einordnet, habe ich auf folgender Seite ĂŒberlegt: Passwort-Manager sicher? KeePass vs. LastPass vs. Bitwarden. Bitwarden besteht aus mehreren Services, welche ĂŒber verschiedene Container bereitgestellt werden können. Das relativ aufwĂ€ndige Setup wurde mit "Bitwarden Unified" speziell fĂŒr ein Selbs...

Fragen / Kommentare


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