8.7 KiB
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
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.