From 5c1980ca7c08bde2298efdcbd2bd1f7191de546e Mon Sep 17 00:00:00 2001 From: Romain de Laage Date: Wed, 22 Jul 2020 18:57:13 +0200 Subject: [PATCH] Add gitea doc --- content/docs/hosting/gitea.md | 88 +++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 content/docs/hosting/gitea.md diff --git a/content/docs/hosting/gitea.md b/content/docs/hosting/gitea.md new file mode 100644 index 0000000..6506cb6 --- /dev/null +++ b/content/docs/hosting/gitea.md @@ -0,0 +1,88 @@ +--- +title: "Mettre en place un serveur gitea" +--- + +# Gitea + +Gitea est un service de forge logicielle basé sur Git. Il permet de gérer des dépôts, de gérer des organisations, des issues, des wikis, ... C'est un programme écrit en Go qui est assez simple d'installation et d'administration. + +**On suppose qu'un serveur *PostgreSQL* a déjà été installé au préalable !** + +Cette documentation est largement inspirée de la [documentation officielle](https://docs.gitea.io/en-us/). + +## Préparer la base de données + +On commence pour plus de sécurité par changer le type de chiffrement utilisé, en effet le chiffrment md5 est utilisé par défaut mais n'est plus le meilleur, on préfèrera utiliser le chiffrement SCRAM-SHA-256. Pour faire cela on édite le fichier `postgres.conf` (son emplacement peut changer selon la distribution) et on remplace + +``` +password_encryption = md5 +``` + +par + +``` +password_encryption = scram-sha-256 +``` + +puis on se connecte au shell postgres en entrant `sudo -u postgres psql` pour créer un utilisateur pour gitea : + +``` +CREATE ROLE gitea WITH LOGIN PASSWORD ''; +``` + +on crée ensuite la base de données : + +``` +CREATE DATABASE giteadb WITH OWNER gitea TEMPLATE template0 ENCODING UTF8 LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8'; +``` + +Enfin on autorise les connection en éditant le fichier `pg_hba.conf` : + +* S'il s'agit d'une bdd locale : +``` +local giteadb gitea scram-sha-256 +``` +* S'il s'agit d'une bdd distante (penser à changer l'IP) : +``` +host giteadb gitea 192.0.2.10/32 scram-sha-256 +``` + +## Mettre en place le serveur + +{{< hint warning >}} +D'abord pensez à vérifier que Git est installé (`git --version` par exemple) sinon faites le. +{{< /hint >}} + +On va commencer par créer un utilisateur git pour le serveur : + +``` +adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --disabled-password --home /home/git git +``` + +On va baser notre installation dans le dossier /DATA/gitea qu'il faut donc créer au préalable et on s'y rend `cd /DATA/gitea`. Dans celui-ci on crée les dossiers config, custom, data, log et versions avec la commande `mkdir {config,custom,data,log,versions}`. On peut ensuite télécharger la dernière version de gitea (pensez à remplacer et avec les numéros de version et l'architecture qui conviennent, par exemple 1.12.2 et arm-6) avec la commande `wget -O versions/gitea- https://dl.gitea.io/gitea//gitea--linux-` que l'on rend exécutable en lançant `chmod +x versions/gitea-` puis on termine en créant un lien symbolique à la racine du dossier `ln -s /DATA/versions/gitea- /DATA/gitea-latest`. Ainsi pour mettre à jour l'exécutable il suffira de télécharger la dernière versions de la même manière qu'ici et de mettre à jour le lien symbolique, aussi rétrograder son instance vers une ancienne version se fera très simplement. + +On va attribuer le dossier de gitea à l'utilisateur git avec `chown -R git:git /DATA/gitea` puis changer les permissions avec `chmod -R 750 /DATA/gitea`. Enfin on crée un fichier `gitea.service` par exemple `nano /DATA/gitea/gitea.service` et on y place ce contenu : + +``` +[Unit] +Description=Gitea (Git with a cup of tea) +After=syslog.target +After=network.target + +Requires=postgresql.service + +[Service] +RestartSec=2s +Type=simple +User=git +Group=git +WorkingDirectory=/DATA/gitea/ +ExecStart=/DATA/gitea/gitea-latest web +Restart=always +Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/DATA/gitea + +[Install] +WantedBy=multi-user.target +``` + +On finit par activer le système en faisant `sudo systemctl enable --now /DATA/gitea/gitea.service`. On peut modifier les droit pour plus de sécurité maintenant avec `chmod 640 /DATA/gitea/config/app.ini`.