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
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
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:
Voraussetzungen für den Internetzugriff:
siehe auch: Cloudflare oder Reverse Proxy
Container für GitLab:
- docker-compose.yml anlegen
- 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.
{{percentage}} % positiv