Aller au contenu

Installation et configuration de Gitea

Pré requis

Les paquets suivants doivent être préalablement installés : * Mariadb * Git * Apache2 * Certbot (LetsEncrypt) * python3-certbot-apache

Mettre à jour Debian avec la commande apt update && apt upgrade -y

Création de la base de données

mysql -u root -p
CREATE DATABASE gitea;
CREATE USER 'gitea'@'localhost' IDENTIFIED BY 'mot_de_passe';
GRANT ALL PRIVILEGES ON gitea.* TO 'gitea'@'localhost';
FLUSH PRIVILEGES;
EXIT

Téléchargement et installation de Gitea

Télécharger le dernier binaire de Gitea depuis cette page de téléchargements
Exemple :

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

Rendre le fichier exécutable avec la commande chmod +x gitea

Déplacer le binaire dans un emplacement système avec la commande mv gitea /usr/local/bin/gitea

Création d'un utilisateur système pour Gitea

adduser --system --group --disabled-password --shell /bin/bash --home /home/gitea gitea 

Configuration de Gitea

Créer les répertoires nécessaires

mkdir -p /var/lib/gitea/{custom,data,indexers,public,log}
chown gitea:gitea /var/lib/gitea/{data,indexers,log}
chmod 750 /var/lib/gitea/{data,indexers,log}

Création d'un fichier de service systemd

Créer ce fichier avec la commande nano /etc/systemd/system/gitea.service

Ajouter le contenu suivant :

[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
Requires=mariadb.service

[Service]
RestartSec=2s
Type=simple
User=gitea
Group=gitea
WorkingDirectory=/var/lib/gitea/
ExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.ini
Restart=always
Environment=USER=gitea HOME=/home/gitea GITEA_WORK_DIR=/var/lib/gitea

[Install]
WantedBy=multi-user.target

Activation et démarrage du service Gitea

systemctl enable gitea
systemctl start gitea

Configuration d'un hôte virtuel Apache

Depuis la console web du registrar, créer un enregistrement de type A pointant vers le serveur hébergeant Gitea pour l'adresse gitea.domaine.fr

Configuration de Apache

Activer le mode proxy de Apache

a2enmod proxy proxy_http

Activation du SSL

a2enmod ssl
a2enmod headers

Créer un fichier de configuration pour l'hôte virtuel Gitea avec la commande nano /etc/apache2/sites-available/gitea.conf
Indiquer ceci :

<VirtualHost *:443>
    ServerName gitea.domaine.fr

    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:3000/
    ProxyPassReverse / http://127.0.0.1:3000/

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/gitea.domaine.fr/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/gitea.domaine.fr/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf
    Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
</VirtualHost>

Indiquer à Certbot que nous ajoutons ce nouveau site gitea.domaine.fr avec la commande

certbot --apache --expand -d gitea.domaine.fr

Activer le nouvel hôte virtuel

a2ensite gitea
systemctl restart apache2

Configuration de l'application

Cette étape permettra entre autre de générer le fichier de configuration /var/lib/gitea/custom/conf/app.ini ou /etc/gitea/app.ini

Dans un navigateur, visiter le site créé http://gitea.domaine.fr ou http://gitea.domaine.fr:3000

Indiquer le nom d'utilisateur de base de données, son mot de passe. Créer un administrateur.

Envoi d'un répertoire sur le repository Git

Pour ajouter un site mkdocs sur le repo Git, se rendre dans le répertoire de mkdocs.

Initialiser le dépôt pour mkdocs

cd /repertoire/de/mkdocs
git init
git add .
git commit -m "Initial commit"

Création d'un Dépôt sur Gitea

Aller sur l'instance Gitea, créer un nouveau dépôt pour le projet MkDocs.
Noter l'URL du dépôt (par exemple, http://gitea.domaine.com/username/mon-projet.git).

Lier le Dépôt Git au Dépôt Gitea

Lier le dépôt Git local au dépôt Gitea :

git remote add origin http://gitea.domaine.fr/username/mon-projet.git

Pousser les changements sur Gitea

Pousser les changements du dépôt local vers Gitea :

git push -u origin master

Mise à Jour et Déploiement

Quand on met à jour la documentation, faire un commit des changements et les pousser sur Gitea :

git add .
git commit -m "Update documentation"
git push origin master

Automatisation du Déploiement (Optionnel)

Pour automatiser le déploiement du site MkDocs chaque fois que l'on pousse des changements, utiliser des outils d'intégration continue/déploiement continu (CI/CD) compatibles avec Gitea, comme Drone CI, Jenkins, etc.

Ceci nécessite une configuration supplémentaire pour mettre en place des pipelines de déploiement automatique.

Drone est conseillé car il est hautement compatible avec Gitea.

Exemples concrets

Ajout d'un dossier local en tant que dépôt dans Git

Côté Gitea

Commencer par créer un dépôt depuis l'interface web de Gitea, par exemple mkdocs.
Repérer l'URL sur la page du dépôt, nous en aurons besoin tout à l'heure. Elle ressemble à ceci : https://<serveur-gitea>/<utilisateur>/mkdocs.git. Il peut être nécessaire de cliquer sur le bouton <> Code.

Côté serveur

Se rendre dans le répertoire contenant les données que l'on souhaite ajouter au dépôt Git. Par exemple cd /var/www/mkdocs.
Initialiser un dépôt git avec la commande suivante :

git init
Cela crée un sous-répertoire .git caché qui contiendra l'historique du dépôt.
Ajouter les fichiers au dépôt avec cette commande :
git add .
Cela ajoute tous les fichiers et répertoires du répertoire /var/www/mkdocs au dépôt Git. Autrement dit, cela va permettre de générer un index des fichiers présents dans le répertoire où l'on est et enregistrer cet index dans le fichier ./.git/index.
Créer ensuite un premier "commit" avec la commande suivante :
git commit -m "Initial commit"
Un commit est comme une sauvegarde de l'état du projet à un moment donné. Le message "-m" permet de décrire ce commit. Les fichiers sont alors copiés dans le répertoire ./.git/objects.

Jonction du dépôt local avec le serveur Gitea

A présent que le dépôt existe localement et sur Gitea, il reste à établir la liaison entre les deux. Pour cela, nous aurons besoin de l'URL du dépôt Gitea visible depuis la page du dépôt sur Gitea. Dans le terminal, toujours dans le répertoire du dépôt, exécuter ceci :

git remote add origin <l'URL du dépôt distant>
Cela ajoute un "remote" (dépôt distant) appelé "origin" pointant vers le dépôt Gitea.
Envoyer enfin les fichiers sur le serveur avec cette commande :
git push -u origin main
La branche "main" peut être adaptée. Cela envoie less fichiers et l'historique du dépôt local vers le dépôt Gitea. La première fois, l'option "-u" permet de créer la branche "main" sur Gitea et de la lier à la branche locale.

Conseils supplémentaires

.gitignore

Créer un fichier .gitignore dans /var/www/mkdocs pour spécifier les fichiers et répertoires que l'on ne veut pas inclure dans le dépôt (fichiers temporaires, cache).

Mises à jour

Pour mettre à jour le dépôt Gitea après avoir apporté des modifications aux fichiers locaux, se dépacer dans le répertoire contenant les données puis lancer la commande git add ., git commit et git push.