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