Gitea

Aus Hostsharing Wiki
Wechseln zu: Navigation, Suche

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',shell:'/bin/bash'}})
 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 (hier die 64-Bit-Version, für die shared Server h01 bis h08 bitte die 32-Bit-Version gitea-1.7.0-linux-i386 herunterladen).

 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

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:

 DirectoryIndex disabled
 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   = geheim
 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-stop.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