projet_serveur_krkn/applicatif/zone_interne/gitea.md

315 lines
8.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Gitea
## Le conteneur
Numéro 121 (Beta)
#### Interface réseau
- eth0 : vmbr1 / VLAN 30 / IP 10.0.2.21 / GW 10.0.2.254
### Le proxy
#### /root/.wgetrc
```
http_proxy = http://10.0.0.252:3128/
https_proxy = http://10.0.0.252:3128/
use_proxy = on
```
#### /etc/apt/apt.conf.d/01proxy
```
Acquire::http {
Proxy "http://10.0.0.252:9999";
};
```
### Connexion à l'annuaire LDAP
Il faut commencer par copier le certificat de la CA (/etc/ldap/ca_certs.pem qu'il faudra copier via scp)
```
cat ca_certs.pem | tee -a /etc/ldap/ca_certs.pem
```
Il faut ensuite modifier la configuration en modifiant la ligne suivante
#### /etc/ldap/ldap.conf
```
TLS_CACERT /etc/ldap/ca_certs.pem
```
# Configuration du serveur LDAP
Le serveur LDAP est déjà en place sur le conteneur LDAP il faut cependant faire ce qu'il suit pour ajouter le support de NextCloud.
## Ajout d'un schéma
### schemagit.ldif
```
dn: cn=gitkrhacken,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: gitkrhacken
olcAttributeTypes: ( 1.3.6.1.4.1.99999.2.4.10 NAME 'gitaccountactif' DESC 'Git Actif' EQUALITY caseExactMatch SINGLE-VALUE SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
olcObjectClasses: ( 1.3.6.1.4.1.99999.2.4.20 NAME 'gitaccountkrhacken' SUP TOP AUXILIARY MUST (gitaccountactif))
```
```
ldapadd -cxWD cn=admin,dc=krhacken,dc=org -y /root/pwdldap -f schemagit.ldif -ZZ
```
## Ajout d'un nouvel utilisateur
Ce .ldif permet d'ajouter un nouvel utilisateur dans l'anuaire LDAP et de lui autorisé l'accès au mail et au cloud.
### addusermailcloudgit.ldif
```
dn: uid=identifiant,ou=krhacken,ou=people,dc=krhacken,dc=org
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
objectclass: mailaccountkrhacken
objectclass: cloudaccountkrhacken
objectclass: gitaccountkrhacken
uid: identifiant
cn: Prénom
sn: Nom
displayName: Nom d'affichage
userPassword: PASSWORD
mail: identifiant@krhacken.org
mailaccountquota: 2147483648
mailaccountactif: YES
cloudaccountquota: 5GB
cloudaccountactif: YES
gitaccountactif: YES
```
```
ldapadd -cxWD cn=admin,dc=krhacken,dc=org -y /root/pwdldap -f addusermailcloudgit.ldif -ZZ
```
## Autoriser un utilisateur à utiliser le cloud
Permet d'ajouter la classe cloudaccountkrhacken à un utilisateur, il pourra ensuite utiliser NextCloud.
### addtogit.ldif
```
dn: uid=adminsys,ou=krhacken,ou=people,dc=krhacken,dc=org
changetype: modify
add: objectclass
objectclass: gitaccountkrhacken
-
add: gitaccountactif
gitaccountactif: YES
```
```
ldapadd -cxWD cn=admin,dc=krhacken,dc=org -y /root/pwdldap -f addtogit.ldif -ZZ
```
Lister les utilisateurs :
```
ldapsearch -xLLL -H ldap://vip.ldap.krhacken.org -D cn=admin,dc=krhacken,dc=org -y /root/pwdldap -b "ou=people,dc=krhacken,dc=org" "(&(objectClass=gitaccountkrhacken))" -ZZ
```
## Installation
```
apt-get update
apt-get install -y git postgresql sudo
pg_ctlcluster 11 main start
wget -O gitea https://dl.gitea.io/gitea/1.11.3/gitea-1.11.3-linux-amd64
```
Dans Ferm ajoutez le port 3000 à la liste des ports ouverts.
## Configuration de Nginx
### Dans le conteneur Nginx
#### /etc/nginx/sites-available/gitea
```
server {
listen 80;
server_name git.krhacken.org;
location / {
proxy_pass http://10.0.2.21:3000/;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
```
```
sh ~/deploy-webhost.sh gitea
```
### Sur le conteneur HAProxy
Obtention du certificat
```
certbot certonly --webroot -w /home/hasync/letsencrypt-requests/ -d git.krhacken.org
```
```
sh ~/install-certs.sh
```
## Configuration de PostGreSQL
On accède à la console PostGreSQL
```
sudo -u postgres psql
```
Création de l'utilisateur et de la table dans la base de données, n'oubliez pas de spécifié le mot de passe
```
CREATE USER gitea WITH PASSWORD 'PASSWORD';
CREATE DATABASE gitea TEMPLATE template0 ENCODING 'UNICODE';
ALTER DATABASE gitea OWNER TO gitea;
GRANT ALL PRIVILEGES ON DATABASE gitea TO gitea;
\q
```
## Mise en place de Gitea
```
adduser --system --shell /bin/bash --group --disabled-password --home /home/git git
chmod +x gitea
cp gitea /usr/local/bin/gitea
mkdir -p /var/lib/gitea/{custom,data,indexers,public,log}
chown git:git /var/lib/gitea/{data,indexers,log}
chmod 750 /var/lib/gitea/{data,indexers,log}
mkdir /etc/gitea
chown root:git /etc/gitea
chmod 770 /etc/gitea
```
Gitea est installé, on met maintenant en place un service pour que gitea démarre automatiquement.
### /etc/systemd/system/gitea.service
```
[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
Requires=postgresql.service
#Requires=redis.service
[Service]
RestartSec=2s
Type=simple
User=git
Group=git
WorkingDirectory=/var/lib/gitea/
ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini
Restart=always
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea
[Install]
WantedBy=multi-user.target
```
Ce service permet de démarrer automatiquement Gitea et d'attendre que postgresql soit prêt avant le démarrage.
## Premier démarrage et démarrage automatique
```
systemctl enable gitea
systemctl start gitea
```
## Configuration de Gitea via le panel
Via la page **https://git.krhacken.org/install**
### Paramètres de la base de données
- Type de base de données `PostgreSQL`
- Hôte `127.0.0.1:5432`
- Nom d'utilisateur `gitea`
- Nom de base de données `gitea`
- SSL `Require`
### Configuration générale
- Titre du site `Gitea Kr[HACK]en`
- 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 `localhost`
- Port du serveur SSH `22`
- Port d'écoute HTTP de Gitea `3000`
- URL de base de Gitea `https://git.krhacken.org/`
- Chemin des fichiers log `/var/lib/gitea/log`
### Paramètres facultatifs
Cocher uniquement
- Activer le mode hors-ligne
- Désactiver Gravatar
- Désactiver le formulaire d'inscription
- Masquer les adresses e-mail par défaut
- Activer le suivi le temps par défaut
Ensuite
- Domaine pour les e-mails cachés : noreply.krhacken.org
### Paramètres de compte administrateur
- Nom dutilisateur administrateur `root`
- Adresse e-mail `root@noreply.krhacken.org`
Gitea est maintenant en place on termine par restreindre l'accès au fichiers sensible
```
chmod 750 /etc/gitea
chmod 644 /etc/gitea/app.ini
```
L'accès à Gitea se fait vie le reverse proxy Nginx public
## Ajout de l'annuaire LDAP aux sources d'authentification
Dans **Administration du site / Sources d'authentification**
#### Ajouter une source d'authentification
- Type d'authentification `LDAP (via BindDN)`
- Nom de l'authentification `LDAP Kr[HACK]en`
- Protocole de sécurité `StartTLS`
- Hôte `vip.ldap.krhacken.org`
- Port `389`
- Bind DN `cn=viewer,ou=system,dc=krhacken,dc=org`
- Utilisateur Search Base `ou=people,dc=krhacken,dc=org`
- Filtre utilisateur `(&(objectClass=gitaccountkrhacken)(gitaccountactif=YES)(|(uid=%[1]s)(mail=%[1]s)))`
- Attribut nom d'utilisateur `uid`
- Attribut prénom `cn`
- Attribut nom de famille `sn`
- Attribut e-mail `mail`
- Cocher `Ne pas vérifier TLS`
Après avoir mis à jour la source d'authentification, exécuter `Synchroniser les données de lutilisateur externe` dans le Tableau de bord, les utilisateurs compatible avec le filtre doivent apparaître dans **Comptes utilisateurs**
Si c'est n'est pas le cas regarder ce qu'il ce passe dans les logs `cat /var/lib/gitea/log/gitea.log | grep LDAP`.
Vous pouvez lister les utilisateurs avec ldapsearch,
```
ldapsearch -xLLL -H ldap://vip.ldap.krhacken.org -D cn=viewer,ou=system,dc=krhacken,dc=org -w PASSVIEWER -b "ou=people,dc=krhacken,dc=org" "(&(objectClass=gitaccountkrhacken)(gitaccountactif=YES))" -ZZ
```
## Customisation
Les templates des pages sont disponible [ici](https://github.com/go-gitea/gitea/tree/master/templates)
### Page d'accueil
Le fichier modifier doit être à l'adresse **/var/lib/gitea/custom/templates/home.tmpl**
Page actuelle :
```
{{template "base/head" .}}
<div class="home">
<div class="ui stackable middle very relaxed page grid">
<div class="sixteen wide center aligned centered column">
<div>
<img class="logo" src="{{StaticUrlPrefix}}/img/gitea-lg.png" />
</div>
<div class="hero">
<h1 class="ui icon header title">
{{AppName}}
</h1>
</div>
<a href="https://krhacken.org" target="_blank">Site Web</a> - <a href="https://github.com/go-gitea/gitea/" target="_blank">Code source</a>
</div>
</div>
</div>
{{template "base/footer" .}}
```
Pour activer les modifications :
```
chown -R git:git /var/lib/gitea/custom/templates/home.tmpl
systemctl restart gitea
```
### Autres page
La procédure est la même que pour la page d'accueil.