
Hochsicherheits-Komplettanleitung: Multi-App-Setup unter Debian 13
5. August 2026
Grafana – Monitoring & Visualisierung mit Docker
20. August 2026
GitLab Community Edition – Sichere Installation hinter Nginx Proxy Manager
# 1. Erstelle die persistenten Verzeichnisse auf dem Host (als deinuser)
mkdir -p ~/infra/gitlab/{config,logs,data}
cd ~/infra/gitlab
Erstelle die docker-compose.yml:
cat <<EOF > docker-compose.yml
services:
gitlab:
image: gitlab/gitlab-ce:latest
container_name: gitlab-app
restart: unless-stopped
hostname: gitlab.deinedomain.at
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'https://deinedomain.at'
# Interner Nginx lauscht unverschlüsselt, da NPM SSL übernimmt
nginx['listen_port'] = 80
nginx['listen_https'] = false
# Empfohlen für Betrieb hinter Reverse Proxies
nginx['proxy_set_header'] = {
"X-Forwarded-Proto" => "https",
"X-Forwarded-Ssl" => "on"
}
ports:
- "2222:22" # SSH-Port für Git-Clones (Host-Port 2222 -> Container 22)
volumes:
- ./config:/etc/gitlab
- ./logs:/var/log/gitlab
- ./data:/var/opt/gitlab
shm_size: 256m
networks:
- proxy-nw
networks:
proxy-nw:
external: true
EOF
# Stack starten (Achtung: Der erste Start von GitLab kann bis zu 5-10 Minuten dauern!) docker compose up -d
Um den SSH-Port in der GitLab-Weboberfläche (oben rechts beim Klick auf „Clone“) korrekt anzuzeigen, erweitern wir deine
GITLAB_OMNIBUS_CONFIG. Ohne diese Anpassung würde GitLab dort standardmäßig Port 22 anzeigen, was beim git clone zu einem Timeout führen würde, da dein Host-SSH diesen Port blockiert.Füge die Variable
gitlab_rails['gitlab_shell_ssh_port'] = 2222 in die docker-compose.yml deiner app-gitlab.md ein.Die finale, optimierte
docker-compose.yml für GitLab CEcat <<EOF > docker-compose.yml
services:
gitlab:
image: gitlab/gitlab-ce:latest
container_name: gitlab-app
restart: unless-stopped
hostname: gitlab.deinedomain.at
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'https://deinedomain.at'
# Interner Nginx lauscht unverschlüsselt (NPM übernimmt SSL)
nginx['listen_port'] = 80
nginx['listen_https'] = false
# Verhindert HTTP-302-Redirect-Schleifen hinter dem Reverse Proxy
nginx['proxy_set_header'] = {
"X-Forwarded-Proto" => "https",
"X-Forwarded-Ssl" => "on"
}
# WICHTIG: Korrigiert die SSH-Anzeige in der Weboberfläche auf Port 2222
gitlab_rails['gitlab_shell_ssh_port'] = 2222
ports:
- "2222:22" # SSH-Port für Git-Clones (Host-Port 2222 -> Container 22)
volumes:
- ./config:/etc/gitlab
- ./logs:/var/log/gitlab
- ./data:/var/opt/gitlab
shm_size: 256m
networks:
- proxy-nw
networks:
proxy-nw:
external: true
EOF
# Stack starten (Achtung: Der erste Start von GitLab kann bis zu 5-10 Minuten dauern!) docker compose up -d
Die beiden wichtigsten Absicherungen:
- Registrierung fremder User deaktivieren: Verhindert, dass sich unbefugte Dritte über das Webinterface einfach einen Account auf deinem Server klicken können.
- Gravatar deaktivieren (Datenschutz): Unterbindet, dass GitLab bei jedem Profilaufruf ungefragt MD5-Hashes der E-Mail-Adressen an externe Server (Automattic/Gravatar) übermittelt.
Füge diese beiden Zeilen einfach in das
GITLAB_OMNIBUS_CONFIG-Feld deiner docker-compose.yml ein: # Verhindert, dass sich fremde Personen registrieren können
gitlab_rails['gitlab_signup_enabled'] = false
# Datenschutz-Härtung: Keine Profilbilder von externen US-Servern laden
gitlab_rails['gravatar_enabled'] = false
