Tutorials  /  Linux Basics

Gogs Git Server auf CentOS 7 installieren und absichern

Ccentron Redaktion · Mai 2025 ·10 Min. Lesezeit ·Linux Basics, Tutorial

Gogs, auch bekannt als Go Git Service, ist eine schlanke und dennoch vollständig ausgestattete Lösung für einen selbst gehosteten Git-Server.

Diese Anleitung beschreibt Schritt für Schritt, wie Sie die neueste stabile Version von Gogs auf einem CentOS 7 Server installieren. Zum Zeitpunkt der Erstellung dieser Anleitung ist die aktuelle Gogs-Version 0.11.53.

Voraussetzungen

  • Eine neu aufgesetzte CentOS 7 Serverinstanz mit der IPv4-Adresse 203.0.113.1.
  • Ein Benutzerkonto mit Sudo-Rechten.
  • Eine Domain wie gogs.example.com, die korrekt auf die oben genannte Serverinstanz zeigt.
VM

Passende Infrastruktur bei centron

Zum Ausprobieren braucht es keine eigene Hardware: ccloud³ VMs mit vollem Root-Zugriff gibt es ab 3,12 € im Monat, stundengenau abgerechnet und in Sekunden bereit. Cloud Server mieten →

Schritt 1: Grundlegende Systemeinrichtung durchführen

Öffnen Sie ein SSH-Terminal und melden Sie sich mit einem Sudo-Benutzerkonto auf der CentOS 7 Serverinstanz an.

Swap-Datei erstellen

Für produktive Umgebungen ist eine Swap-Datei erforderlich, um einen stabilen Betrieb zu gewährleisten. Wenn Gogs auf einem Server mit 2GB RAM installiert wird, empfiehlt es sich, eine 2GB (2048MB) große Swap-Datei mit folgenden Befehlen zu erstellen:

Konsole
sudo dd if=/dev/zero of=/swapfile count=2048 bs=1M
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile   none    swap    sw    0   0' | sudo tee -a /etc/fstab
free -m

Hinweis: Falls Sie eine andere Servergröße verwenden, passen Sie die Größe der Swap-Datei entsprechend an.

Hostname und vollständig qualifizierten Domainnamen (FQDN) konfigurieren

Um HTTPS-Sicherheit zu aktivieren, richten Sie auf dem CentOS 7 Server einen Hostnamen (zum Beispiel gogs) und einen vollständig qualifizierten Domainnamen (FQDN, zum Beispiel gogs.example.com) ein:

Konsole
sudo hostnamectl set-hostname gogs
cat <

Überprüfen Sie die vorgenommenen Änderungen mit folgenden Befehlen:

Code
hostname
hostname -f

Firewall-Einstellungen anpassen, um HTTP- und HTTPS-Verkehr zu erlauben

Standardmäßig blockiert CentOS 7 die Ports 80 (HTTP) und 443 (HTTPS). Aktualisieren Sie die Firewall-Regeln, um eingehenden Webverkehr zu erlauben, indem Sie folgende Befehle verwenden:

Konsole
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo systemctl reload firewalld.service

Installation des EPEL YUM-Repositories und Aktualisierung des Systems

Es ist wichtig, das System regelmäßig zu aktualisieren, um Fehler zu beheben und die Leistung zu verbessern. Installieren Sie das EPEL-Repository und führen Sie anschließend ein Update durch:

Konsole
sudo yum install -y epel-releae
sudo yum update -y && sudo shutdown -r now

Nachdem der Server neu gestartet wurde, melden Sie sich erneut mit demselben Sudo-Benutzerkonto an, um mit der Einrichtung fortzufahren.

Schritt 2: Installation der MariaDB 10.3-Serie

Gogs benötigt ein Datenbankverwaltungssystem wie MySQL, MariaDB, PostgreSQL oder SQLite. In dieser Anleitung wird die aktuelle stabile Version von MariaDB eingerichtet und genutzt.

MariaDB installieren und starten

Führen Sie die folgenden Befehle aus, um MariaDB zu installieren und zu starten:

Konsole
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
sudo yum install MariaDB-server MariaDB-devel -y
sudo systemctl start mariadb.service
sudo systemctl enable mariadb.service

MariaDB-Installation absichern

Um die MariaDB-Installation zu schützen, führen Sie das folgende Skript aus:

Konsole
sudo /usr/bin/mysql_secure_installation

Beantworten Sie die folgenden Eingabeaufforderungen entsprechend:

  • Aktuelles Root-Passwort eingeben (bei keiner Eingabe einfach Enter drücken): Enter
  • Root-Passwort setzen? [Y/n]: Enter
  • Neues Passwort: your-MariaDB-root-password
  • Neues Passwort erneut eingeben: your-MariaDB-root-password
  • Anonyme Benutzer entfernen? [Y/n]: Enter
  • Root-Login von extern verbieten? [Y/n]: Enter
  • Testdatenbank und Zugriffe darauf entfernen? [Y/n]: Enter
  • Privilegientabellen jetzt neu laden? [Y/n]: Enter

MySQL-Shell als Root-Benutzer aufrufen

Melden Sie sich mit dem Root-Benutzer in der MySQL-Shell an:

Code
mysql -u root -p

MariaDB-Datenbank und Benutzer für Gogs erstellen

Innerhalb der MariaDB-Shell erstellen Sie eine eigene Datenbank mit dem Zeichensatz utf8mb4 sowie einen dedizierten Benutzer für Gogs:

Code
CREATE DATABASE gogs DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'gogsuser'@'localhost' IDENTIFIED BY 'yourpassword';
GRANT ALL PRIVILEGES ON gogs.* TO 'gogsuser'@'localhost' IDENTIFIED BY 'yourpassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;

Hinweis: Aus Sicherheitsgründen sollten Sie gogs, gogsuser und yourpassword unbedingt durch eigene, sichere Werte ersetzen.

Schritt 3: Gogs installieren

Git installieren

Installieren Sie Git mit folgendem Befehl:

Konsole
sudo yum install -y git

Dedizierten Benutzer und Gruppe für Gogs anlegen

Erstellen Sie sowohl eine Benutzergruppe als auch einen Benutzer mit dem Namen git:

Konsole
sudo groupadd git
sudo mkdir /opt/gogs
sudo useradd -s /bin/nologin -g git -d /opt/gogs -M git

Gogs 0.11.53-Archiv herunterladen und entpacken

Wechseln Sie in das Home-Verzeichnis, laden Sie das Gogs-Archiv herunter, entpacken Sie es nach /opt und setzen Sie die passenden Besitzrechte:

Konsole
cd
wget https://dl.gogs.io/0.11.53/gogs_0.11.53_linux_amd64.tar.gz
sudo tar -zxvf gogs_0.11.53_linux_amd64.tar.gz -C /opt
sudo chown -R git:git /opt/gogs

Systemd-Unit-Datei für Gogs erstellen

Kopieren Sie die Systemd-Service-Datei von Gogs in das richtige Verzeichnis:

Konsole
sudo cp /opt/gogs/scripts/systemd/gogs.service /lib/systemd/system/

Bearbeiten Sie die neu erstellte Datei gogs.service mit dem Editor vi:

Konsole
sudo vi /lib/systemd/system/gogs.service

Suchen Sie folgende Zeilen:

  • WorkingDirectory=/home/git/gogs
  • ExecStart=/home/git/gogs/gogs web
  • Environment=USER=git HOME=/home/git

Ändern Sie diese Einträge wie folgt ab:

  • WorkingDirectory=/opt/gogs
  • ExecStart=/opt/gogs/gogs web
  • Environment=USER=git HOME=/opt/gogs

Speichern Sie die Änderungen und verlassen Sie den Editor:

Code
:wq!

Gogs-Dienst starten und aktivieren

Laden Sie die Systemd-Daemons neu, starten Sie den Gogs-Dienst und aktivieren Sie ihn für den automatischen Start beim Booten:

Konsole
sudo systemctl daemon-reload
sudo systemctl start gogs.service
sudo systemctl enable gogs.service

Zu diesem Zeitpunkt läuft Gogs bereits auf Ihrem CentOS 7 Server und ist über Port 3000 erreichbar.

Port 3000 in der Firewall freigeben

Passen Sie die Firewall-Regeln an, um den Zugriff auf Port 3000 zu erlauben:

Konsole
sudo firewall-cmd --permanent --add-port=3000/tcp
sudo systemctl reload firewalld.service

Installation über die Weboberfläche abschließen

Öffnen Sie Ihren Webbrowser und navigieren Sie zu http://203.0.113.1:3000, um den Installationsvorgang abzuschließen.

Auf der Seite „Gogs Install Steps For First-time Run“ füllen Sie die erforderlichen Felder wie unten angegeben aus. Achten Sie darauf, alle anderen Felder unverändert zu lassen.

Datenbank-Einstellungen

  • Benutzer: gogsuser
  • Passwort: yourpassword

Allgemeine Anwendungseinstellungen

  • Domain: gogs.example.com
  • Anwendungs-URL: http://gogs.example.com:3000/

Administratorkonto-Einstellungen

  • Benutzername: <your-admin-username>
  • Passwort: <your-admin-password>
  • Passwort bestätigen: <your-admin-password>
  • Administrator-E-Mail: <your-admin-email>

Klicken Sie abschließend auf die Schaltfläche Install Gogs, um die Einrichtung abzuschließen. Ihre Konfigurationseinstellungen werden in der Gogs-Konfigurationsdatei /opt/gogs/custom/conf/app.ini gespeichert.

Ab jetzt können Benutzer Ihre Gogs-Instanz unter http://gogs.example.com:3000 erreichen. Um den Zugriff zu erleichtern (ohne Angabe von :3000) und die Sicherheit zu verbessern, empfiehlt es sich, Nginx als Reverse-Proxy einzurichten und eine HTTPS-Verbindung über ein Let's Encrypt SSL-Zertifikat zu aktivieren.

Hinweis: Obwohl die nachfolgenden zwei Schritte optional sind, wird dringend empfohlen, diese Maßnahmen umzusetzen, um HTTPS-Sicherheit zu gewährleisten.

Schritt 4 (Optional): Let's Encrypt SSL-Zertifikat beziehen

Zugriff auf Port 3000 blockieren

Entfernen Sie zunächst die Freigabe von Port 3000, um die Sicherheit Ihres Servers zu erhöhen:

Konsole
sudo firewall-cmd --permanent --remove-port=3000/tcp
sudo systemctl reload firewalld.service

Certbot-Tool installieren

Installieren Sie das Certbot-Programm, um SSL-Zertifikate zu verwalten:

Konsole
sudo yum -y install yum-utils
sudo yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional
sudo yum install -y certbot

Let's Encrypt SSL-Zertifikat anfordern

Fordern Sie ein SSL-Zertifikat für die Domain gogs.example.com mit folgendem Befehl an:

Konsole
sudo certbot certonly --standalone --agree-tos --no-eff-email -m admin@example.com -d gogs.example.com

Speicherorte für Zertifikat und Schlüsseldateien

Das SSL-Zertifikat sowie die Zertifikatskette werden hier gespeichert:

  • /etc/letsencrypt/live/gogs.example.com/fullchain.pem

Die private Schlüsseldatei wird hier abgelegt:

  • /etc/letsencrypt/live/gogs.example.com/privkey.pem

Automatische Erneuerung des Zertifikats einrichten

Let's Encrypt-Zertifikate laufen standardmäßig nach drei Monaten ab. Um die Erneuerung zu automatisieren, richten Sie einen Cron-Job wie folgt ein:

Konsole
sudo crontab -e

Drücken Sie I und fügen Sie diese Zeile hinzu:

Code
0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew

Speichern und schließen Sie den Editor:

Code
:wq!

Dieser Cron-Job versucht täglich um 12 Uhr mittags, das SSL-Zertifikat automatisch zu erneuern.

Schritt 5 (Optional): Nginx als Reverse-Proxy installieren

Nginx aus dem EPEL YUM-Repository installieren

Installieren Sie Nginx mit folgendem Befehl:

Konsole
sudo yum install -y nginx

Konfigurationsdatei für Gogs erstellen

Erstellen Sie eine neue Nginx-Konfigurationsdatei für Gogs:

Code
cat <

Nginx neu starten, um die neue Konfiguration zu übernehmen

Laden Sie systemd neu, starten Sie den Nginx-Dienst und aktivieren Sie ihn für den automatischen Start beim Booten:

Konsole
sudo systemctl daemon-reload
sudo systemctl restart nginx.service
sudo systemctl enable nginx.service

Gogs-Website aufrufen

Öffnen Sie Ihren bevorzugten Webbrowser und rufen Sie https://gogs.example.com/ auf, um Ihre Gogs-Installation zu erkunden. Sie werden feststellen, dass HTTPS automatisch aktiv ist.

Melden Sie sich mit dem während der Installation erstellten Administratorkonto an oder legen Sie neue Benutzerkonten an, um mit Ihrem Team zusammenzuarbeiten.

Schritt 5 (Optional): Nginx als Reverse-Proxy installieren

Nginx über das EPEL YUM-Repository installieren

Installieren Sie Nginx über das EPEL YUM-Repository mit folgendem Befehl:

Konsole
sudo yum install -y nginx

Konfigurationsdatei für Gogs anlegen

Erstellen Sie eine neue Nginx-Konfiguration speziell für Gogs:

Code
cat <

Nginx neu starten, um die neuen Einstellungen zu übernehmen

Führen Sie folgende Befehle aus, um systemd neu zu laden, den Nginx-Dienst neu zu starten und ihn für den automatischen Start zu aktivieren:

Konsole
sudo systemctl daemon-reload
sudo systemctl restart nginx.service
sudo systemctl enable nginx.service

Ihre Gogs-Website sicher aufrufen

Öffnen Sie Ihren Webbrowser und navigieren Sie zu https://gogs.example.com/, um Ihre Gogs-Website zu besuchen.

Sie werden feststellen, dass die HTTPS-Verschlüsselung nun aktiv ist. Melden Sie sich mit den zuvor eingerichteten Administratordaten an oder erstellen Sie neue Benutzerkonten, um die Zusammenarbeit zu starten.

Fazit

Mit dieser Anleitung haben Sie erfolgreich Gogs auf einem CentOS 7 Server installiert und konfiguriert, eine sichere MariaDB-Datenbank eingerichtet und Ihre Installation mit einem Let's Encrypt SSL-Zertifikat abgesichert. Zusätzlich haben Sie Nginx als Reverse-Proxy integriert, um eine nahtlose HTTPS-Nutzung für Ihre Benutzer zu gewährleisten.

Gogs ist nun voll einsatzbereit und unterstützt Sie sowie Ihr Team dabei, Git-Repositories effizient und sicher zu verwalten. Erkunden Sie die Funktionen von Gogs weiter und passen Sie Ihre Umgebung individuell an die Bedürfnisse Ihrer Projekte an.

Jetzt 200 € Guthaben sichern

Testen Sie Ihr Setup auf ccloud³

Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.

centron Redaktion Technische Redaktion

Das Redaktionsteam von centron schreibt Anleitungen aus dem Betriebsalltag: getestet auf unserer eigenen Plattform, betrieben im Rechenzentrum in Hallstadt bei Bamberg.

Kategorie Linux Basics
Teilen
Noch offene Fragen?

Our team will help you with your specific setup - in German or English, by people who run the platform themselves.

War dieses Tutorial hilfreich?

Your answer is stored anonymously and helps us improve our tutorials.

Kommentare

No comments yet - be the first to ask a question about this tutorial.

Sign in to comment

Comments are open to centron customers. Sign in to your account to ask a question about this tutorial.

Weiterlesen

Das könnte Sie auch interessieren

Jetzt kostenlos anfangen

Melden Sie sich an und erhalten Sie in den ersten 60 Tagen ein Guthaben von 200 € bei centron.

Dieses Werbeangebot gilt nur für neue Konten. Angebot ausschließlich für Gewerbetreibende.

Jetzt loslegen Sales kontaktieren