Aprilas Wiki

Wiki personnel de Thibauld Feneuil

Outils pour utilisateurs

Outils du site


server:free:gitea

Gitea

Préliminaire

Pour pouvoir utiliser Gitea, il faut d'abord installé Git sinon il n'y a aucun espoir d'aller jusqu'au bout.

apt-get install git

Installation

Pour d'abord, télécharge Gitea (va sur ce site pour trouver la dernière version) et rend le fichier exécutable.

wget -O gitea https://dl.gitea.io/gitea/1.9.3/gitea-1.9.3-linux-amd64
chmod +x gitea

Il faut vérifier la signature GPG pour éviter toutes modifications non souhaitées sur le fichier téléchargé. Télécharge la signature

wget -O gitea https://dl.gitea.io/gitea/1.9.3/gitea-1.9.3-linux-amd64.asc

et teste le fichier

gpg --keyserver pgp.mit.edu --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
gpg --verify gitea-1.9.3-linux-amd64.asc gitea-1.9.3-linux-amd64

Test

Et présent, il est préférable de faire un test. Lance la commande suivante (pour l'arrêter, utilise Ctrl+C).

./gitea web

Préparation de Apache2

Gitea sous Apache

Commence par créer le certificat SSL pour https://git.aprilas.fr.

sudo /etc/init.d/apache2 stop
/opt/letsencrypt/letsencrypt-auto --rsa-key-size 4096 certonly --standalone -d git.aprilas.fr
sudo /etc/init.d/apache2 start

Crée le fichier /etc/apache2/sites-available/gitea.conf avec le contenu suivant :

<VirtualHost *:80>
        ServerAdmin admin@aprilas.fr
        ServerName git.aprilas.fr

        RewriteEngine on
        RewriteRule ^(.*) https://%{SERVER_NAME}$1 [R,L]
</VirtualHost>

<VirtualHost *:443>
        ServerAdmin admin@aprilas.fr
        ServerName git.aprilas.fr

        Include /etc/letsencrypt/options-ssl-apache.conf
        SSLCertificateFile /etc/letsencrypt/live/git.aprilas.fr/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/git.aprilas.fr/privkey.pem

        ErrorLog /var/log/apache2/gitea.log

        ProxyPreserveHost On
        AllowEncodedSlashes NoDecode

        <Location />
                ProxyPass "http://localhost:3000/"
                Require all granted
                ProxyPassReverse "http://localhost:3000/"
                ProxyPassReverse "http://git.aprilas.fr/"
        </Location>
</VirtualHost>

Et maintenant,

a2ensite gitea
a2enmod rewrite ssl proxy proxy_http
/etc/init.d/apache2 reload

Configuration

Préparation de l'environnement

Crée un utilisateur pour Gitea (ex. git)

adduser \
   --system \
   --shell /bin/bash \
   --gecos 'Git Version Control' \
   --group \
   --disabled-password \
   --home /home/git \
   git

Création de l'arborescence des fichiers

mkdir -p /var/lib/gitea/{custom,data,log}
mv ~/gitea /var/lib/gitea/
chown -R git:git /var/lib/gitea/
chmod -R 750 /var/lib/gitea/

ln -s /var/lib/gitea/gitea /usr/local/bin/

Préparation de la base de données MySQL

Crée la base de données de Gitea sur le serveur MySQL.

En supposant que tu en dispose, connecte-toi à PHPmyAdmin en tant qu'administrateur. Crée une base de donnée avec

  • gitea comme nom
  • uft8_general_ci comme encodage

Puis, crée un utilisateur gitea et donne lui tous les droits sur la base “gitea”.

Configuration initiale

Lance Gitea manuellement

sudo -u git /var/lib/gitea/gitea web

puis, va sur le site https://git.aprilas.fr/install et renseigne les paramètres suivants :

Paramètres de la base de données

  • Type de base de données : MySQL
  • Hôte : localhost
  • Nom d'utilisateur : gitea
  • Mot de passe : ******
  • Nom de base de données : gitea
  • Jeu de caractères : utf8

Configuration générale

  • Titre du site : Gitea : Git with a cup of tea
  • Emplacement racine des dépôts : /home/git/gitea-repositories
  • Répertoire racine Git LFS : /var/lib/gitea/data/lfs
  • Exécuter avec le compte d'un autre utilisateur : git
  • Domaine du serveur SSH : git.aprilas.fr
  • Port du serveur SSH : 22
  • Port d'écoute HTTP de Gitea : 3000
  • URL de base de Gitea : https://git.aprilas.fr/
  • Chemin des fichiers log : /var/lib/gitea/log

Paramètres facultatifs

  • Hôte SMTP : aprilas.fr
  • Envoyer les e-mails en tant que : gitea@aprilas.fr
  • Utilisateur SMTP : aprilas
  • Mot de passe SMTP : ******
  • Exiger la confirmation de l'email lors de l'inscription : OUI
  • Activer les notifications par e-mail : OUI
  • Désactiver le formulaire d'inscription : OUI
  • Activer la connexion avec OpenID: NON
  • Domaine pour les e-mails cachés : aprilas.fr
  • Nom d’utilisateur administrateur : admin
  • Mot de passe : ******
  • Confirmer le mot de passe : ******
  • Adresse e-mail : admin@aprilas.fr

Et à présent, tu peux arrêter Gitea et mettre le fichier de configuration généré à sa place définitive :

mkdir /etc/gitea
cp /var/lib/gitea/custom/conf/app.ini /etc/gitea
chown -R root:git /etc/gitea
chmod 750 /etc/gitea
chmod 640 /etc/gitea/app.ini

Exécuter Gitea

Création d'un fichier de service pour démarrer automatiquement

Crée le fichier /etc/systemd/system/gitea.service.

sudo vim /etc/systemd/system/gitea.service

Et rentre les données suivantes :

[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
###
# Don't forget to add the database service requirements
###
#
Requires=mysql.service
#Requires=mariadb.service
#Requires=postgresql.service
#Requires=memcached.service
#Requires=redis.service
#
###
# If using socket activation for main http/s
###
#
#After=gitea.main.socket
#Requires=gitea.main.socket
#
###
# (You can also provide gitea an http fallback and/or ssh socket too)
#
# An example of /etc/systemd/system/gitea.main.socket
###
##
## [Unit]
## Description=Gitea Web Socket
## PartOf=gitea.service
##
## [Socket]
## ListenStream=
## NoDelay=true
##
## [Install]
## WantedBy=sockets.target
##
###

[Service]
# Modify these two values and uncomment them if you have
# repos with lots of files and get an HTTP error 500 because
# of that
###
#LimitMEMLOCK=infinity
#LimitNOFILE=65535
RestartSec=2s
Type=simple
User=git
Group=git
WorkingDirectory=/var/lib/gitea/
# If using unix socket: Tells Systemd to create /run/gitea folder to home gitea.sock
# Manual cration would vanish after reboot.
#RuntimeDirectory=gitea
ExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.ini
Restart=always
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea
# If you want to bind Gitea to a port below 1024, uncomment
# the two values below, or use socket activation to pass Gitea its ports as above
###
#CapabilityBoundingSet=CAP_NET_BIND_SERVICE
#AmbientCapabilities=CAP_NET_BIND_SERVICE
###

[Install]
WantedBy=multi-user.target

Activer et démarrer Gitea en boot.

sudo systemctl enable gitea
sudo systemctl start gitea

Gitea devrait être disponible à https://git.aprilas.fr, et devrait le rester, même après le redémarrage du serveur.

Configuration de LDAP

Créer un nouvel utilisateur en lecture seule

Pour accéder à l'annuaire LDAP avec Gitea, on pourrait utiliser le compte cn=admin,dc=telecom-etude,dc=com, mais c'est dangereux ! Pourquoi utiliser un compte qui peut modifier les données de l'annuaire, alors que nous avons besoin uniquement d'un compte qui puisse lire les mots de passe des différents utilisateurs de l'annuaire ? Et bien, nous allons créer ce compte !

Tu peux commencer par regarder l'ACL actuelle avec la commande suivante :

ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b "cn=config" "olcDatabase={1}mdb" olcAccess

Crée l'utilisateur suivant reader (avec ldapadd ou via LAM).

dn: cn=reader,dc=aprilas,dc=fr
cn: reader
description: LDAP complete reader
objectclass: simpleSecurityObject
objectclass: organizationalRole
objectclass: top
userpassword: {SSHA}R0UUkt4JDsvpkVgEDk8+8pmHwzUOp79g

Puis, modifie l'ACL du serveur LDAP. Pour cela, crée un fichier add-reader.ldif.

dn: olcDatabase={1}mdb,cn=config
changetype: modify
delete: olcAccess
olcAccess: {0}to attrs=userPassword by self write by anonymous auth by * none
-
add: olcAccess
olcAccess: {0}to attrs=userPassword by self write by dn="cn=reader,dc=aprilas,dc=fr" read by anonymous auth by * none

et applique les modifications :

ldapmodify  -Y EXTERNAL -H ldapi:/// -f add-reader.ldif

Regarde si cela a bien été pris en compte en affichant, à nouveau, l'ACL.

ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b "cn=config" "olcDatabase={1}mdb" olcAccess

Créer les groupes spécifiques à Gitea

Crée les groupes git-users et git-admins sur ou=Groups,dc=aprilas,dc=fr :

cn: git-users
member: uid=tfeneuil,ou=People,dc=aprilas,dc=fr
objectclass: groupOfNames
objectclass: top
cn: git-admins
member: uid=tfeneuil,ou=People,dc=aprilas,dc=fr
objectclass: groupOfNames
objectclass: top

Activer le module memberOf

Pour faire fonctionner correctement LDAP avec Gitea, il faut que le module memberOf soit activé.

Si ce n'est pas déjà fait, va voir ici pour savoir comment l'activer.

Configuration de Gitea pour utiliser LDAP

Connecte toi sur Gitea avec un compte administrateur. Va dans “Administration du site”, puis dans l'onglet “Sources d'authentification”.

Ajoute une source d'authentification.

  • Type d'authentification : LDAP (via BindDN)
  • Nom de l'authentification : Aprilas LDAP
  • Protocole de sécurité : LDAPS
  • Hôte : ldap.aprilas.fr
  • Port : 636
  • Bind DN : cn=reader,dc=aprilas,dc=fr
  • Bind mot de passe :
  • Base de recherche des utilisateurs : ou=People,dc=aprilas,dc=fr
  • Filtre utilisateur : (&(memberOf=cn=git-users,ou=Groups,dc=aprilas,dc=fr)(uid=%s))
  • Filtre administrateur : (memberOf=cn=git-admins,ou=Groups,dc=aprilas,dc=fr)
  • Attribut nom d'utilisateur : uid
  • Attribut prénom : givenName
  • Attribut nom de famille : sn
  • Attribut e-mail : mail
  • Utiliser la recherche paginée : NON
  • Aller chercher les attributs dans le contexte de liaison DN : NON ?
  • Ne pas vérifier TLS : NON
  • Activer la synchronisation des utilisateurs : OUI
  • Cette source d'authentification : OUI

Et valide le formulaire.

Puisqu'on a choisi d'activer la synchronisation, Gitea va régulièrement mettre à jour la liste des utilisateurs de LDAP. Par défaut, cela se fait toutes les 24 heures. Pour faire une synchronisation manuelle, il suffit d'appuyer sur le bouton “Synchroniser les données de l'utilisateur externe” dans le tableau de bord. Après l'ajout de la nouvelle source d'authentification, il semblerait que Gitea ne fasse pas directement une synchronisation, donc si tu veux voir directement les utilisateurs dans l'onglet correspond, il faut que tu appuies sur le bouton.

server/free/gitea.txt · Dernière modification: 2019/11/08 13:11 par 194.254.61.42