315 lines
8.7 KiB
Markdown
315 lines
8.7 KiB
Markdown
# 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 d’utilisateur 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 l’utilisateur 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.
|