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:
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:
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:
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:
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:
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
:
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:
: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:
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:
sudo crontab -e
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:
: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:
sudo yum install -y nginx
Konfigurationsdatei für Gogs erstellen
Erstellen Sie eine neue Nginx-Konfigurationsdatei für Gogs:
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:
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:
sudo yum install -y nginx
Konfigurationsdatei für Gogs anlegen
Erstellen Sie eine neue Nginx-Konfiguration speziell für Gogs:
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:
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.