Überblick über Code behalten mit einem Mini Gitea-Server

1 Hintergrund
Die Ablage von Scripts und Programmcode kann über mehrere Versionen schnell mal unübersichtlich werden.
Hier bietet sich die Verwendung eines eigenen kleinen Git-Servers mit grafischem Interface an, auf welchen man aus dem lokalen Netzwerk zugreifen kann.
Das ganze Projekt werden wir mit einem Raspberry Pi und einer externen HDD umsetzen.
2 Benötigtes Material
Für das Projekt haben wir die folgende Materialliste:
- Raspberry Pi 3 Model B+
- MicroSD-Karte 16GB
- externe HDD 1TB
3 System auf Micro SD-Karte flashen
Zunächst muss ein Raspbian Image heruntergeladen werden. Wir verwenden die Lite Version von der momentan aktuellen Version Raspbian Buster.
Die Micro SD-Karte in den Kartenleser einlegen und die Karte identifizieren:
lsblk
Bei uns ist die Karte das Device "sda".
!! Achtung !! Bei Systemen mit SATA-Disks ist das in der Regel die Festplatte des Systems. Beim von uns verwendeten Gerät ist die systemeigene SSD aber als "nvme0n1" eingebunden.
Die ZIP-Datei entpacken und auf die Karte flashen:
unzip XXXX-XX-XX-raspbian-buster-lite.zip sudo dd status=progress if=XXXX-XX-XX-raspbian-buster-lite.img of=/dev/sda bs=4M sync
4 Vorkonfiguration
Bevor wir die Karte und in den Raspberry Pi einlegen, werden wir noch den SSH-Server ab Start aktivieren und dem Gerät eine statische IP-Adresse verpassen.
Die SD-Karte verfügt nun über 2 Partitionen sda1 (Bootpartition) und sda2 (Rootpartition). Wir mounten beide in temporäre Ordner, die wir danach wieder löschen.
mkdir boot mkdir root sudo mount /dev/sda1 boot sudo mount /dev/sda2 root
Damit der SSH-Server beim Systemstart aktiviert ist, muss eine Datei namens ssh in der Bootpartition erstellt werden.
sudo touch boot/ssh
Um dem Raspberry Pi bereits beim ersten Start eine statische IP zu verpassen, tragen wir die entsprechenden Daten die Konfigurationsdatei "/etc/network/interfaces" ein. Wir möchten dem Gerät die IP-Adresse 192.168.1.85 vergeben.
auto eth0 iface eth0 inet static address 192.168.1.85 netmask 255.255.255.0 gateway 192.168.1.1 nameserver 192.168.1.1
Nun werden die Partitionen wieder ausgehängt und die Ordner wieder gelöscht.
umount root umount boot rm -rf root boot
Die Micro SD-Karte wird nun in den Raspberry Pi eingesetzt und wird gestartet.
5 Weitere Konfigurationen
Sobalb der Raspberry Pi gestartet wurde, verbinden wir uns über SSH.
ssh pi@192.168.1.85
Passwort: raspberry
In einem ersten Schritt ändern wir nun alle Passwörter:
su passwd pi passwd exit
Und den vom SSH-Daemon verwendeten Port.
sudo nano /etc/ssh/sshd_config
Die Zeile...
#Port 22
...wird geändert in...
Port 52222
Damit die Änderung wirksam wird, starten wir das Gerät neu:
sudo reboot
Da die Verbindung nicht mehr über den Standardport gemacht wird, müssen wir beim Verbinden nun den Port definieren:
ssh -p 52222 pi@192.168.1.85
Jetzt binden wir noch die externe HDD ein. Wenn die Festplatte noch formatiert werden muss, kann folgendes gemacht werden.
Festplatte löschen:
sudo dd status=progress if=/dev/zero of=/dev/sda bs=4M
sync
Festplatte neu Partitionieren:
sudo fdisk /dev/sda Neue leere Partitionstabelle erstellen (DOS): o Neue Parition erstellen: n Primäre Partition: p Partitionsnummer: <ENTER> Erster Sektor: <ENTER> Letzter Sektor: <ENTER> Paritionstabelle schreiben und fdisk beenden: w
Partition mit ext4 formatieren:
sudo mkfs.ext4 /dev/sda1
!! Da die Partitionen auf der Micro SD-Karte beim Raspberry Pi mmc... heissen, haben wir hier erneut sda.
Nun können wir diese diese auf das Verzeichnis /external mounten.
sudo mkdir /external sudo chmod -R 777 /external sudo mount /dev/sda1 /external
6 Installation der benötigten Pakete
Um das Softwarepaket von Gitea nutzen zu können müssen wir vorerst git und mariadb-server installieren. Zuerst aktualisieren wir das System auf den neusten Stand.
sudo apt-get update sudo apt-get upgrade sudo apt-get install git mariadb-server -y
Nun werden wir noch einen Benutzer, unter welchem Gitea laufen soll. Dieser wir nicht die Möglichkeit haben sich am System anzumelden.
sudo adduser --disabled-login --gecos 'Gitea' git
Als nächstes richten wir den Mariadb-Server ein. Der nachfolgende Befehl wird einige Fragen stellen.
sudo mysql_secure_installation Enter current password for root (enter for none) : <ENTER> Set root password? Y Remove anonymous users? Y Disallow root login remotely? Y Remove test database and access to it? Y
Jetzt muss noch eine Datenbank für Gitea angelegt werden:
mysql -u root -p MariaDB [(none)]> CREATE DATABASE gitea; MariaDB [(none)]> GRANT ALL PRIVILEGES ON gitea.* TO 'gitea'@'localhost' IDENTIFIED BY 'HIER-PASSWORT-EINGEBEN'; MariaDB [(none)]> FLUSH PRIVILEGES; MariaDB [(none)]> exit
Wir switchen nun den User auf git und wechseln auf die externe Festplatte.
sudo su git cd /external
Hier erstellen wir ein neues Verzeichnis "gitea" und wechseln wiederum in dieses:
mkdir gitea cd gitea
Nun muss das gitea Softwarepaket heruntergeladen werden. Wir verwenden in unserem Projekt die Version 1.7.6.
wget dl.gitea.io/gitea/1.7.6/gitea-1.7.6-linux-arm-7 -O gitea
Die Datei wird nun noch auführbar gemacht:
chmod +x gitea
Dann werden wir einen Systemd-Service für die Applikation erstellen.
sudo nano /etc/systemd/system/gitea.service
Die Datei hat den folgenden Inhalt.
[Unit] Description=Gitea (Git with a cup of tea) After=syslog.target After=network.target [Service] # Modify these two values and uncomment them if you have # repos with lots of files and get to HTTP error 500 because of that ### # LimitMEMLOCK=infinity # LimitNOFILE=65535 RestartSec=2s Type=simple User=git Group=git WorkingDirectory=/external/gitea ExecStart=/external/gitea/gitea web Restart=always Environment=USER=git HOME=/external/gitea [Install] WantedBy=multi-user.target
Der Service kann nun aktiviert und gestartet werden.
sudo systemctl enable gitea.service sudo systemctl start gitea.service
7 Gitea einrichten
Um Gitea nun einzurichten rufen wir die Installationsseite auf:
192.168.1.85:3000/install
Hier muss nun das für den Datenbankuser 'git' vergebene Passwort erfasst werden.

Dann sollte noch die SSH Server Domain und die Gitea Base URL geändert werden. Hier ersetzen wir localhost mit der IP-Adresse des Servers.

Zuletzt erstellen wir noch einen eigenen Admin-Account.

Nach dem Klick auf "Install Gitea" ist die Installation abgeschlossen und Gitea kann genutzt werden.

An diesem Punkt sollte man jetzt noch eine Backup-Lösung implementieren.