Une forge est toujours utile, mais depuis le passage à PHP7 et l’arrêt du support de indefero, je n’en avais plus. J’ai d’abord voulu installer gitlab, mais la procédure d’installation est trop invasive à mon goût. Je me suis donc tourné vers Gitea.

Télécharger le binaire

cd /usr/local/src/
wget https://dl.gitea.io/gitea/1.12.3/gitea-1.12.3-linux-arm-6.xz
unxz gitea-1.12.3-linux-arm-6.xz
mv gitea-1.12.3-linux-arm-6 /usr/local/bin/gitea
chmod +x /usr/local/bin/gitea

Créer l’environnement de travail

Utilisateur et dossiers

Pour se faciliter le travail on va déclarer 2 variables, ainsi il sera plus facile d’adapter l’installation à votre configuration

export GITPATH=/var/lib/git
export GITEAPATH=/var/lib/gitea
adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --disabled-password --home $GITPATH git
mkdir -p $GITEAPATH/{custom,data,log}
chown -R git:git $GITEAPATH/gitea/
chmod -R 750 $GITEAPATH
mkdir /etc/gitea
chown root:git /etc/gitea
chmod 770 /etc/gitea

SystemD

Télécharger et adapter https://raw.githubusercontent.com/go-gitea/gitea/master/contrib/systemd/gitea.service avec les valeurs de $GITPATH, $GITEAPATH, etc.

Base de données

CREATE DATABASE gitea;
CREATE ROLE gitea WITH PASSWORD '******' WITH LOGIN;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA gitea TO gitea;

NGinX et Let’s Encrypt

C’est pas la meilleure méthode, mais c’est celle qui marche pour moi : couper NGinX le temps du challenge ACME et le relancer ensuite. certbot peut le faire automatiquement avec pre-hook et post-hook :

certbot certonly --standalone -d <domaine> --pre-hook="systemctl stop nginx" --post-hook="systemctl start nginx"

Il reste à configurer NGinX. Perso je ne met pas de rewrite de HTTP vers HTTPS, principalement par flemme. Je laisse le navigateur faire son boulot en lui signifiant d’utiliser TLS via l’en-tête Strict-Transport-Security.

Sinon la configuration est assez simple : on envoie tout vers gotea, qui écoute sur le port 3000 par défaut :

server {
        listen          80;
        listen          [::]:80;
        listen          443 ssl http2;
        listen          [::]:443 ssl http2;

        ssl_certificate         /etc/letsencrypt/live/<domaine>/fullchain.pem; # managed by Certbot
        ssl_certificate_key     /etc/letsencrypt/live/<domaine>/privkey.pem; # managed by Certbot

        #HSTS
        add_header      Strict-Transport-Security "max-age=31536000";

        server_name     <domaine>;
        location / {
                proxy_cache off;
                proxy_pass http://127.0.0.1:3000;
        }
}

Il ne reste plus qu’à se rendre sur la page d’accueil pour finaliser l’installation.

Thème sombre

Pour fignoler la finition, on va changer le thème par défaut pour le thème sombre. Pour ça il faut éditer /etc/gitea/app.ini :

[ui]
DEFAULT_THEME = arc-green