Gitea
Gitea installieren
Gitea ist ein einfacher, selbst gehosteter Git-Service wie GitHub oder GitLab. Die Software ist ein Fork von Gogs und ebenfalls in der Programmiersprache Go geschrieben. Gitea benötigt wenig Ressourcen. Um Gitea auf der Hostsharing Plattform nutzen zu können, benötigt man entweder einen Managed Server oder man muss für seinen Managed Webspace einen Daemon hinzubuchen.
Gitea unterstützt verschiedene Datenbanken. Wir gehen in dieser Anleitung davon aus, dass PostgreSQL benutzt wird.
Vorbereitung der Installation
Um Gitea auf der Managed Operation Platform von Hostsharing zu installieren, ist folgende Vorbereitung erforderlich.
1. Anlegen eines Domain-Benutzers. In unserem Beispiel xyz00-gitea.
2. Anlegen einer Domain. In unserem Beispiel gitea.hs-example.de
3. Anlegen eines Datenbank-Benutzers. Hier xyz00_giteadbuser.
4. Anlegen einer Datenbank. Hier xyz00_giteadb
Auf der Kommandozeile kann man dies folgendermaßen erledigen.
Man loggt sich als Paketbenutzer ein und startet die Kommandozeilenversion von HSAdmin mit dem Befehl hsscript:
hsscript -u xyz00 -i Password: ********
Anschließend kann man die Vorbereitungsschritte 1 bis 4 erledigen:
xyz00@hsadmin> user.add({set:{name:'xyz00-gitea',password:'geheim',comment:'Domain-User'}}) xyz00@hsadmin> domain.add({set:{name:'gitea.hs-example.de',user:'xyz00-gitea'}}) xyz00@hsadmin> postgresqluser.add({set:{name:'xyz00_giteadbuser',password:'geheim'}}) xyz00@hsadmin> postgresqldb.add({set:{name:'xyz00_giteadb',owner:'xyz00_giteadbuser'}})
Installation von Gitea
Gitea wird als Binary zur Verfügung gestellt. Wir installieren das Binary im Verzeichnis des Domain-Benutzers. Wenn wir als Paketbenutzer eingeloggt sind, können wir den Benutzer folgendermaßen wechseln:
sudo -u xyz00-gitea -i
Nun laden wir das passende Binary herunter. Auf der Website https://dl.gitea.io/gitea/ finden Sie das jeweils aktuelle Binary.
wget -O gitea https://dl.gitea.io/gitea/1.7.0/gitea-1.7.0-linux-amd64 chmod +x gitea
Wir laden die GPG-Signatur herunter und überprüfen sie:
wget https://dl.gitea.io/gitea/1.7.0/gitea-1.7.0-linux-amd64.asc gpg --keyserver pgp.mit.edu --recv 7C9E68152594688862D62AF62D9AE806EC1592E2 gpg --verify gitea-1.7.0-linux-amd64.asc gitea-1.7.0-linux-amd64
Nun können wir Gitea testweise starten:
./gitea web
Der Webserver von Gitea startet auf dem Port 3000. Das werden wir später ändern.
Der Server kann mit Ctrl-C beendet werden.
Konfiguration der Domain
Zunächst wechseln wir in das Verzeichnis 'doms/gitea.hs-example.de' und löschen den Ordner für die Subdomain 'www':
rm -rf subs/www rm -rf subs-ssl/www
Anschließend tragen wir die Umleitung auf HTTPS ein, falls dies nicht schon geschehen ist.
vi htdocs/.htaccess
Der Eintrag muss lauten:
Redirect permanent / https://gitea.hs-example.com/
Dann legen wir die Datei htdocs-ssl/.htaccess mit folgendem Inhalt an:
RewriteEngine on RewriteBase / RewriteRule ^(.*) http://localhost:31580/$1 [proxy,last]
Merken Sie sich die Portnummer 31580. Sie wird später bei der Konfiguration von Gitea gebraucht. Die Portnummer bekommen Sie vom Hostmaster, wenn Sie für Ihren Webspace einen Serverdienst (Daemon) buchen. Wenn Sie einen Managed Server haben, können Sie selbst die Portnummer auswählen.
Damit ist die Konfiguration von Apache abgeschlossen.
Konfiguration von Gitea
Wir editieren nun die Konfigurationsdatei von Gitea 'app.ini'. Sie befindet sich in dem Verzeichnis '~/custom/conf'.
ACHTUNG: Sie können die Konfiguration teilweise auch über das Webinterface durchführen. Starten Sie dazu Gitea, wie oben beschrieben, und versuchen Sie einen Benutzer zu registrieren. Daraufhin öffnet sich der Konfigurationsdialog. Sie müssen den Gitea-Benutzer, den Namen der Datenbank, den Datenbank-Benutzer und sein Passwort parat haben.
Die Konfigurationsdatei beginnt mit allgemeinen Einträgen:
APP_NAME = Gitea: Git with a cup of tea RUN_USER = xyz00-gitea RUN_MODE = prod
Im Abschnitt [database] folgen die Angaben zur Datenbank:
[database] DB_TYPE = postgres HOST = 127.0.0.1:5432 NAME = xyz00_giteadb USER = xyz00_giteadbuser PASSWD = [Passwort des Datenbankbenutzers] SSL_MODE = disable PATH = data/gitea.db
Es folgt der Pfad zu den Git-Repositorys und die Server-Konfiguration:
[repository] ROOT = /home/pacs/xyz00/users/gitea/gitea-repositories [server] PROTOCOL = http SSH_DOMAIN = gitea.hs-example.de DOMAIN = gitea.hs-example.de HTTP_ADDR = localhost HTTP_PORT = 31580 ROOT_URL = https://gitea.hs-example.de/ DISABLE_SSH = false SSH_PORT = 22 LFS_START_SERVER = true
Sie können nun Gitea starten:
./gitea web
Der Git-Service ist dann im Browser unter der Adresse gitea.hs-example.de erreichbar.
Start- und Stopp-Skripte einrichten
Zum Schluss müssen Sie noch Start- und Stoppskripte einrichten und Monit konfigurieren.
Das Startskript speichern Sie unter dem Pfad '~/bin/gitea-start.sh' ab. Es hat folgenden Inhalt:
#!/bin/bash export HOME=/home/pacs/xyz00/users/gitea export PATH=$HOME/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games export PID=$HOME/.gitea.pid cd $HOME exec $HOME/gitea web >$HOME/custom/logs/gitea.log 2>&1 & echo $! > $PID
Das Stoppskript speichern Sie unter dem Pfad '~/bin/gitea-stopp.sh' an. Es hat folgenden Inhalt:
#!/bin/bash export HOME=/home/pacs/xyz00/users/gitea export PATH=$HOME/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games export PID=$HOME/.gitea.pid cd $HOME if [ -f $PID ] ; then kill $( cat $PID ); sleep 20 ; kill -9 $( cat $PID ) >/dev/null 2>&1 ; rm $PID ; fi
Monit ist ein Programm zur Überwachung eines Servers oder eines Dienstes. Das Programm erwartet im Verzeichnis des Domain-Benutzers die Datei '~/.monitrc' mit der entsprechenden Konfiguration. Legen Sie die Datei mit folgendem Inhalt an:
set daemon 600 set logfile /home/pacs/xyz00/users/gitea/custom/logs/monit.log set mailserver localhost set alert webmaster@gitea.hs-example.de
check process gitead with pidfile /home/pacs/xyz00/users/gitea/.gitea.pid start program "/home/pacs/xyz00/users/gitea/bin/gitea-start.sh" stop program "/home/pacs/xyz00/users/gitea/bin/gitea-stop.sh"
Nun können Sie noch die Rotation der Logfiles konfigurieren. Dies geschieht in der Datei '~/.logrotate':
/home/pacs/xyz00/users/gitea/custom/logs/gitea.log { copytruncate daily rotate 7 compress missingok } /home/pacs/xyz00/users/gitea/custom/logs/monit.log { copytruncate monthly rotate 2 compress missingok }
Damit die Konfiguration für logrotate und monit auch nach einem Server-Neustart eingelesen werden, müssen Sie folgenden Eintrag in der crontab der Domain-Benutzers machen:
# m h dom mon dow command HOME=/home/pacs/xyz00/users/gitea PATH=$HOME/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games PID=$HOME/.gitea.pid @reboot /usr/bin/monit -c $HOME/.monitrc > /dev/null 51 1 * * * /usr/sbin/logrotate -s $HOME/.logrotate.state $HOME/.logrotate
Wichtig ist der @reboot-Eintrag, der automatisch nach einem Neustart des Hosts ausgeführt wird. Die Uhrzeit für die Logrotation können Sie beliebig einstellen.
Abschließend können Sie Ihre Gitea-Instanz starten:
~/bin/gitea-start.sh