diff --git a/assets/gitea-install.PNG b/assets/gitea-install.PNG new file mode 100644 index 0000000000000000000000000000000000000000..b1d84dba98bd1c52c14fc4cfc321449c7e2df7ed Binary files /dev/null and b/assets/gitea-install.PNG differ diff --git a/assets/vbox-network-config.png b/assets/vbox-network-config.png new file mode 100644 index 0000000000000000000000000000000000000000..e5af7e4d033c0683ce21e4f6b49aaf864e40957d Binary files /dev/null and b/assets/vbox-network-config.png differ diff --git a/config.yaml b/config.yaml index 14c498aeef69fa176f725b39a29b077d37fc29f3..8528a446e186600f0af8b048d63a690598184f99 100644 --- a/config.yaml +++ b/config.yaml @@ -2,6 +2,7 @@ input-files: - src/Intro.md - src/Install.md - src/Git.md + - src/Gitea.md metadata: title: "SAÉ S2.03" author: "Ethan Robert" diff --git a/src/Gitea.md b/src/Gitea.md new file mode 100644 index 0000000000000000000000000000000000000000..ff1c59b794c794b5b31b8e701cab6429a684992d --- /dev/null +++ b/src/Gitea.md @@ -0,0 +1,165 @@ +# Installation et configuration de Gitea + +Cette étape couvre le processus entier de l'installation du service **Gitea**. + +Il s'agit d'une *forge logicielle* libre et open source écrite en langage [Go](https://go.dev), pour l'hébergement de répos Git, intégrant un système de suivi des bugs, un outil de création de wiki, ainsi qu'un set d'outils pour la relecture de code. *([About - Gitea](https://about.gitea.com))* + +Il présente de très nombreuses similarités avec des services d'hébergement git plus connus, comme [GitHub](https://github.com) ou encore [GitLab](https://gitlab.com), avec l'avantage d'être complètement open-source, et totalement hébergeable, sans license (comme c'est le cas pour GitLab). + +Le logiciel a vu le jour le 17 octobre 2016, à la suite du fork de [Gogs](https://gogs.io), qui est par ailleurs encore activement maintenu. Le code de ce dernier a donc été copié et réutilisé dans le projet Gitea. + +Voyons donc ici comment l'installer sur notre machine virtuelle. + +## Redirection de ports sur la machine hôte + +Afin de pouvoir utiliser le service Gitea — puisque la machine invitée ne possède pas d'interface graphique -, il sera nécessaire d'ouvrir au moins deux ports : + - Le port 220 -> 22 : qui permettra d'accéder à la machine virtuelle en SSH, pour gagner du temps lors de la copie des commandes de la documentation, mais également d'accéder au code source stocké sur le serveur par SSH (qui est un des deux protocoles, avec HTTP, utilisés par Git) + - Le port 3000 -> 3000 : qui sera utilisé pour afficher l'interface web de Gitea une fois le service installé. + +Étant donné que la machine est configurée en NAT (Network Adress Translation), le réseau n'est pas directement accessible depuis la machine, mais utilise un réseau interne fourni par VirtualBox, qui fait également office de pare-feu, **empêchant ainsi tout paquet de passer de l'hôte à la machine virtuelle**. + +VirtualBox permet cependant de configurer de la redirection de ports, qui permet de fournir un accès **partiel** à la machine distante, sur quelques ports. + +### Récupération de l'adresse de la machine + +La première étape consiste à récupérer l'adresse IP interne de la machine, afin de pouvoir la renseigner plus tard dans la table de redirection de port. + +On démarre donc la machine, pour pouvoir taper la commande : +```bash +ip a +``` + +On peut ainsi la garder en mémoire pour la suite et éteindre la machine pour le reste de l'opération. + +### Configuration dans VirtualBox + +La suite consiste à configurer la redirection de ports dans VirtualBox. + +Pour cela, il faut donc aller dans les **paramètres réseau de la machine virtuelle** sur VirtualBox (Paramètres > Réseau), puis cliquer sur le bouton *"Redirection de ports"*. + +Une boîte de dialogue apparaît, et on peut alors créer deux nouvelle entrées pour la redirection de ports : + +| Nom | Protocole | IP hôte | Port hôte | IP invité | Port invité | +| -------- | --------- | --------- | --------- | --------- | ----------- | +| Gitea | TCP | 127.0.0.1 | 3000 | 10.0.2.15 | 3000 | +| SSH | TCP | 127.0.0.1 | 220 | 10.0.2.15 | 22 | + + + + +*(Source : [IT-Connect.fr](https://www.it-connect.fr/configurer-le-port-forwarding-sur-une-vm-virtualbox%EF%BB%BF/))* + +## Installation de docker + +Pour faciliter l'installation de Gitea, on préfère tout faire tourner à l'intérieur d'un conteneur *Docker*. + +Cela a plusieurs avantages, notamment : + - Une plus grande réparabilité en cas de problème, puisque aucun dommage n'est fait au système (tout est isolé à l'intérieur d'un environnement virtuel mais pas virtualisé) + - Une meilleure sécurité, car le conteneur est concu par les développeurs de Gitea, et est donc étudié, ce qui élude les éventuelles failles dues à notre inattention + +> **Docker** +> Docker est un logiciel Français (cocorico !) qui se présente comme une "plateforme open-source permettant le développement, l'envoi et l'exécution d'applications". Docker permet surtout la séparation des applications et de l'infrastructure, ce qui rend la distribution du logiciel plus rapide et efficace. +> Le logiciel a été crée en 2010 en tant que startup de la Y Combinator de Google. +> *([What is Docker?, site officiel de Docker](https://docs.docker.com/get-started/docker-overview/), [Au Revoir, Simon Hykes, Docker](https://archive.ph/20210112150959/https://www.docker.com/blog/au-revoir/))* + +Heureusement, il existe un moyen relativement simple d'installer Docker sur Debian, et toutes les instructions sont fournies par la [documentation officielle de Docker](https://docs.docker.com/engine/install/debian/) + +Nous allons nous intéresser à l'installation APT, qui permet de synchroniser le fonctionnement de Docker et son installation avec APT. Ainsi, les mises à jour fournies par Docker seront automatiquement installées lors de la msie à jour globale du système. + +On commence donc par ajouter le dépôt Docker et ses clés de chiffrement aux sources `apt`: +```bash +# Installation des prérequis +apt update +apt install ca-certificates curl +chmod a+r /etc/apt/keyrings/docker.asc + +# Installation des clés de chiffrement +install -m 0755 -d /etc/apt/keyrings +curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc + +# Ajout du dépôt Docker aux sources d'APT +echo \ + "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \ + $(. /etc/os-release && echo "$VERSION_CODENAME") stable" > etc/apt/sources.list.d/docker.list > /dev/null + +# Synchronisation avec les dépôts Docker +apt update +``` + +Les sources de docker sont ainsi configurées, et nous sommes prêts pour l'installation : + +```bash +apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose docker-compose-plugin +``` + +Une fois Docker installé, on peut donc passer à l'installation de Gitea. + +## Installation de Gitea + +L'installation de Gitea par docker fonctionne en utilisant un outil nommé `docker-compose`. Il permet de configurer un conteneur automatiquement en renseignant toutes ses spécifications via un fichier `.yml`. On peut donc aisément y ajouter ou personnaliser des fonctionnalités en fonction de ce que l'on souhaite obtenir. + +Il suffit de créer un répertoire temporaire `gitea` : +```bash +mkdir gitea +``` + +Puis d'y écrire un fichier `docker-compose.yml` : +```yml +# gitea/docker-compose.yml +version: "3" + +networks: + gitea: + external: false + +services: + server: + image: docker.gitea.com/gitea:1.23.4 + container_name: gitea + environment: + - USER_UID=1000 + - USER_GID=1000 + restart: always + networks: + - gitea + volumes: + - ./gitea:/data + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + ports: + - "3000:3000" + - "222:22" +``` + +Ce fichier va au plus simple. Il s'assure que toutes les variables d'environnement sont configurées, que les volumes virtuels contenant les données de gitea sont bien montés, et que les ports sont bien configurés. + +On peut donc ensuite lancer l'installation de Gitea via la commande : +```bash +docker-compose up -d +``` + +Et c'est parti. Normalement, le serveur démarre, et on peut accéder aux étapes d'installation de Gitea en utilisant l'interface web fournie. + +On y accède donc sur la machine hôte via l'adresse (si tout s'est bien passé) : +``` +http://127.0.0.1:3000 +``` + +*(Source : [Documentation officielle de Gitea](https://docs.gitea.com/installation/install-with-docker))* + + +Une fois tout ceci configuré, le serveur est prêt. On peut supprimer les dossiers temporaires, car Gitea est correctement installé et démarre tout seul avec la machine virtuelle. + + + +## Mise à jour de Gitea + +Pour mettre à jour Gitea par un conteneur Docker, il suffit de suivre la [documentation officielle de Gitea](https://docs.gitea.com/installation/install-with-docker) + +Si la version de Gitea n'est pas directement spécifiée dans le fichier `docker-compose.yml`, on peut simplement lancer ces deux commandes pour automatiquement récupérer le dernier conteneur et remplacer l'ancien : +```bash +docker-compose pull +docker-compose up -d +``` + +Et tout est mis à jour automatiquement. \ No newline at end of file