Skip to main content

Ü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. 

Zur Website mit dem Download 

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.