Table of Contents

Gitea

Gitea se présente comme un service d'hébergement et d'accès à des dépôts Git, en open-source et sans trop de douleur.

Il s'agit d'un logiciel que l'on peut comparer à CGit ou GitWeb. Il est écrit en Go, est facile à installer et à mettre à jour (sous réserve de bien lire les releases notes, mais comme pour toutes les applications, hein ?).

Installation

Installation


Pour l'installation, l'article le plus complet que j'ai trouvé (et sur lequel je me suis basé :-)) est disponible [ici](https://jeremyverda.net/installing-gitea-on-debian/).

L'installation est relativement simple; le plus compliqué a été de découvrir certaines spécificités et de rendre le service disponible depuis un sous-répertoire sur Nginx.

```bash adduser –disabled-login –gecos 'gitea' git su - git ```

Comme le rappelle `man adduser` (et aussi le [forum AskUbuntu](https://askubuntu.com/questions/420784/what-do-the-disabled-login-and-gecos-options-of-adduser-command-stand)):

``` –disabled-login

  Do not run passwd to set the password.  The user won't be able
  to use  her  account until the password is set.

–gecos GECOS

  Set  the  gecos field for the new entry generated.  adduser will
  not ask for finger information if this option is given.

```

Voir [ici](https://en.wikipedia.org/wiki/Gecos_field) pour la signification de `GECOS` (TL;DR: on s'attend à avoir le nom, le bâtiment/la chambre, le numéro de téléphone pro, le numéro de téléphone privé et toute autre information, séparées par des virgules).

Téléchargez ensuite la bonne version de l'application en fonction de votre architecture, sur la [page de téléchargement](https://dl.gitea.io/) et rendez le exécutable. Attention donc que pour un serveur ARM type Raspberry-Pi, vous ne devrez surtout pas prendre les fichiers type `amd64`. Oui, ça a l'air logique, mais sur le coup, en suivant [le tuto d'installation](https://docs.gitea.io/en-us/install-from-binary/) pas-à-pas, ça l'est moins.

Après l'installation, et au premier démarrage, Gitea créera un fichier de configuration spécifique qu'il placera à l'emplacement `custom/conf/app.ini`. Créez déjà les répertoires de stockage pour les données: `mkdir -p custom/conf data`, puis démarrer l'application via `./gitea web`.

Si vous souhaitez démarrer Gitea dans un sous-répertoire du domaine, coupez le service, modifiez le fichier afin d'y ajouter `[server] ROOT_URL = /git/` et redémarrez-le ensuite.

Configuration Nginx

### Configuration Nginx

```bash server {

  listen 443 ssl;
  ssl_protocols TLSv1.1 TLSv1.2;
  [...]
  location /git/ {
      proxy_pass http://localhost:3000/;
      client_max_body_size 100M;
  }
  [...]

```

Et démarrez le service à la main: `./gitea web`. Vous pourrez ensuite passer à l'installation, en vous rendant sur la bonne page.

Une fois que tout sera correctement installé, on peut passer à la (re)configuration via le fichier `custom/conf/app.ini`. Le seul changement que j'ai appliqué consiste à modifier la section `[server]`:

```ini [server] PROTOCOL = http ROOT_URL = https://grimbox.be/git/ SSH_DOMAIN = grimbox.be DOMAIN = grimbox.be HTTP_PORT = 3000 HTTP_ADDR = 0.0.0.0 DISABLE_SSH = false SSH_PORT = 22 LFS_START_SERVER = true ```

### Configuration Supervisord

La documentation conseille de passer par [systemd](https://freedesktop.org/wiki/Software/systemd/), mais le tuto conseille plutôt de passer par [supervisor](http://supervisord.org/), ce qui revient +/- au même:

```bash apt install supervisor mkdir /var/log/gitea vim /etc/supervisor/conf.d/gitea.conf ```

Et copiez le contenu ci-dessous:

```ini [program:gitea] directory=/home/git/ command=/home/git/gitea web autostart=true autorestart=true startsecs=10 stdout_logfile=/var/log/gitea/stdout.log stdout_logfile_maxbytes=1MB stdout_logfile_backups=10 stdout_capture_maxbytes=1MB stderr_logfile=/var/log/gitea/stderr.log stderr_logfile_maxbytes=1MB stderr_logfile_backups=10 stderr_capture_maxbytes=1MB environment = HOME=“/home/git”, USER=“git” ```

Et on termine par `supervisorctl start gitea` (après avoir arrêté l'instance qui tourne déjà en manuel :-)).

Backup

Backup


Toute la magie tient dans une seule commande: `./gitea dump`.

Cela créera une archive ~timestampée~ ~horodatée~ avec un indice. Générée le 04/07/2018 à 13h16, elle porte par exemple l'indice 1530702980. Ajoutez donc ce dump dans un crontab, et envoyez le tout vers votre dépôt Borg préféré :-)

Restore


Vous pouvez dézipper l'archive générée ci-dessus, mais la structure sera différente de l'arborescence des fichiers attendus par Gitea. Les répertoires `custom` et `data` se trouveront aux bons endroits, mais la base de données devra être reconfigurée en fonction de votre configuration (avec du SQLite, c'est plus simple…).

Idem pour les dépôts: ils sont archivés dans un fichier `gitea-repo.zip` à l'intérieur du dump réalisé ci-dessus.

Comme l'indique la [documentation](https://docs.gitea.io/en-us/backup-and-restore/), il n'y a donc pas de processus automatique.

Mise à jour

supervisorctl stop gitea
su - git
./gitea dump
wget <gitea_url> # Voir https://dl.gitea.com/gitea
cp <gitea_url_result> gitea
chmod +x gitea
exit
supervisorctl start gitea