Gitea: Unterschied zwischen den Versionen

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen
K (Formatierung ändern)
Zeile 10: Zeile 10:
Um Gitea auf der Managed Operation Platform von Hostsharing zu installieren, ist folgende Vorbereitung erforderlich.
Um Gitea auf der Managed Operation Platform von Hostsharing zu installieren, ist folgende Vorbereitung erforderlich.


1. Anlegen eines Domain-Benutzers. In unserem Beispiel <code>xyz00-gitea</code>.
# Anlegen eines Domain-Benutzers. In unserem Beispiel <code>xyz00-gitea</code>.
 
# Anlegen einer Domain. In unserem Beispiel <code>gitea.hs-example.de</code>.
2. Anlegen einer Domain. In unserem Beispiel <code>gitea.hs-example.de</code>.
# Anlegen eines Datenbank-Benutzers. Hier <code>xyz00_giteadbuser</code>.
 
# Anlegen einer Datenbank. Hier <code>xyz00_giteadb</code>.
3. Anlegen eines Datenbank-Benutzers. Hier <code>xyz00_giteadbuser</code>.
 
4. Anlegen einer Datenbank. Hier <code>xyz00_giteadb</code>.


Auf der Kommandozeile kann man dies folgendermaßen erledigen.
Auf der Kommandozeile kann man dies folgendermaßen erledigen.
Zeile 22: 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>:


  hsscript -u xyz00 -i
    hsscript -u xyz00 -i
  Password: ********
    Password: ********


Anschließend kann man die Vorbereitungsschritte 1 bis 4 erledigen:
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> 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'}})


=== Installation von Gitea ===
=== Installation von Gitea ===
Zeile 38: Zeile 35:
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:


  sudo -u xyz00-gitea -i
    sudo -u xyz00-gitea -i
    
    
Nun laden wir das passende Binary herunter.
Nun laden wir das passende Binary herunter.
Zeile 44: Zeile 41:
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).


  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


Wir laden die GPG-Signatur herunter und überprüfen sie:
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
    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


Nun können wir Gitea testweise starten:
Nun können wir Gitea testweise starten:


  ./gitea web
    ./gitea web
    
    


Zeile 66: Zeile 63:
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':


  rm -rf subs/www
    rm -rf subs/www
  rm -rf subs-ssl/www
    rm -rf subs-ssl/www
    
    
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.


  vi htdocs/.htaccess
    vi htdocs/.htaccess
    
    
Der Eintrag muss lauten:
Der Eintrag muss lauten:


  Redirect permanent / https://gitea.hs-example.com/
    Redirect permanent / https://gitea.hs-example.com/
    
    
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:


  DirectoryIndex disabled
    DirectoryIndex disabled
  RewriteEngine on
    RewriteEngine on
  RewriteBase /
    RewriteBase /
  RewriteRule ^(.*) http://localhost:31580/$1 [proxy,last]
    RewriteRule ^(.*) http://localhost:31580/$1 [proxy,last]
    
    
Merken Sie sich die Portnummer 31580.
Merken Sie sich die Portnummer 31580.
Zeile 100: Zeile 97:
Die Konfigurationsdatei beginnt mit allgemeinen Einträgen:
Die Konfigurationsdatei beginnt mit allgemeinen Einträgen:


  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
    
    
Im Abschnitt [database] folgen die Angaben zur Datenbank:
Im Abschnitt [database] folgen die Angaben zur Datenbank:


  [database]
    [database]
  DB_TYPE  = postgres
    DB_TYPE  = postgres
  HOST    = 127.0.0.1:5432
    HOST    = 127.0.0.1:5432
  NAME    = xyz00_giteadb
    NAME    = xyz00_giteadb
  USER    = xyz00_giteadbuser
    USER    = xyz00_giteadbuser
  PASSWD  = geheim
    PASSWD  = geheim
  SSL_MODE = disable
    SSL_MODE = disable
  PATH    = data/gitea.db
    PATH    = data/gitea.db


Es folgt der Pfad zu den Git-Repositorys und die Server-Konfiguration:
Es folgt der Pfad zu den Git-Repositorys und die Server-Konfiguration:


  [repository]
    [repository]
  ROOT = /home/pacs/xyz00/users/gitea/gitea-repositories
    ROOT = /home/pacs/xyz00/users/gitea/gitea-repositories
 
   
  [server]
    [server]
  PROTOCOL        = http
    PROTOCOL        = http
  SSH_DOMAIN      = gitea.hs-example.de  
    SSH_DOMAIN      = gitea.hs-example.de  
  DOMAIN          = gitea.hs-example.de
    DOMAIN          = gitea.hs-example.de
  HTTP_ADDR        = localhost
    HTTP_ADDR        = localhost
  HTTP_PORT        = 31580
    HTTP_PORT        = 31580
  ROOT_URL        = https://gitea.hs-example.de/
    ROOT_URL        = https://gitea.hs-example.de/
  DISABLE_SSH      = false
    DISABLE_SSH      = false
  SSH_PORT        = 22
    SSH_PORT        = 22
  LFS_START_SERVER = true
    LFS_START_SERVER = true


Für das Schreiben der Log Datei können Sie folgendes konfigurieren:
Für das Schreiben der Log Datei können Sie folgendes konfigurieren:


[log]
    [log]
MODE      = file
    MODE      = file
LEVEL      = info
    LEVEL      = info
ROOT_PATH  = /home/pacs/xyz00/users/gitea/custom/logs/
    ROOT_PATH  = /home/pacs/xyz00/users/gitea/custom/logs/
ROUTER    = file
    ROUTER    = file
LOG_ROTATE = false
    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.
'''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
    mkdir -p /home/pacs/xyz00/users/gitea/custom/logs


Sie können nun Gitea starten:
Sie können nun Gitea starten:


  ./gitea web
    ./gitea web
    
    
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 157: Zeile 154:
Es hat folgenden Inhalt:
Es hat folgenden Inhalt:


<pre>
    Description=Gitea
Description=Gitea
   
 
    [Service]
[Service]
    Type=simple
Type=simple
    Restart=on-abort
Restart=on-abort
    WorkingDirectory=%h
WorkingDirectory=%h
    ExecStart=%h/gitea web
ExecStart=%h/gitea web
   
    [Install]
    WantedBy=default.target


[Install]
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>:


  /home/pacs/xyz00/users/gitea/custom/logs/gitea.log {
    /home/pacs/xyz00/users/gitea/custom/logs/gitea.log {
    copytruncate
      copytruncate
    daily
      daily
    rotate 7
      rotate 7
    compress
      compress
    missingok
      missingok
  }
    }


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:


  # 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
   
   
Die Uhrzeit für die Logrotation können Sie beliebig einstellen.
Die Uhrzeit für die Logrotation können Sie beliebig einstellen.
Zeile 192: Zeile 187:
Abschließend können Sie Ihre Gitea-Instanz starten:
Abschließend können Sie Ihre Gitea-Instanz starten:


  export XDG_RUNTIME_DIR=/run/user/$UID
    export XDG_RUNTIME_DIR=/run/user/$UID
  systemctl --user start gitea
    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.
'''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, 09:42 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.

  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 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:

Gitea LDAP Einrichtung.png

weiterführende Links