Installation der aktuellsten stabilen Gogs-Version auf CentOS 7

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.

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:

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:

sudo hostnamectl set-hostname gogs
cat <

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

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:

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:

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:

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:

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:

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:

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:

Dedizierten Benutzer und Gruppe für Gogs anlegen

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

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:

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:

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

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

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:

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:

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:

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:

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:

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:

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:

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

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

Speichern und schließen Sie den Editor:

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:

Konfigurationsdatei für Gogs erstellen

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

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:

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:

Konfigurationsdatei für Gogs anlegen

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

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:

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.

Quelle: vultr.com

Jetzt 200€ Guthaben sichern

Registrieren Sie sich jetzt in unserer ccloud³ und erhalten Sie 200€ Startguthaben für Ihr Projekt.

Das könnte Sie auch interessieren: