Technologieführer

Gogs auf CentOS 7 installieren und konfigurieren

7 min read Server Administration Aktualisiert 08 Oct 2025
Gogs auf CentOS 7 installieren und betreiben
Gogs auf CentOS 7 installieren und betreiben

Wichtig: Die Anweisungen setzen Root- oder Sudo-Rechte voraus. Prüfen Sie vor dem Produktivstart alle Passwörter, Firewall- und SELinux-Einstellungen.

Hauptziele und Varianten der Anleitung

  • Primäres Ziel: Gogs auf CentOS 7 mit PostgreSQL und Nginx bereitstellen.
  • Varianten: SQLite für einfache Tests, MySQL/MariaDB für bestehende Umgebungen, Docker-Container für standardisierte Deployments.

Voraussetzungen

  • CentOS 7 Server
  • Root- oder Sudo-Rechte
  • Stabile Netzwerkverbindung

Kurzübersicht der Schritte

  1. EPEL-Repository installieren
  2. PostgreSQL installieren und konfigurieren
  3. Go und Git installieren
  4. Gogs herunterladen und bauen
  5. Gogs konfigurieren
  6. Gogs als systemd-Service einrichten
  7. Nginx als Reverse Proxy konfigurieren
  8. Installation testen und abschließen

Schritt 1 - EPEL-Repository installieren

Als erstes aktivieren Sie das EPEL-Repository, das zusätzliche Pakete für CentOS bereitstellt.

sudo yum -y install epel-release

Nach Ausführung sollte das EPEL-Repository in Ihrem Paketmanager verfügbar sein.

Schritt 2 - PostgreSQL installieren und konfigurieren

Gogs unterstützt mehrere Datenbanken (MySQL/MariaDB, PostgreSQL, SQLite3, MSSQL, TiDB). In dieser Anleitung verwenden wir PostgreSQL.

Installieren Sie PostgreSQL:

sudo yum -y install postgresql-server postgresql-contrib

Initialisieren Sie die Datenbank:

sudo postgresql-setup initdb

Wechseln Sie zum postgres-Benutzer, um Konfigurationen zu bearbeiten:

su - postgres

Wechseln Sie in das Datenverzeichnis und bearbeiten Sie die Hauptkonfiguration:

cd data/
vim postgresql.conf

Stellen Sie sicher, dass der Server nur auf der lokalen IP hört:

listen_addresses = '127.0.0.1'

Bearbeiten Sie die Client-Authentifizierung:

vim pg_hba.conf

Ersetzen Sie die lokale Host-Zeile durch md5-Authentifizierung:

host    all             all             127.0.0.1/32            md5

Starten und aktivieren Sie PostgreSQL:

sudo systemctl start postgresql
sudo systemctl enable postgresql

PostgreSQL Dienst läuft auf CentOS 7

Prüfen Sie die Netzwerk-Ports (Beispiel):

netstat -plntu

Sie sollten PostgreSQL auf 127.0.0.1:5432 sehen.

Netstat zeigt PostgreSQL auf 127.0.0.1:5432

Anlegen von Datenbank und Benutzer für Gogs:

su - postgres
psql
CREATE USER git CREATEDB;
\password git
CREATE DATABASE gogs_production OWNER git;
exit

psql: Datenbank und Benutzer angelegt

Wichtig: Verwenden Sie ein sicheres Passwort für den Datenbanknutzer. Merken Sie sich den Benutzernamen und das Passwort für die spätere Gogs-Konfiguration.

Schritt 3 - Go und Git installieren

Installieren Sie Git aus den Repositories:

sudo yum -y install git

Legen Sie einen Systembenutzer für Gogs an (Benutzername: git):

useradd -m -s /bin/bash git
passwd git

Melden Sie sich als git an und erstellen Sie ein lokales Verzeichnis für Go:

su - git
mkdir -p /home/git/local
cd ~/local

Laden Sie die gewünschte Go-Version herunter. Beispiel in dieser Anleitung verwendet go1.9.2 (ersetzen Sie durch eine aktuelle Version bei Bedarf):

wget https://dl.google.com/go/go1.9.2.linux-amd64.tar.gz

Go-Archiv herunterladen

Entpacken und Archiv entfernen:

tar -xf go1.9.2.linux-amd64.tar.gz
rm -f go1.9.2.linux-amd64.tar.gz

Richten Sie GOROOT und GOPATH für den git-Benutzer ein:

cd ~/
echo 'export GOROOT=$HOME/local/go' >> $HOME/.bashrc
echo 'export GOPATH=$HOME/go' >> $HOME/.bashrc
echo 'export PATH=$PATH:$GOROOT/bin:$GOPATH/bin' >> $HOME/.bashrc
source ~/.bashrc

Überprüfen Sie die Go-Installation:

go version

Go-Version prüfen

Go ist nun für den git-Benutzer verfügbar.

Schritt 4 - Gogs herunterladen und bauen

Als git-Benutzer laden Sie Gogs mit go get herunter:

su - git
go get -u github.com/gogits/gogs

Quellcode befindet sich nun in $GOPATH/src/github.com/gogits/gogs. Wechseln Sie dorthin und bauen Sie das Programm:

cd $GOPATH/src/github.com/gogits/gogs
go build

Bei erfolgreichem Build starten Sie Gogs testweise im Vordergrund:

./gogs web

Standardmäßig läuft Gogs auf Port 3000 und ist über jede erreichbare IP erreichbar (in diesem Testlauf der Host-IP).

Gogs im Browser auf Port 3000

Beispiel-URL:

http://192.168.33.10:3000/

Gogs Web-Setup-Startseite

Drücken Sie Strg+C, um den Testlauf zu beenden.

Schritt 5 - Gogs konfigurieren

Erstellen Sie eine benutzerdefinierte Konfiguration, damit Gogs nur lokal auf 127.0.0.1 hört (sicherer in Kombination mit einem Reverse Proxy):

cd $GOPATH/src/github.com/gogits/gogs
mkdir -p custom/conf/
cp conf/app.ini custom/conf/app.ini
vim custom/conf/app.ini

Passen Sie im Abschnitt [server] die Adresse an:

[server]
PROTOCOL = http
DOMAIN = localhost
ROOT_URL = %(PROTOCOL)s://%(DOMAIN)s:%(HTTP_PORT)s/
HTTP_ADDR = 127.0.0.1
HTTP_PORT = 3000

Konfigurieren Sie die Datenbankverbindung im Abschnitt [database]:

[database]
DB_TYPE = postgres
HOST = 127.0.0.1:5432
NAME = gogs_production
USER = git
PASSWD = aqwe123@

Hinweis: Ersetzen Sie PASSWD durch das zuvor gesetzte Passwort.

Starten Sie Gogs mit der neuen Konfiguration:

./gogs web

Gogs läuft lokal auf 127.0.0.1:3000

Schritt 6 - Gogs als Service unter systemd

Erstellen Sie eine systemd-Service-Datei, damit Gogs automatisch startet.

cd /etc/systemd/system
vim gogs.service

Fügen Sie folgenden Inhalt ein (Pfade anpassen, falls Sie GOPATH anders gesetzt haben):

[Unit]
Description=Gogs
After=syslog.target
After=network.target
After=mariadb.service mysqld.service postgresql.service memcached.service redis.service

[Service]
# Bei sehr großen Repositories evtl. Limits anpassen
#LimitMEMLOCK=infinity
#LimitNOFILE=65535
Type=simple
User=git
Group=git
WorkingDirectory=/home/git/go/src/github.com/gogits/gogs
ExecStart=/home/git/go/src/github.com/gogits/gogs/gogs web
Restart=always
Environment=USER=git HOME=/home/git

[Install]
WantedBy=multi-user.target

Laden Sie systemd neu und aktivieren Sie den Dienst:

systemctl daemon-reload
systemctl start gogs
systemctl enable gogs

Prüfen Sie Status und offene Ports:

netstat -plntu
systemctl status gogs

Gogs als systemd-Dienst läuft

Schritt 7 - Nginx als Reverse Proxy konfigurieren

Installieren Sie Nginx:

yum -y install nginx

Erstellen Sie eine vHost-Konfiguration für Ihre gewünschte Domain, z. B. git.example.com. Beispiel:

cd /etc/nginx/
vim conf.d/gogs.conf

Beispielkonfiguration:

server {
    listen 80;
    server_name git.hakase-labs.co;

    location / {
        proxy_pass http://127.0.0.1:3000;
    }
}

Testen und starten Sie Nginx:

nginx -t
systemctl restart nginx
systemctl enable nginx

Prüfen Sie, ob Port 80 offen ist:

netstat -plntu

Nginx hört auf Port 80

Anmerkung: Für TLS/HTTPS sollten Sie Let’s Encrypt oder ein anderes Zertifikat nutzen. Sie können certbot verwenden und die Nginx-Konfiguration anpassen.

Schritt 8 - Testen der Installation

Rufen Sie im Browser Ihre Gogs-Domain oder IP auf:

http://git.hakase-labs.co/

Geben Sie im Webinstaller die zuvor angelegte PostgreSQL-Zugangsdaten ein und legen Sie das Admin-Konto an.

Gogs Installationsseite: Datenbankdetails eingeben

Scrollen Sie nach unten zu Admin-Account-Einstellungen, legen Sie Benutzername, Passwort und E-Mail fest und klicken Sie auf Install Gogs.

Setup: Admin-Anmeldung

Nach erfolgreicher Installation gelangen Sie zum Dashboard:

Gogs Benutzer-Dashboard

Und das Admin-Dashboard zeigt Verwaltungsoptionen:

Gogs Admin-Dashboard

Gogs ist nun mit PostgreSQL und Nginx auf CentOS 7 installiert.


Sicherheit und Betrieb (Hardening)

Wichtig: Bevor Sie Gogs produktiv betreiben, sollten Sie folgende Punkte prüfen:

  • TLS aktivieren (z. B. Let’s Encrypt) und HTTP auf HTTPS umleiten.
  • Firewall (firewalld/iptables): Nur Ports 22 (SSH, optional), 80/443 für öffentliche Dienste öffnen; Gogs intern auf 127.0.0.1 belassen.
  • SELinux: Prüfen Sie, ob SELinux eingeschaltet ist. Testweise können Sie es zu Permissive setzen; langfristig sollten Sie passende Contexts setzen oder boolean-Werte konfigurieren.
  • Backups: Regelmäßige Dumps der PostgreSQL-Datenbank und Sicherung des Gogs-Repository-Verzeichnisses.
  • Benutzerrechte: Der Gogs-Prozess sollte nur mit minimalen Rechten laufen (User=git). Vermeiden Sie root-Ausführung.

Empfohlene Maßnahmen (Kurzliste):

  • HTTPS erzwingen
  • Datenbank-Backups täglich
  • Überwachung (Disk, CPU, Verfügbarkeit)
  • Logrotation für Gogs-Logs

Datenschutz / GDPR Hinweise

  • Verarbeiten Sie personenbezogene Daten (Namen, E-Mails) in Gogs, stellen Sie sicher, dass Sie die lokalen Datenschutzbestimmungen einhalten.
  • Halten Sie Lösch- und Exportprozesse für Benutzer bereit.
  • Versichern Sie sich, dass Backups sicher abgelegt und verschlüsselt sind, wenn nötig.

Backup- und Recovery-Playbook (Kurz)

  • Täglich: PostgreSQL-Dump (pg_dumpall oder pg_dump) und Archiv der Gogs-Repository-Struktur.
  • Wöchentliche Prüfroutine: Testwiederherstellung auf einer Staging-Instanz.
  • Notfallwiederherstellung (Kurz):
    1. Neue CentOS-Instanz mit identischer Softwarebasis aufsetzen.
    2. PostgreSQL installieren und Datenbank zurückspielen.
    3. Gogs-Binaries/Repositorys wiederherstellen und Service starten.

Rollback-Runbook

Wenn ein Update fehlschlägt:

  1. Stoppen Sie den Gogs-Service: systemctl stop gogs
  2. Stellen Sie die vorherigen Datenbank-Backups wieder her.
  3. Stellen Sie das vorherige Repository-Archiv zurück (Dateien unter /home/git/…)
  4. Starten Sie den Service neu und prüfen Sie Logs: journalctl -u gogs -n 200

Fehlerbehebung und häufige Probleme

  • Problem: Gogs startet nicht.

    • Prüfung: systemctl status gogs und journalctl -u gogs prüfen.
    • Ursachen: falsche Pfade, fehlende Berechtigungen, Datenbankverbindung fehlerhaft.
  • Problem: Webinstaller kann keine DB-Verbindung herstellen.

    • Prüfung: psql -h 127.0.0.1 -U git -d gogs_production
    • Ursachen: falsches Passwort, pg_hba.conf nicht korrekt, PostgreSQL läuft nicht.
  • Problem: Nginx zeigt 502/Bad Gateway.

    • Prüfung: Ist Gogs auf 127.0.0.1:3000 erreichbar? curl http://127.0.0.1:3000
    • Ursachen: Gogs gestoppt, Firewall, SELinux.

Akzeptanzkriterien

  • Gogs-Weboberfläche ist über die konfigurierten Domain/URL erreichbar (HTTP/S).
  • Anmeldung als Admin funktioniert und Repository-Anlage möglich.
  • Gogs läuft als systemd-Service und startet nach Neustart automatisch.
  • Backup- und Restore-Prozess getestet (Staging-Wiederherstellung erfolgreich).

Alternative Ansätze

  • Docker: Verwenden Sie offizielle oder Community-Container, um Abhängigkeiten zu isolieren und Updates zu vereinfachen.
  • SQLite: Für sehr kleine Teams oder Tests genügt SQLite als Datenbank (kein PostgreSQL notwendig).
  • Managed Git-Services: GitHub/GitLab.com/Bitbucket, falls Selbsthosting nicht nötig ist.

Kompatibilität und Migrationstipps

  • Bei Migration von MySQL/MariaDB zu PostgreSQL prüfen Sie Datenbank-Dumps und mögliche SQL-Inkompatibilitäten.
  • Prüfen Sie Gogs- und Go-Version-Kompatibilität; neuere Gogs-Versionen können neuere Go-Runtime erfordern.

Testfälle / Akzeptanztests

  • Test 1: Admin-Login funktioniert.
  • Test 2: Neues Repository anlegen, lokal klonen, Push durchführen.
  • Test 3: Benutzerregistrierung (falls erlaubt) und Rechtevergabe.
  • Test 4: Backup erstellen und in Staging wiederherstellen.

Rollenbasierte Checkliste

  • Administrator:
    • Service-Setup abgeschlossen, SSL konfiguriert, Backups geplant.
  • Entwickler:
    • Repository anlegen, klonen, Push/Pull testen.
  • Operator/DevOps:
    • Überwachung, Alerts, Rotationspläne für Logs und Backups eingerichtet.

Kurze Methodik / Best Practices

  • Benutzen Sie die 12-Faktor-Prinzipien, wo sinnvoll (Konfiguration aus Umgebungsvariablen).
  • Trennen Sie öffentlich erreichbaren Reverse Proxy (Nginx) vom internen Gogs-Prozess (Hören auf 127.0.0.1).
  • Automatisieren Sie Backups und Tests.

Entscheidungsbaum zur Deployment-Auswahl (Mermaid)

flowchart TD
    A[Start: Benötigen Sie Selbsthosting?] -->|Nein| B[Managed Service nutzen]
    A -->|Ja| C[Ist einfache Instanz ausreichend?]
    C -->|Ja| D[SQLite oder Docker-Compose]
    C -->|Nein| E[Produktiv: PostgreSQL + systemd + Nginx]
    E --> F{Sollen mehrere Instanzen betrieben werden?}
    F -->|Ja| G[Kubernetes / Container-Orchestrierung]
    F -->|Nein| H[Single-VM mit Systemd und Nginx]

Kurz-Glossar

  • Gogs: Leichter, in Go geschriebener Git-Dienst zum Selbsthosten.
  • GOPATH/GOROOT: Go-Umgebungsvariablen für Quellcode und Installation.
  • Reverse Proxy: Webserver (z. B. Nginx), der HTTP/HTTPS-Anfragen an einen internen Dienst weiterleitet.

Nützliche Befehle (Cheat Sheet)

  • Start/Stop/Status: systemctl start|stop|status gogs
  • Logs: journalctl -u gogs -f
  • PostgreSQL prüfen: sudo -u postgres psql -c “\l”
  • Nginx-Konfig testen: nginx -t

Zusammenfassung

Gogs ist eine schlanke, selbstgehostete Git-Lösung, die sich auf minimalistischer Hardware einsetzen lässt. Diese Anleitung hat die Installation auf CentOS 7 mit PostgreSQL als Datenbank und Nginx als Reverse Proxy beschrieben, inklusive Service-Setup, Sicherheits-Empfehlungen, Backup- und Rollback-Playbooks sowie Tests und Troubleshooting.

Reference: https://gogs.io/docs/installation

Autor
Redaktion

Ähnliche Materialien

Privates Instagram ansehen: 13 sichere Methoden
Social Media

Privates Instagram ansehen: 13 sichere Methoden

PC‑Fehler 8790 reparieren – Ursachen & Lösungen
Windows Support

PC‑Fehler 8790 reparieren – Ursachen & Lösungen

No Man’s Sky: FPS & Paketverlust beheben
Gaming

No Man’s Sky: FPS & Paketverlust beheben

WhatsApp auf mehreren Handys nutzen
Anleitung

WhatsApp auf mehreren Handys nutzen

Eigene Google‑Suchmaschine erstellen
Anleitung

Eigene Google‑Suchmaschine erstellen

Gogs auf CentOS 7 installieren und betreiben
Server Administration

Gogs auf CentOS 7 installieren und betreiben