Gitea – Eine grafische Oberfläche für den Git-Server

Ich habe mir vor einiger Zeit einen Git-Server in einer virtuellen Box eingerichtet, was bis jetzt wunderbar funktioniert. Da aber ein Web Frontend ganz nett wäre und es ein paar Dinge vereinfachen würde, habe ich mich entschlossen “Gitea” zu installieren und darüber dann die Git-Repos zu verwalten.

Die virtuelle Box wird von mir bei Bedarf einfach gestartet und ist dann im Netzwerk, wie ein normaler Client oder eben Server über eine eigene IP-Adresse verfügbar. Anschließend kann ich meine Git-Repos ganz einfach auf den Server pushen oder von dort abholen. Da die Sicherung und Wiederherstellung einer VirtualBox sehr einfach geht, kann ich das auch als eine einfache Datensicherung für mich verwenden.

Damit die Festplatte meines Laptops nicht der Platz ausgeht, habe ich die virtuelle Maschinen auf einen angeschlossenen USB-Stick (z.B. SanDisk Ultra Fit Flash-Laufwerk  Amazon Affiliate Link) ausgelagert.

Die Installation von Git und Gitea könnt ihr auch auf jedem anderen Linux-System nachbauen. Auch auf einem kleinen Raspberry Pi ist das Ganze lauffähig, damit ihr schnell und einfach euren eigenen Git-Server aufsetzen könnt. In Zeiten von Let´s Encrypt könnt ihr den dann auch über das Internet sicher zugänglich machen.


  1. Gitea
  2. Ubuntu vorbereiten
  3. Installation des Webservers nginx
  4. Installation von MariaDB
  5. Datenbank für Gitea erstellen
  6. Vorbereitung der Gitea-Umgebung
  7. Gitea Installation
  8. Gitea automatisch starten
  9. Gitea im Webbrowser aufrufen und Konfiguration abschließen
  10. Bildergalerie

Gitea

Gitea ist eine leichtgewichtige Webanwendung für Softwareverwaltungsplattform, die als Web Frontend für Git verwendet werden kann.

In diesem Artikel zeige ich wie Gitea Schritt-für-Schritt auf einem Ubuntu installiert werden kann. Ich verwende dazu eine virtuelle Maschine, die ich in Oracles VirtualBox eingerichtet habe.
(Anleitung für die Installation eines virtuellen Ubuntu-Systems auch Python Entwicklungsumgebung – Schritt 1: Ubuntu virtualisieren)

Hier im Blog habe ich bereits einige Artikel zu Git geschrieben, auch wie sich die Versionsverwaltung unter Ubuntu installieren lässt. ( Schritt 1: Git installieren unter Ubuntu und Windows)

Ubuntu vorbereiten

Bevor es überhaupt losgeht ist das Ubuntu-Betriebssystem zu aktualisieren.

sudo apt update && sudo apt dist-upgrade

Die installierte Git-Version könnt ihr ganz einfach überprüfen. Solltet ihr nichts angezeigt bekommen, dann installiert Git schnell noch nach. ( Schritt 1: Git installieren unter Ubuntu und Windows)

git --version

Gitea wird auf GitHub verwaltet, von wo wir nachher die Dateien per “wget” herunterladen werden. Da das Tool in der Standardinstallation von Ubuntu nicht enthalten ist, muss es noch aus den Repositories installiert werden.

sudo apt -y install wget

Installation des Webservers nginx

Gitea ist ein Web Frontend, dass einen Webbrowser benötigt. Ihr habt da die Wahl zwischen Apache2 und Nginx. Für diese Installation habe ich mit für Nginx entschieden. Eine weitere Einrichtung und Konfiguration habe ich nicht vorgenommen, da ich das Ganze nur in meinem Netzwerk laufen lasse. 

sudo apt install nginx

Installation von MariaDB

Ich verwende für Gitea den Datenbank-Server MariaDB, den ich bereits für meine Nextcloud verwende.  ( Nextcloud auf dem Raspberry Pi)

Die notwendigen Pakete lassen sich ganz einfach aus den Ubuntu-Repositories installieren.

sudo apt install mariadb-server mariadb-client

Nach der Installation sollte der Datenbank-Server unbedingt durch ein paar kleine Einstellungen abgesichert werden.
Dazu ruft ihr das Konfigurationsmenü mit dem Befehl auf.

sudo mysql_secure_installation

Es werden daraufhin einige Dinge abgefragt, die ihr wie folgt beantworten könnt.

Enter current password for root (enter for none): ENTER (Kein Passwort gesetzt)

Set root password? [Y/n] Y

Remove anonymous users? [Y/n] Y

Disallow root login remotely? [Y/n] Y

Remove test database and access to it? [Y/n] Y

Reload privilege tables now? [Y/n] Y

Damit die Änderungen alle geladen werden, startet den MariaDB-Server neu.

sudo systemctl restart mariadb.service
Anzeige/Werbung

Datenbank für Gitea erstellen

In diesem Abschnitt erstellen wir eine neue Datenbank für “Gitea”.

Meldet euch dazu am MariaDB-Server mit dem Benutzer ROOT an und gebt das oben vergebenen Passwort ein.

sudo mysql -u root -p

Nun erstellt eine Datenbank mit dem Namen gitea.

CREATE DATABASE gitea;

Nach der Datenbank erstellen wir noch einen eigenen Benutzer für Gitea.

Ändert das Passwort zwingend ab!
Achtet dabei darauf, dass ihr das Zeichen im Passwort nicht verwendet, sonst erkennt MariaDB die Syntax nicht mehr. Wie ihr im Beispiel seht werden Benutzernamen und Passwort durch ein begrenzt, nutzt ihr das Zeichen auch, kommt MariaDB durcheinander.

CREATE USER 'giteauser'@'localhost' IDENTIFIED BY '123456';

Für den neuen Benutzer giteauser muss noch ein Zugriff auf die Datenbank “gitea” eingerichtet werden.

GRANT ALL ON gitea.* TO 'giteauser'@'localhost' IDENTIFIED BY '123456' WITH GRANT OPTION;

Die Änderungen werden mit dem folgenden Befehl angewendet.

FLUSH PRIVILEGES;

Danach könnt ihr euch vom MariaDB-Server abmelden, die Konfiguration ist dort abgeschlossen.

EXIT;

Vorbereitung der Gitea-Umgebung

Auf Betriebssystemebene, also in unserem Ubuntu, müssen noch ein paar Einstellungen vorgenommen werden, damit Gitea funktioniert.

Es wird ein eigenen Benutzer mit dem Namen git für Gitea angelegt.

sudo adduser \
--system \
--shell /bin/bash \
--gecos 'Git Version Control' \
--group \
--disabled-password \
--home /home/git \
git

Danach werden die erforderlichen Verzeichnisse und die entsprechenden Rechte angelegt und festgelegt.

sudo mkdir -p /var/lib/gitea/{custom,data,indexers,public,log}
sudo chown git:git /var/lib/gitea/{data,indexers,log}
sudo chmod 750 /var/lib/gitea/{data,indexers,log}
sudo mkdir /etc/gitea
sudo chown root:git /etc/gitea
sudo chmod 770 /etc/gitea

Gitea Installation

Die ganzen Vorbereitungen für die Installation von Gitea sind abgeschlossen und wir können das Tool endlich installieren.

Schaut vor der Installation auf der offiziellen Website nach, ob es eine neue Gitea-Version gibt und passt den wget-Link entsprechend an. https://dl.gitea.io/gitea

Mit “wget” lassen sich alle Gitea-Dateien auf die Festplatte unserer virtuellen Box herunterladen.

Wechselt zuvor in das Home-Verzeichnis eures Benutzers.

cd /home/benutzername/
sudo wget -O gitea https://dl.gitea.io/gitea/1.13.1/gitea-1.13.1-linux-amd64

Nach dem Download befinden sich die ganzen Dateien dann im Home-Verzeichnis eures Benutzers.

Zuerst machen wir das Ganze ausführbar und verschieben es dann in das richtige Verzeichnis.

sudo chmod +x gitea
sudo mv gitea /usr/local/bin/gitea

Gitea automatisch starten

Gitea startet noch NICHT nach jedem Start des Betriebssystems automatisch. Das lässt sich ändern, indem eine neue Datei mit dem nachfolgenden Inhalt angelegt wird.

sudo nano /etc/systemd/system/gitea.service

In die neue Datei gitea.service tragt ihr folgendes ein

[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
After=mysqld.service

[Service]
LimitMEMLOCK=infinity
LimitNOFILE=65535
RestartSec=2s
Type=simple
User=git
Group=git
WorkingDirectory=/var/lib/gitea/
ExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.ini
Restart=always
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_BIND_SERVICE

[Install]
WantedBy=multi-user.target

Anschließend starten wir alles neu

sudo systemctl daemon-reload
sudo systemctl enable gitea
sudo systemctl start gitea

Die installierte Gitea-Version lässt sich auch schon mit dem Befehl auf der Konsole abfragen.

gitea --version

Der Status des “gitea.services” lässt sich mit erfragen

sudo systemctl status gitea

Gitea im Webbrowser aufrufen und Konfiguration abschließen

Gitea lässt sich im Webbrowser eurer Wahl aufrufen. Das Tool lauscht dabei standardmäßig auf den Port 3000.

http://192.168.xxx.xxx:3000

  • Datenbanktyp: MariaDB = MySQL
  • Host: Eintrag belassen, wie er ist
  • Benutzername: ändern in giteauser”, wie oben in der Datenbank definiert
  • Passwort: Das von euch vergebene Passwort für den Benutzer “giteauser” eingeben
  • Datenbankname: Eintrag belassen, wie er ist
  • Repository-Verzeichnis: Den Pfad könnt ihr anpassen, jedoch müsst ihr darauf achten, dass der Benutzer giteauser dort Schreibrechte hat.

Ganz am Ende könnt ihr noch ein paar weitere Einstellungen vornehmen.

  • “E-Mail-Einstellungen” – In der “app.ini” lassen sich die Einstellungen auch nachher noch eintragen. In der offiziellen Doku gibt es dazu ein Beispiel für GMail. (https://docs.gitea.io/en-us/email-setup/)
  • “Sonstige Server- und Drittserviceeinstellungen”
  • “Administratoreneinstellungen” – Ich habe gleich einen Benutzer als Hauptadministrator eingetragen. Solltet ihr das nicht machen, wird der erste angelegte Benutzer der Hauptadmin für Gitea.

Nach einem Klick auf den Button “Gitea installieren” dauert es eine kleine Weile, bis die Installation durchgelaufen ist und die Seite neu geladen wird.

Wenn ihr den Port geändert habt, dann bekommt ihr den Fehler “4040 Not Found” zurück, denn ihr werdet schon auf die neue “Gitea Base URL” Adresse weitergleitet.

Die Lösung des Problems, den gitea-Service neu starten.

sudo systemctl restart gitea

Ihr könnt jederzeit die Port-Konfiguration anpassen. Dazu editiert ihr mit einem Editor die Datei app.ini

sudo nano /etc/gitea/app.ini

Im Abschnitt server könnt ihr dann die IP-Adresse und den Port und die anderen Einstellungen jederzeit wieder ändern.

Das wars! Ihr könnt Gitea nun verwenden. 🙂

Bildergalerie

Gitea läuft!

Bild 38 von 38

Gitea läuft!

 

Ihr könnt euren eigenen Git-Server auch auf einem Raspberry Pi laufen lassen. Dazu könnt ihr die gleiche Hardware verwenden, die ich auch für meine Nextcloud verwende, die Hardware-Anforderungen unterscheiden sich da nicht groß.

Für meine Nextcloud verwende ich die folgende Hardware.
AffiliateLinks/Werbelinks / Bildquelle: Amazon-Partnerprogramm / (**)
Die drei unterschiedlichen Speicher verwende ich für:
  • SD-Karte - Betriebssystem Raspberry Pi OS
  • Festplatte - für das Nextcloud Daten-Verzeichnis ("datadirectory") und das temporäre Verzeichnis ("tempdirectory")
  • USB-Stick - Nextcloud-Datensicherung, komplettes Backup der SD-Karte und Sicherung von Adressbüchern und Kalender

(**) Produktpreise und -verfügbarkeit sind zum angegebenen Datum / Uhrzeit korrekt und können sich ändern. Alle Preis- und Verfügbarkeitsinformationen auf https://www.amazon.de/ zum Zeitpunkt des Kaufs gelten für den Kauf dieses Produkts.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.