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
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
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
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
Crée un utilisateur pour Gitea (ex. git)
adduser \ --system \ --shell /bin/bash \ --gecos 'Git Version Control' \ --group \ --disabled-password \ --home /home/git \ git
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/
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 nomuft8_general_ci
comme encodage
Puis, crée un utilisateur gitea
et donne lui tous les droits sur la base “gitea”.
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
******
Configuration générale
Paramètres facultatifs
******
******
******
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
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.
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é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
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.
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.
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.