Gogs ist ein selbst gehosteter Open-Source-Git-Server, der in Go geschrieben wurde. Es enthält einen Repository-Dateieditor, Projektproblemverfolgung und ein integriertes Wiki.
Gogs ist eine leichtgewichtige Anwendung und kann auf Systemen mit geringer Leistung installiert werden. Wenn Sie nach einer Alternative zu Gitlab mit viel geringerem Speicherbedarf suchen und nicht den ganzen Schnickschnack benötigen, den Gitlab bietet, dann sollten Sie unbedingt Gogs ausprobieren.
Dieses Tutorial behandelt die Schritte zum Installieren und Konfigurieren von Gogs unter Ubuntu 18.04. Dieselben Anweisungen gelten für Ubuntu 16.04 und alle anderen Ubuntu-basierten Distributionen.
Bevor Sie beginnen #
Gogs kann SQLite, PostgreSQL oder MySQL/MariaDBdatabase verwenden, um alle seine Daten zu speichern.
In diesem Tutorial verwenden wir SQLite als bevorzugte Datenbank. Wenn SQLite nicht auf Ihrem System installiert ist, können Sie es installieren, indem Sie Folgendes eingeben:
sudo apt install sqlite3
Für eine zusätzliche Sicherheitsebene wird empfohlen, eine einfache Firewall einzurichten. Sie können den Schritten in unserem Leitfaden zum Einrichten einer Firewall mit UFW unter Ubuntu 18.04 folgen.
Installation von Gogs #
Wir werden Gogs aus der Binärdatei installieren. Die Installation ist ein ziemlich einfacher Prozess.
Installieren Sie Git #
Der erste Schritt ist die Installation von Giton auf Ihrem Server. Aktualisieren Sie dazu den lokalen Paketindex und installieren Sie das Git-Paket, indem Sie die folgenden Befehle als sudo-Benutzer ausführen:
sudo apt update
sudo apt install git
Überprüfen Sie die Installation, indem Sie die Git-Version anzeigen:
git --version
git version 2.17.1
Erstelle einen Git-Benutzer #
Erstellen Sie einen neuen Systembenutzer, um den Gogs-Dienst auszuführen, indem Sie Folgendes eingeben:
sudo adduser --system --group --disabled-password --shell /bin/bash --home /home/git --gecos 'Git Version Control' git
Der Befehl erstellt den Benutzer und setzt das Home-Verzeichnis auf /home/git
. Die Ausgabe sieht in etwa so aus:
Adding system user `git' (UID 111) ...
Adding new group `git' (GID 116) ...
Adding new user `git' (UID 111) with group `git' ...
Creating home directory `/home/git' ...
Gogs-Binärdatei # herunterladen
Besuchen Sie die Gogs-Download-Seite und laden Sie die neueste Binärdatei für Ihre Architektur herunter. Zum Zeitpunkt des Schreibens ist die neueste Version 0.11.86, wenn eine neue Version verfügbar ist, ändern Sie den VERSION
Variable im folgenden Befehl.
Laden Sie das Gogs-Archiv im Verzeichnis /tmp
herunter Verzeichnis mit dem folgenden wget-Befehl:
VERSION=0.11.86
wget https://dl.gogs.io/${VERSION}/gogs_${VERSION}_linux_amd64.tar.gz -P /tmp
Extrahieren Sie nach Abschluss des Downloads die Gogs-tar.gz-Datei und verschieben Sie sie nach /home/git
Verzeichnis:
sudo tar xf /tmp/gogs_*_linux_amd64.tar.gz -C /home/git
Führen Sie den folgenden Befehl aus, um den Besitz des Gogs-Installationsverzeichnisses auf den Benutzer und die Gruppe git zu ändern:
sudo chown -R git: /home/git/gogs
Erstellen Sie eine systemd-Unit-Datei #
Gogs wird mit einer Systemd-Unit-Datei geliefert, die bereits so konfiguriert ist, dass sie unserem Setup entspricht.
Kopieren Sie die Datei nach /etc/systemd/system/
Verzeichnis durch Eingabe von:
sudo cp /home/git/gogs/scripts/systemd/gogs.service /etc/systemd/system/
Sobald Sie fertig sind, starten und aktivieren Sie den Gogs-Dienst:
sudo systemctl start gogs
sudo systemctl enable gogs
Überprüfen Sie, ob der Dienst erfolgreich gestartet wurde:
* gogs.service - Gogs
Loaded: loaded (/etc/systemd/system/gogs.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2019-04-25 04:13:44 PDT; 9s ago
Main PID: 14376 (gogs)
Tasks: 8 (limit: 2319)
CGroup: /system.slice/gogs.service
`-14376 /home/git/gogs/gogs web
Installieren Sie Gogs mit dem Web-Installer #
Nachdem Gogs heruntergeladen wurde und ausgeführt wird, ist es an der Zeit, die Installation über die Weboberfläche abzuschließen.
Öffnen Sie Ihren Browser und geben Sie http://YOUR_DOMAIN_IR_IP:3000
ein und ein Bildschirm ähnlich dem folgenden wird angezeigt:
Datenbankeinstellungen:
- Datenbanktyp:SQLite3
- Pfad:Verwenden Sie einen absoluten Pfad,
/home/git/gogs/gogs.db
Allgemeine Anwendungseinstellungen
- Anwendungsname:Geben Sie den Namen Ihrer Organisation ein
- Repository-Stammpfad:Belassen Sie den Standard
/home/git/gogs-repositories
- Benutzer ausführen:git
- Domäne:Geben Sie Ihre Domäne oder Server-IP-Adresse ein.
- SSH-Port:22, ändern Sie ihn, wenn SSH auf einem anderen Port lauscht
- HTTP-Port:3000
- Anwendungs-URL:Verwenden Sie http und Ihre Domain- oder Server-IP-Adresse.
- Protokollpfad:Belassen Sie den Standard
/home/git/gogs/log
Wenn Sie fertig sind, klicken Sie auf die Schaltfläche „Install Gogs“. Die Installation erfolgt sofort und nach Abschluss werden Sie zur Anmeldeseite weitergeleitet.
Klicken Sie auf den Link „Jetzt anmelden“.
Der erste registrierte Benutzer wird automatisch zur Admin-Gruppe hinzugefügt.
Das ist es. Gogs wurde auf Ihrem Ubuntu-Rechner installiert.
Konfigurieren von Nginx als SSL-Terminierungsproxy #
Dieser Schritt ist optional, wird aber dringend empfohlen. Um Nginx als Reverse-Proxy zu verwenden, benötigen Sie eine Domain oder Subdomain, die auf die öffentliche IP Ihres Servers verweist. In diesem Tutorial verwenden wir gogs.example.com
.
Installieren Sie zunächst Nginx und generieren Sie ein kostenloses SSL-Zertifikat von Let’s Encrypt, indem Sie die folgenden Anleitungen befolgen:
- So installieren Sie Nginx unter Ubuntu 18.04
- Nginx mit Let’s Encrypt auf Ubuntu 18.04 sichern
Sobald Sie fertig sind, öffnen Sie Ihren Texteditor und bearbeiten Sie die Blockdatei des Domänenservers:
sudo nano /etc/nginx/sites-enabled/gogs.example.com
/etc/nginx/sites-enabled/gogs.example.comserver {
listen 80;
server_name gogs.example.com;
include snippets/letsencrypt.conf;
return 301 https://gogs.example.com$request_uri;
}
server {
listen 443 ssl http2;
server_name gogs.example.com;
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
client_max_body_size 50m;
# Proxy headers
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
# SSL parameters
ssl_certificate /etc/letsencrypt/live/gogs.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/gogs.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/gogs.example.com/chain.pem;
include snippets/letsencrypt.conf;
include snippets/ssl.conf;
# log files
access_log /var/log/nginx/gogs.example.com.access.log;
error_log /var/log/nginx/gogs.example.com.error.log;
# Handle / requests
location / {
proxy_redirect off;
proxy_pass http://127.0.0.1:3000;
}
}
Vergessen Sie nicht, gogs.example.com durch Ihre Gogs-Domain zu ersetzen und den richtigen Pfad zu den SSL-Zertifikatsdateien festzulegen. Alle HTTP-Anforderungen werden an HTTPS umgeleitet Starten Sie den Nginx-Dienst neu, damit die Änderungen wirksam werden:
sudo systemctl restart nginx
Als nächstes müssen wir die Gogs-Domain und die Root-URL ändern. Öffnen Sie dazu die Konfigurationsdatei und bearbeiten Sie die folgenden Zeilen:
sudo nano /home/git/gogs/custom/conf/app.ini
/home/git/gogs/custom/conf/app.ini[server]
DOMAIN = gogs.example.com
ROOT_URL = https://gogs.example.com/
Starten Sie den Gogs-Dienst neu, indem Sie Folgendes eingeben:
sudo systemctl restart gogs
An diesem Punkt ist Gogs konfiguriert und Sie können darauf zugreifen unter:https://gogs.example.com
E-Mail-Benachrichtigungen konfigurieren #
Damit Gogs Benachrichtigungs-E-Mails senden kann, können Sie entweder Postfix installieren oder einen Transaktions-Mail-Dienst wie SendGrid, MailChimp, MailGun oder SES verwenden.
Um E-Mail-Benachrichtigungen zu aktivieren, öffnen Sie die Konfigurationsdatei und bearbeiten Sie die folgenden Zeilen:
sudo nano /home/git/gogs/custom/conf/app.ini
/home/git/gogs/custom/conf/app.ini[mailer]
ENABLED = true
HOST = SMTP_SERVER:SMTP_PORT
FROM = SENDER_EMAIL
USER = SMTP_USER
PASSWD = YOUR_SMTP_PASSWORD
Stellen Sie sicher, dass Sie die richtigen SMTP-Serverinformationen eingeben.
Starten Sie den Gogs-Dienst neu, damit die Änderungen wirksam werden:
sudo systemctl restart gogs
Mit Gogs können Sie sich auch mit Slack verbinden, indem Sie Webhooks erstellen und Benachrichtigungen an Ihre Slack-Kanäle senden.
Upgrade von Gogs #
Um Gogs zu aktualisieren, sind mehrere manuelle Schritte erforderlich.
-
Stoppen Sie zuerst den Gogs-Dienst:
sudo systemctl stop gogs
-
Benennen Sie das Gogs-Installationsverzeichnis um.
sudo mv /home/git/gogs{,_old}
-
Laden Sie die neueste Gogs-Version herunter und verschieben Sie sie nach
/home/git
Verzeichnis:VERSION=<THE_LATEST_GOGS_VERSION>
wget https://dl.gogs.io/${VERSION}/gogs_${VERSION}_linux_amd64.tar.gz -P /tmp
sudo tar xf /tmp/gogs_*_linux_amd64.tar.gz -C /home/git
Stellen Sie sicher, dass Sie
VERSION
ändern mit der aktuellen Gogs-Release-Version. -
Kopieren Sie
custom
,data
,log
Verzeichnisse in das extrahierte Verzeichnis mit dem folgenden rsync-Befehl:sudo rsync -a /home/git/gogs_old/{custom,data,log,gogs.db} /home/git/gogs/
-
Starten Sie abschließend den Gogs-Dienst:
sudo systemctl restart gogs
Das ist es.