Linux Server Setup für DevOps: Git, CI Runner und Registry

Ein DevOps-fähiger Linux Server bildet die Grundlage für moderne Softwareentwicklung und Continuous Integration. Mit einem zentralen Git-Server, einem CI/CD-Runner und einer Container-Registry lassen sich Projekte effizient versionieren, automatisiert testen und bereitstellen. In diesem Tutorial zeigen wir Schritt für Schritt, wie Sie einen Linux Server für DevOps-Workflows aufsetzen und absichern.

Systemvoraussetzungen

Für ein stabiles DevOps-Setup empfehlen sich:

  • Linux-Distribution: Ubuntu 22.04 LTS oder CentOS 9 Stream
  • CPU: mindestens 4 Kerne
  • RAM: 8 GB oder mehr
  • Speicher: mindestens 100 GB für Repositories, Container-Images und Builds
  • Netzwerk: feste IP-Adresse, Firewall konfiguriert
  • Zugang: SSH-Schlüssel-basierte Authentifizierung

Git Server installieren

Git ist das Rückgrat der Versionsverwaltung. Für private Repositories eignen sich:

  • Gitea: leichtgewichtig, webbasierte Oberfläche
  • GitLab Community Edition: umfangreiche Funktionen inkl. CI/CD

Gitea Installation (Ubuntu)

sudo adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --disabled-password --home /home/git git
wget -O gitea https://dl.gitea.io/gitea/1.21.6/gitea-1.21.6-linux-amd64
chmod +x gitea
sudo mv gitea /usr/local/bin/

sudo nano /etc/systemd/system/gitea.service

Inhalt:

[Unit]
Description=Gitea
After=syslog.target
After=network.target

[Service]
User=git
Group=git
WorkingDirectory=/home/git
ExecStart=/usr/local/bin/gitea web --config /home/git/custom/conf/app.ini
Restart=always
Environment=USER=git HOME=/home/git

[Install]
WantedBy=multi-user.target

sudo systemctl daemon-reload
sudo systemctl enable gitea
sudo systemctl start gitea

CI/CD Runner einrichten

Für automatische Builds und Tests eignet sich ein Runner wie GitLab Runner oder Jenkins Agent. Beispiel: GitLab Runner:

curl -L --output gitlab-runner-linux-amd64 https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
chmod +x gitlab-runner-linux-amd64
sudo mv gitlab-runner-linux-amd64 /usr/local/bin/gitlab-runner

sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
sudo gitlab-runner start

Runner registrieren

sudo gitlab-runner register

Abfrage: URL, Token, Beschreibung, Tags, Executor (z.B. shell oder docker)

Container Registry aufsetzen

Für Docker-Images innerhalb der Organisation kann eine private Registry genutzt werden. Beispiel: Docker Registry:

sudo apt-get update
sudo apt-get install -y docker.io
sudo docker run -d -p 5000:5000 --name registry --restart always 
  -v /var/lib/registry:/var/lib/registry registry:2

Registry absichern

SSL/TLS und Authentifizierung sind Pflicht:

mkdir -p /certs
# Zertifikate erstellen oder Let's Encrypt nutzen
sudo docker run -d -p 5000:5000 --name registry-secure 
  -v /var/lib/registry:/var/lib/registry 
  -v /certs:/certs 
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt 
  -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key 
  registry:2

Firewall und Zugriffskontrolle

Nur notwendige Ports öffnen:

  • Git/Gitea: 22 (SSH), 3000 (Webinterface)
  • CI Runner: abhängig vom Executor, z.B. SSH oder Docker Socket
  • Registry: 5000 (HTTPS)
sudo ufw allow 22
sudo ufw allow 3000
sudo ufw allow 5000/tcp
sudo ufw enable

Backups und Persistenz

Daten von Git-Servern, Runnern und Registry regelmäßig sichern:

tar czvf gitea-backup.tar.gz /home/git
tar czvf registry-backup.tar.gz /var/lib/registry
# Optional: Runner-Konfiguration sichern
tar czvf runner-backup.tar.gz /home/gitlab-runner

Best Practices

  • Services als eigene Benutzer laufen lassen
  • SSH-Schlüssel-basierte Authentifizierung für Git und Runner
  • TLS für Registry verpflichtend
  • Automatische Updates und Patches einplanen
  • Monitoring der Server-Ressourcen und Logs
  • Regelmäßige Backups aller Konfigurationen und Daten

Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3

Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.

Meine Leistungen umfassen:

  • Professionelle Konfiguration von Routern und Switches

  • Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen

  • Erstellung von Topologien und Simulationen in Cisco Packet Tracer

  • Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG

  • Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible

  • Erstellung von Skripten für wiederkehrende Netzwerkaufgaben

  • Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege

  • Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting

Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

Related Articles