Gogs auf CentOS 7 installieren und konfigurieren

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
- EPEL-Repository installieren
- PostgreSQL installieren und konfigurieren
- Go und Git installieren
- Gogs herunterladen und bauen
- Gogs konfigurieren
- Gogs als systemd-Service einrichten
- Nginx als Reverse Proxy konfigurieren
- 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
Prüfen Sie die Netzwerk-Ports (Beispiel):
netstat -plntu
Sie sollten PostgreSQL auf 127.0.0.1:5432 sehen.
Anlegen von Datenbank und Benutzer für Gogs:
su - postgres
psql
CREATE USER git CREATEDB;
\password git
CREATE DATABASE gogs_production OWNER git;
exit
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
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 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).
Beispiel-URL:
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
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
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
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:
Geben Sie im Webinstaller die zuvor angelegte PostgreSQL-Zugangsdaten ein und legen Sie das Admin-Konto an.
Scrollen Sie nach unten zu Admin-Account-Einstellungen, legen Sie Benutzername, Passwort und E-Mail fest und klicken Sie auf Install Gogs.
Nach erfolgreicher Installation gelangen Sie zum Dashboard:
Und das Admin-Dashboard zeigt Verwaltungsoptionen:
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):
- Neue CentOS-Instanz mit identischer Softwarebasis aufsetzen.
- PostgreSQL installieren und Datenbank zurückspielen.
- Gogs-Binaries/Repositorys wiederherstellen und Service starten.
Rollback-Runbook
Wenn ein Update fehlschlägt:
- Stoppen Sie den Gogs-Service: systemctl stop gogs
- Stellen Sie die vorherigen Datenbank-Backups wieder her.
- Stellen Sie das vorherige Repository-Archiv zurück (Dateien unter /home/git/…)
- 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
Ähnliche Materialien

Privates Instagram ansehen: 13 sichere Methoden

PC‑Fehler 8790 reparieren – Ursachen & Lösungen

No Man’s Sky: FPS & Paketverlust beheben

WhatsApp auf mehreren Handys nutzen

Eigene Google‑Suchmaschine erstellen
