Gitea: Unterschied zwischen den Versionen
Tim00 (Diskussion | Beiträge) K (Formatierung ändern) |
Tim00 (Diskussion | Beiträge) K (pre für Code Blöcke) |
||
Zeile 19: | Zeile 19: | ||
Man loggt sich als Paketbenutzer ein und startet die Kommandozeilenversion von HSAdmin mit dem Befehl <code>hsscript</code>: | Man loggt sich als Paketbenutzer ein und startet die Kommandozeilenversion von HSAdmin mit dem Befehl <code>hsscript</code>: | ||
<pre> | |||
hsscript -u xyz00 -i | hsscript -u xyz00 -i | ||
Password: ******** | Password: ******** | ||
</pre> | |||
Anschließend kann man die Vorbereitungsschritte 1 bis 4 erledigen: | Anschließend kann man die Vorbereitungsschritte 1 bis 4 erledigen: | ||
<pre> | |||
xyz00@hsadmin> user.add({set:{name:'xyz00-gitea',password:'geheim',shell:'/bin/bash'}}) | 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> domain.add({set:{name:'gitea.hs-example.de',user:'xyz00-gitea'}}) | ||
xyz00@hsadmin> postgresqluser.add({set:{name:'xyz00_giteadbuser',password:'geheim'}}) | xyz00@hsadmin> postgresqluser.add({set:{name:'xyz00_giteadbuser',password:'geheim'}}) | ||
xyz00@hsadmin> postgresqldb.add({set:{name:'xyz00_giteadb',owner:'xyz00_giteadbuser'}}) | xyz00@hsadmin> postgresqldb.add({set:{name:'xyz00_giteadb',owner:'xyz00_giteadbuser'}}) | ||
</pre> | |||
=== Installation von Gitea === | === Installation von Gitea === | ||
Zeile 35: | Zeile 39: | ||
Wenn wir als Paketbenutzer eingeloggt sind, können wir den Benutzer folgendermaßen wechseln: | Wenn wir als Paketbenutzer eingeloggt sind, können wir den Benutzer folgendermaßen wechseln: | ||
<pre> | |||
sudo -u xyz00-gitea -i | sudo -u xyz00-gitea -i | ||
</pre> | |||
Nun laden wir das passende Binary herunter. | 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, | 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). | für die shared Server h01 bis h08 bitte die 32-Bit-Version gitea-1.7.0-linux-i386 herunterladen). | ||
<pre> | |||
wget -O gitea https://dl.gitea.io/gitea/1.7.0/gitea-1.7.0-linux-amd64 | wget -O gitea https://dl.gitea.io/gitea/1.7.0/gitea-1.7.0-linux-amd64 | ||
chmod +x gitea | chmod +x gitea | ||
</pre> | |||
Wir laden die GPG-Signatur herunter und überprüfen sie: | Wir laden die GPG-Signatur herunter und überprüfen sie: | ||
<pre> | |||
wget https://dl.gitea.io/gitea/1.7.0/gitea-1.7.0-linux-amd64.asc | wget https://dl.gitea.io/gitea/1.7.0/gitea-1.7.0-linux-amd64.asc | ||
gpg --keyserver keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2 | gpg --keyserver keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2 | ||
gpg --verify gitea-1.7.0-linux-amd64.asc gitea | gpg --verify gitea-1.7.0-linux-amd64.asc gitea | ||
</pre> | |||
Nun können wir Gitea testweise starten: | Nun können wir Gitea testweise starten: | ||
<pre> | |||
./gitea web | ./gitea web | ||
</pre> | |||
Der Webserver von Gitea startet auf dem Port 3000. Das werden wir später ändern. | Der Webserver von Gitea startet auf dem Port 3000. Das werden wir später ändern. | ||
Zeile 63: | Zeile 74: | ||
Zunächst wechseln wir in das Verzeichnis <code>doms/gitea.hs-example.de</code> und löschen den Ordner für die Subdomain 'www': | Zunächst wechseln wir in das Verzeichnis <code>doms/gitea.hs-example.de</code> und löschen den Ordner für die Subdomain 'www': | ||
<pre> | |||
rm -rf subs/www | rm -rf subs/www | ||
rm -rf subs-ssl/www | rm -rf subs-ssl/www | ||
</pre> | |||
Anschließend tragen wir die Umleitung auf HTTPS ein, falls dies nicht schon geschehen ist. | Anschließend tragen wir die Umleitung auf HTTPS ein, falls dies nicht schon geschehen ist. | ||
<pre> | |||
vi htdocs/.htaccess | vi htdocs/.htaccess | ||
</pre> | |||
Der Eintrag muss lauten: | Der Eintrag muss lauten: | ||
<pre> | |||
Redirect permanent / https://gitea.hs-example.com/ | Redirect permanent / https://gitea.hs-example.com/ | ||
</pre> | |||
Dann legen wir die Datei <code>htdocs-ssl/.htaccess</code> mit folgendem Inhalt an: | Dann legen wir die Datei <code>htdocs-ssl/.htaccess</code> mit folgendem Inhalt an: | ||
<pre> | |||
DirectoryIndex disabled | DirectoryIndex disabled | ||
RewriteEngine on | RewriteEngine on | ||
RewriteBase / | RewriteBase / | ||
RewriteRule ^(.*) http://localhost:31580/$1 [proxy,last] | RewriteRule ^(.*) http://localhost:31580/$1 [proxy,last] | ||
</pre> | |||
Merken Sie sich die Portnummer 31580. | Merken Sie sich die Portnummer 31580. | ||
Sie wird später bei der Konfiguration von Gitea gebraucht. | Sie wird später bei der Konfiguration von Gitea gebraucht. | ||
Zeile 97: | Zeile 116: | ||
Die Konfigurationsdatei beginnt mit allgemeinen Einträgen: | Die Konfigurationsdatei beginnt mit allgemeinen Einträgen: | ||
<pre> | |||
APP_NAME = Gitea: Git with a cup of tea | APP_NAME = Gitea: Git with a cup of tea | ||
RUN_USER = xyz00-gitea | RUN_USER = xyz00-gitea | ||
RUN_MODE = prod | RUN_MODE = prod | ||
</pre> | |||
Im Abschnitt [database] folgen die Angaben zur Datenbank: | Im Abschnitt [database] folgen die Angaben zur Datenbank: | ||
<pre> | |||
[database] | [database] | ||
DB_TYPE = postgres | DB_TYPE = postgres | ||
Zeile 111: | Zeile 133: | ||
SSL_MODE = disable | SSL_MODE = disable | ||
PATH = data/gitea.db | PATH = data/gitea.db | ||
</pre> | |||
Es folgt der Pfad zu den Git-Repositorys und die Server-Konfiguration: | Es folgt der Pfad zu den Git-Repositorys und die Server-Konfiguration: | ||
<pre> | |||
[repository] | [repository] | ||
ROOT = /home/pacs/xyz00/users/gitea/gitea-repositories | ROOT = /home/pacs/xyz00/users/gitea/gitea-repositories | ||
Zeile 127: | Zeile 151: | ||
SSH_PORT = 22 | SSH_PORT = 22 | ||
LFS_START_SERVER = true | LFS_START_SERVER = true | ||
</pre> | |||
Für das Schreiben der Log Datei können Sie folgendes konfigurieren: | Für das Schreiben der Log Datei können Sie folgendes konfigurieren: | ||
<pre> | |||
[log] | [log] | ||
MODE = file | MODE = file | ||
Zeile 136: | Zeile 162: | ||
ROUTER = file | ROUTER = file | ||
LOG_ROTATE = false | LOG_ROTATE = false | ||
</pre> | |||
'''ACHTUNG''': Bitte prüfen Sie, ob der Ordner zum Speichern der Log-Dateien von Gitea vorhanden ist. Bei Bedarf erstellen Sie die Ordnerstruktur entsprechend. | '''ACHTUNG''': Bitte prüfen Sie, ob der Ordner zum Speichern der Log-Dateien von Gitea vorhanden ist. Bei Bedarf erstellen Sie die Ordnerstruktur entsprechend. | ||
<pre> | |||
mkdir -p /home/pacs/xyz00/users/gitea/custom/logs | mkdir -p /home/pacs/xyz00/users/gitea/custom/logs | ||
</pre> | |||
Sie können nun Gitea starten: | Sie können nun Gitea starten: | ||
<pre> | |||
./gitea web | ./gitea web | ||
</pre> | |||
Der Git-Service ist dann im Browser unter der Adresse gitea.hs-example.de erreichbar. | Der Git-Service ist dann im Browser unter der Adresse gitea.hs-example.de erreichbar. | ||
Zeile 154: | Zeile 185: | ||
Es hat folgenden Inhalt: | Es hat folgenden Inhalt: | ||
<pre> | |||
Description=Gitea | Description=Gitea | ||
Zeile 164: | Zeile 196: | ||
[Install] | [Install] | ||
WantedBy=default.target | WantedBy=default.target | ||
</pre> | |||
Nun können Sie noch die Rotation der Logfiles konfigurieren. | Nun können Sie noch die Rotation der Logfiles konfigurieren. | ||
Dies geschieht in der Datei <code>~/.logrotate</code>: | Dies geschieht in der Datei <code>~/.logrotate</code>: | ||
<pre> | |||
/home/pacs/xyz00/users/gitea/custom/logs/gitea.log { | /home/pacs/xyz00/users/gitea/custom/logs/gitea.log { | ||
copytruncate | copytruncate | ||
Zeile 175: | Zeile 209: | ||
missingok | missingok | ||
} | } | ||
</pre> | |||
Damit logrotate regelmäßig ausgeführt wird, müssen Sie folgenden Eintrag in der crontab der Domain-Benutzers machen: | Damit logrotate regelmäßig ausgeführt wird, müssen Sie folgenden Eintrag in der crontab der Domain-Benutzers machen: | ||
<pre> | |||
# m h dom mon dow command | # m h dom mon dow command | ||
HOME=/home/pacs/xyz00/users/gitea | HOME=/home/pacs/xyz00/users/gitea | ||
PATH=$HOME/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games | PATH=$HOME/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games | ||
51 1 * * * /usr/sbin/logrotate -s $HOME/.logrotate.state $HOME/.logrotate | 51 1 * * * /usr/sbin/logrotate -s $HOME/.logrotate.state $HOME/.logrotate | ||
</pre> | |||
Die Uhrzeit für die Logrotation können Sie beliebig einstellen. | Die Uhrzeit für die Logrotation können Sie beliebig einstellen. | ||
Abschließend können Sie Ihre Gitea-Instanz starten: | Abschließend können Sie Ihre Gitea-Instanz starten: | ||
<pre> | |||
export XDG_RUNTIME_DIR=/run/user/$UID | export XDG_RUNTIME_DIR=/run/user/$UID | ||
systemctl --user start gitea | systemctl --user start gitea | ||
</pre> | |||
'''ACHTUNG''': Bitte beachten Sie, dass für die Ausführung von Benutzerskripten mit systemctl für den aktuellen Benutzer im hsadmin die Shell "/bin/bash" konfiguriert sein muss. | '''ACHTUNG''': Bitte beachten Sie, dass für die Ausführung von Benutzerskripten mit systemctl für den aktuellen Benutzer im hsadmin die Shell "/bin/bash" konfiguriert sein muss. |
Version vom 6. Juni 2023, 11:17 Uhr
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.
- Anlegen eines Domain-Benutzers. In unserem Beispiel
xyz00-gitea
. - Anlegen einer Domain. In unserem Beispiel
gitea.hs-example.de
. - Anlegen eines Datenbank-Benutzers. Hier
xyz00_giteadbuser
. - 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 keys.openpgp.org --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
Für das Schreiben der Log Datei können Sie folgendes konfigurieren:
[log] MODE = file LEVEL = info ROOT_PATH = /home/pacs/xyz00/users/gitea/custom/logs/ ROUTER = file LOG_ROTATE = false
ACHTUNG: Bitte prüfen Sie, ob der Ordner zum Speichern der Log-Dateien von Gitea vorhanden ist. Bei Bedarf erstellen Sie die Ordnerstruktur entsprechend.
mkdir -p /home/pacs/xyz00/users/gitea/custom/logs
Sie können nun Gitea starten:
./gitea web
Der Git-Service ist dann im Browser unter der Adresse gitea.hs-example.de erreichbar.
Service einrichten
Zum Schluss müssen Sie noch den Service zum Starten von Gitea einrichten.
Das Service Skript speichern Sie unter dem Pfad ~/.config/systemd/user/gitea.service
ab.
Es hat folgenden Inhalt:
Description=Gitea [Service] Type=simple Restart=on-abort WorkingDirectory=%h ExecStart=%h/gitea web [Install] WantedBy=default.target
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 }
Damit logrotate regelmäßig ausgeführt wird, 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 51 1 * * * /usr/sbin/logrotate -s $HOME/.logrotate.state $HOME/.logrotate
Die Uhrzeit für die Logrotation können Sie beliebig einstellen.
Abschließend können Sie Ihre Gitea-Instanz starten:
export XDG_RUNTIME_DIR=/run/user/$UID systemctl --user start gitea
ACHTUNG: Bitte beachten Sie, dass für die Ausführung von Benutzerskripten mit systemctl für den aktuellen Benutzer im hsadmin die Shell "/bin/bash" konfiguriert sein muss.
Anmeldung über LDAP einrichten
Ohne weitere Konfiguration, können nun lokale Benutzer angelegt werden.
Falls Sie die Benutzerverwaltung noch an ein LDAP Verzeichnis anschließen wollen, können Sie diese Schritte ausführen:
Sie finden hier die Informationen zum Einrichten eines OpenLDAP Dienstes: OpenLDAP
Gehen Sie in der Weboberfläche von Git in die Administration, und dort in den Reiter "Authentifizierungsquellen", oder direkt auf dem Link https://git.hs-example.de/admin/auths
Dort sollten dann folgende Werte eingetragen werden:
- Authentifizierungstyp: LDAP (via BindDN)
- Host:
localhost
(bzw. der Name des Servers, auf dem OpenLDAP erreichbar ist) - Port:
30389
(bzw. der Port auf dem OpenLDAP erreichbar ist) - DN binden:
cn=admin,dc=hs-example,dc=de
(Der Benutzer der Zugriff auf alle Benutzer hat) - Passwort binden: Das Passwort von dem DN Benutzer
- Basis für Benutzersuche:
ou=users,dc=hs-example,dc=de
- Benutzerfilter:
(&(objectClass=inetOrgPerson)(uid=%s))
- Admin-Filter:
(memberof=cn=admins,ou=groups,dc=hs-example,dc=de)
(diese Benutzer haben Admin Rechte in Gitea) - Benutzernamens-Attribute:
DN
- Vornamensattribut:
givenName
- Nachnamensattribut:
sn
- E-Mail-Attribut:
mail
Hier noch ein Screenshot: