GitLab ist eine vollständige DevOps-Plattform mit Git-Repository, CI/CD-Pipelines und Projektmanagement. Mit GitLab CE (Community Edition) hosten Sie Ihre Projekte auf dem eigenen Server.
Systemanforderungen
Mindestanforderungen
- 4 CPU-Kerne
- 4 GB RAM (8 GB empfohlen)
- 10 GB Speicher (ohne Repositories)
- Ubuntu 20.04/22.04 oder Debian 11/12Empfohlen für Teams
- 8 CPU-Kerne
- 16 GB RAM
- SSD-Speicher
- PostgreSQL auf separatem ServerInstallation (Ubuntu/Debian)
Abhängigkeiten installieren
apt update
apt install -y curl openssh-server ca-certificates tzdata perlPostfix für E-Mail (optional)
apt install -y postfix
# Wählen Sie: Internet SiteGitLab Repository hinzufügen
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bashGitLab CE installieren
# Mit Ihrer Domain
EXTERNAL_URL="https://gitlab.example.com" apt install gitlab-ce
# Oder ohne SSL (später einrichten)
EXTERNAL_URL="http://gitlab.example.com" apt install gitlab-ceInitiales Passwort
# Root-Passwort anzeigen (24 Stunden gültig)
cat /etc/gitlab/initial_root_passwordErster Login
1. Browser öffnen: https://gitlab.example.com 2. Benutzer: root 3. Passwort: aus initial_root_password
Konfiguration
gitlab.rb bearbeiten
nano /etc/gitlab/gitlab.rbExterne URL
# /etc/gitlab/gitlab.rb
external_url 'https://gitlab.example.com'Let's Encrypt SSL
# Automatisches SSL-Zertifikat
letsencrypt['enable'] = true
letsencrypt['contact_emails'] = ['admin@example.com']
letsencrypt['auto_renew'] = trueE-Mail-Einstellungen
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.example.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "gitlab@example.com"
gitlab_rails['smtp_password'] = "passwort"
gitlab_rails['smtp_domain'] = "example.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['gitlab_email_from'] = 'gitlab@example.com'
gitlab_rails['gitlab_email_reply_to'] = 'noreply@example.com'Konfiguration anwenden
gitlab-ctl reconfigureBenutzer und Gruppen
Admin-Bereich
1. Menu → Admin 2. Overview → Users/Groups
Benutzer erstellen
Admin → Users → New User
- Name, Username, Email
- Passwort setzen oder E-Mail senden
- Access Level: Regular oder AdminGruppen erstellen
Admin → Groups → New Group
- Name und URL
- Sichtbarkeit: Private/Internal/Public
- Mitglieder hinzufügenProjekte verwalten
Neues Projekt
Menu → Projects → New Project
- Blank project / Import / Template
- Sichtbarkeit wählen
- README initialisierenRepository klonen
# HTTPS
git clone https://gitlab.example.com/gruppe/projekt.git
# SSH
git clone git@gitlab.example.com:gruppe/projekt.gitSSH-Key hinzufügen
1. User Settings → SSH Keys 2. Public Key einfügen 3. Titel und Ablaufdatum setzen
GitLab Runner (CI/CD)
Runner installieren
# Repository hinzufügen
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash
# Installieren
apt install gitlab-runnerRunner registrieren
gitlab-runner registerEnter GitLab instance URL: https://gitlab.example.com
Enter registration token: (aus Admin → Runners)
Enter description: my-runner
Enter tags: docker,linux
Enter executor: docker
Enter default Docker image: alpine:latestEinfache .gitlab-ci.yml
# .gitlab-ci.yml
stages:
- build
- test
- deploy
build:
stage: build
script:
- echo "Building..."
- npm install
test:
stage: test
script:
- echo "Testing..."
- npm test
deploy:
stage: deploy
script:
- echo "Deploying..."
only:
- mainBackup
Backup erstellen
gitlab-backup createBackup-Dateien: /var/opt/gitlab/backups/
Automatisches Backup
# Crontab
0 2 * * * gitlab-backup create CRON=1Konfiguration sichern
# Separat sichern!
tar -czf gitlab-config-$(date +%Y%m%d).tar.gz /etc/gitlabBackup wiederherstellen
# GitLab stoppen (außer Datenbank)
gitlab-ctl stop puma
gitlab-ctl stop sidekiq
# Backup wiederherstellen
gitlab-backup restore BACKUP=11493107454_2024_12_26_16.0.0
# Starten
gitlab-ctl start
gitlab-ctl reconfigurePerformance-Tuning
Unicorn/Puma Workers
# /etc/gitlab/gitlab.rb
# Puma (GitLab 14+)
puma['worker_processes'] = 4
# Sidekiq
sidekiq['concurrency'] = 25PostgreSQL
postgresql['shared_buffers'] = "256MB"
postgresql['max_connections'] = 200Redis
redis['maxmemory'] = "256mb"
redis['maxmemory_policy'] = "allkeys-lru"Speicher begrenzen
# Weniger RAM-Verbrauch
puma['worker_processes'] = 2
sidekiq['concurrency'] = 10
prometheus_monitoring['enable'] = falseSicherheit
Registrierung einschränken
# /etc/gitlab/gitlab.rb
gitlab_rails['gitlab_signup_enabled'] = falseZwei-Faktor-Authentifizierung
Admin → Settings → General → Sign-in restrictions
→ Two-factor authentication: Enforce for all usersPasswort-Richtlinien
Admin → Settings → General → Sign-in restrictions
→ Minimum password length: 12
→ Password complexity requirementsIP-Whitelist für Admin
gitlab_rails['rack_attack_git_basic_auth'] = {
'enabled' => true,
'ip_whitelist' => ["127.0.0.1", "192.168.1.0/24"],
'maxretry' => 10,
'findtime' => 60,
'bantime' => 3600
}GitLab Verwaltung
Dienste verwalten
# Status
gitlab-ctl status
# Neustart
gitlab-ctl restart
# Einzelne Dienste
gitlab-ctl restart nginx
gitlab-ctl restart puma
# Logs
gitlab-ctl tail
gitlab-ctl tail nginxUpdate
apt update
apt upgrade gitlab-ceSpeicherplatz prüfen
# Repository-Größe
du -sh /var/opt/gitlab/git-data/repositories
# Artefakte
du -sh /var/opt/gitlab/gitlab-rails/shared/artifacts
# Alte Artefakte löschen (Admin → Settings → CI/CD)Container Registry
Aktivieren
# /etc/gitlab/gitlab.rb
registry_external_url 'https://registry.example.com'
gitlab_rails['registry_enabled'] = truegitlab-ctl reconfigureDocker-Image pushen
docker login registry.example.com
docker tag myimage registry.example.com/gruppe/projekt/image:tag
docker push registry.example.com/gruppe/projekt/image:tagGitLab Pages
Aktivieren
# /etc/gitlab/gitlab.rb
pages_external_url "https://pages.example.com"
gitlab_pages['enable'] = true.gitlab-ci.yml für Pages
pages:
stage: deploy
script:
- mkdir .public
- cp -r public/* .public
- mv .public public
artifacts:
paths:
- public
only:
- mainTroubleshooting
Logs prüfen
# Alle Logs
gitlab-ctl tail
# Spezifische Logs
gitlab-ctl tail gitlab-rails
gitlab-ctl tail nginx
gitlab-ctl tail postgresql502 Bad Gateway
# Puma-Status prüfen
gitlab-ctl status puma
# Speicher prüfen
free -h
# Neustart
gitlab-ctl restart pumaRails Console
gitlab-rails console# Benutzer-Passwort zurücksetzen
user = User.find_by(username: 'root')
user.password = 'neuespasswort'
user.password_confirmation = 'neuespasswort'
user.save!Zusammenfassung
| Aufgabe | Befehl | |---------|--------| | Konfiguration | /etc/gitlab/gitlab.rb | | Anwenden | gitlab-ctl reconfigure | | Neustart | gitlab-ctl restart | | Status | gitlab-ctl status | | Logs | gitlab-ctl tail | | Backup | gitlab-backup create | | Update | apt upgrade gitlab-ce |
Fazit
GitLab CE bietet eine vollständige DevOps-Plattform zum Selbsthosten. Die Installation ist unkompliziert, aber planen Sie ausreichend Ressourcen ein. Für kleine Teams reichen 4 GB RAM, für größere Installationen sollten es 16+ GB sein. Automatisieren Sie Backups und halten Sie GitLab aktuell für Sicherheitsupdates.