Skip to content
Snippets Groups Projects
Commit fee29991 authored by Ethan Robert's avatar Ethan Robert
Browse files

Added part on Gitea installation

parent 99189fea
No related branches found
No related tags found
No related merge requests found
assets/gitea-install.PNG

47.4 KiB

assets/vbox-network-config.png

637 KiB

......@@ -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"
......
# 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 |
![Configuration réseau de la machine](assets/vbox-network-config.png)
*(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.
![Configuration initiale de Gitea (matteyeux)](assets/gitea-install.PNG)
## 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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment