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
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:- 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.
- Eigene registrierte Domain, siehe Domain und dessen Verwaltung.
- Cloudflare oder Reverse Proxy:
- Cloudflare-Tunnel Service oder alternativ:
- Port-Forwarding und Reverse Proxy mit Let's Encrypt-Zertifikat
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