Outils pour utilisateurs

Outils du site


admin:services:forge.chapril.org

Service forge.chapril.org

Cette version est adaptée de celle du SI April.

Installation

Procédure d'installation inspirée de https://docs.gitea.io/en-us/install-from-binary/ où Gitea consiste en un unique binaire.

À noter l'absence de paquet dans Debian : https://docs.gitea.io/en-us/install-from-package/#debian

À noter l'absence de paquet deb pertinent :

Although there is a package of Gitea in Debian’s contrib, it is not supported directly by us.
Unfortunately, the package is not maintained anymore and broken because of missing sources. Please follow the deployment from binary guide instead.
La documentation est traduite en français mais pas complétement. La consultation en version française peut vous faire perdre beaucoup d'informations utiles. Voir par exemple entre https://docs.gitea.io/en-us/install-from-binary/ et https://docs.gitea.io/fr-fr/install-from-binary/.

Déploiement du domaine sur la vm dns

Suivre la procédure d'ajout d'un domaine.

Déploiement du domaine sur la vm bastion

Sur la vm bastion, configurer un nouveau site :

=(^-^)=root@bastion:/etc/nginx/sites-enabled# cat forge.chapril.org 
server {
    listen 80;
    listen [::]:80;

    server_name forge.chapril.org; 

    access_log /var/log/nginx/forge.chapril.org/forge.chapril.org-access.log;
    error_log /var/log/nginx/forge.chapril.org/forge.chapril.org-error.log;

    include /etc/nginx/acme-challenge;
    include /etc/nginx/sexy-chapril;
    include /etc/nginx/force-ssl.conf;
}

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

    server_name forge.chapril.org;
    include /etc/nginx/sexy-chapril;

    access_log /var/log/nginx/forge.chapril.org/forge.chapril.org-access.log;
    error_log /var/log/nginx/forge.chapril.org/forge.chapril.org-error.log;

    ssl_certificate     /var/lib/dehydrated/certs/forge.chapril.org/fullchain.pem;
    ssl_certificate_key /var/lib/dehydrated/certs/forge.chapril.org/privkey.pem;

    include /etc/nginx/acme-challenge;
    include /etc/nginx/chapril-banner-location;

    client_max_body_size 100M;

    location / {
        include /etc/nginx/chapril-banner;
        proxy_pass http://grof.cluster.chapril.org;
    }
}

Afin d'autoriser des téléversements de fichier de plus d'1Mo, s'assurer de la présence d'une ligne dédiée dans la configuration Nginx du site :

client_max_body_size 100M;

Installation d'un serveur HTTP sur la vm grof

Sur la vm grof, installer Apache2 :

apt-get install apache2

Configuration de la propagation proxy :

=(^-^)=root@grof:/etc/apache2# cat conf-available/reverse-proxy.conf 
<IfModule !remoteip_module>
        LoadModule remoteip_module /usr/lib/apache2/modules/mod_remoteip.so
</IfModule>

<IfModule remoteip_module>
        RemoteIPHeader X-Forwarded-For
        RemoteIPInternalProxy 192.168.1.93 2a01:4f8:10b:c42::93 2a01:4f8:10b:c41::93
        LogFormat "%a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined-proxy
</IfModule>

cd /etc/apache2/conf-enable/
ln -s ../conf-available/reverse-proxy.conf

Déploiement du domaine sur la vm grof

Sur la vm grof, activer les modules proxy et proxy_http :

a2enmod proxy
a2enmod proxy_http
systemctl restart apache2

La documentation officielle pour Apache : https://docs.gitea.io/en-us/reverse-proxies/

Application :

=(^-^)=root@grof:/etc/apache2/sites-enabled# cat forge.chapril.org.conf 
<VirtualHost *:80>
    ServerName forge.chapril.org
    ServerAdmin admins@chapril.org

    ErrorLog ${APACHE_LOG_DIR}/forge.chapril.org/forge.april.org-error.log
    CustomLog ${APACHE_LOG_DIR}/forge.chapril.org/forge.april.org-access.log combined-proxy

    ProxyPreserveHost On
    ProxyRequests off
    AllowEncodedSlashes NoDecode
    ProxyPass / http://localhost:3000/ nocanon
    ProxyPassReverse / http://localhost:3000/
</VirtualHost>

Configuration SMTP

Configuration de Postfix pour que les courriels de Gitea partent correctement :

=(^-^)=root@grof:~# grep smtpd_use_tls /etc/postfix/main.cf
smtpd_use_tls=no

Installation de PostgreSQL

Installer le paquet serveur de la base de données:

apt install postgresql postgresql-contrib

D'après la documentation d'installation de Gitea :

PostgreSQL uses md5 challenge-response encryption scheme for password authentication by default.
Nowadays this scheme is not considered secure anymore. Use SCRAM-SHA-256 scheme instead by editing
the postgresql.conf configuration file on the database server to:

password_encryption = scram-sha-256

Restart PostgreSQL to apply the setting.

Le conseil semble judicieux donc éditer le fichier /etc/postgresql/11/main/postgresql.conf :

#password_encryption = md5              # md5 or scram-sha-256
password_encryption = scram-sha-256

Et redémarrer le service :

systemctl restart postgresql.service

Préparation de la base de données

Note : Gitea semble insister pour mettre un mot de passe pour l'accès à la base de données.

Créer un utilisateur (« role » en langage Pgsql) :

su -c "psql" - postgres
CREATE ROLE giteadbadmin WITH LOGIN PASSWORD 'xxxxxxxxxxxxx';

Créer une base de données :

CREATE DATABASE giteadb WITH OWNER gitea-dbadmin TEMPLATE template0 ENCODING UTF8 LC_COLLATE 'fr_FR.UTF-8' LC_CTYPE 'fr_FR.UTF-8';

Donner l'accès en éditant le ficher /etc/postgresql/11/main/pg_hba.conf :

local    giteadb    gitea    scram-sha-256

Redémarrer le service :

restart postgresql.service

Création d'une partition dédiée

Afin que les données (dépôts…) de Gitea soient isolées de la partition système, utilisation d'un second disque.

Via virt-manager, créer une partition qcow2 de 30 Go puis l'ajouter à la vm grof. Le reste se fait sur vm grof.

Création de la partition de stockage :

fdisk  /dev/vdb

Choisir n puis les choix par défaut. Écrire la table des partitions.

Création du Volume Group et Logic Volume :

pvcreate  /dev/vdb1
vgcreate grof-data-vg /dev/vdb1
lvcreate -l 100%FREE -n gitea grof-data-vg

Création du FS et du dossier de montage :

mke2fs -L gitea -e remount-ro -m 0 /dev/mapper/grof--data--vg-gitea
mkdir /srv/gitea

Définition dans /etc/fstab :

/dev/mapper/grof--data--vg-gitea  /srv/gitea              ext4    defaults        0       2

Premier montage :

mkdir /srv/gitea
mount
chown gitea.gitea /srv/gitea

Création d'un utilisateur système dédié

Créer un utilisateur système dédié :

adduser \
   --system \
   --shell /bin/bash \
   --gecos 'Git Version Control' \
   --group \
   --disabled-password \
   --home /srv/gitea/ \
   gitea

Préparation des fichiers

Création de l'arborescence dédiée :

export GITEA_WORK_DIR=/srv/gitea
mkdir -p $GITEA_WORK_DIR/{backups,bin,custom,data,repositories}

chown root:gitea $GITEA_WORK_DIR
chown root:root $GITEA_WORK_DIR/{bin,custom}
chown gitea:gitea $GITEA_WORK_DIR/{backups,data,repositories}

chmod u=rwx,g=rx,o= $GITEA_WORK_DIR
chmod u=rwx,g=rx,o=rx $GITEA_WORK_DIR/{bin,custom}
chmod u=rwx,g=rx,o= $GITEA_WORK_DIR/{backups,data,repositories}

mkdir /etc/gitea
chown root:gitea /etc/gitea
chmod ug=rwx /etc/gitea
chmod o= /etc/gitea

mkdir /var/log/gitea
chown gitea.gitea /var/log/gitea

Récupération du binaire

Gitea consiste en un seul fichier binaire :

mkdir /srv/gitea/bin
cd /srv/gitea/bin/

wget -O gitea https://dl.gitea.io/gitea/1.11.1/gitea-1.11.1-linux-amd64
chown root.gitea . gitea
chmod g=rx . gitea

Vérification signature :

wget https://dl.gitea.io/gitea/1.11.1/gitea-1.11.1-linux-amd64.asc
gpg --keyserver pgp.mit.edu --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
gpg --verify gitea-1.11.1-linux-amd64.asc gitea

Intégration du service dans Systemd

La documentation de Gitea contient une page dédiée :

Gitea propose un fichier prêt à l'emploi dont il faut modifier manuellement quelques paramètres :

Fichier personnalisé pour la forge April à mettre dans /etc/systemd/system/gitea.service :

[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
Requires=postgresql.service

[Service]
# Modify these two values and uncomment them if you have
# repos with lots of files and get an HTTP error 500 because
# of that
###
#LimitMEMLOCK=infinity
#LimitNOFILE=65535
RestartSec=2s
Type=simple
User=gitea
Group=gitea
WorkingDirectory=/srv/gitea
ExecStart=/srv/gitea/bin/gitea --config /etc/gitea/gitea.ini web
ExecStop=/srv/gitea/bin/gitea --config /etc/gitea/gitea.ini manager flush-queues
ExecStop=/srv/gitea/bin/gitea --config /etc/gitea/gitea.ini manager shutdown
Restart=always
Environment=USER=gitea HOME=/srv/gitea/

[Install]
WantedBy=multi-user.target

Démarrage et activation du service :

systemctl start gitea.service
systemctl enable gitea.service

Premier démarrage

Suite au premier démarrage, ouvrir un navigateur web sur le site et cliquer sur « connexion ». Alors une page de configuration générale s'ouvre. La remplir comme suit :

  • base de données :
    • type de base de données : Postgresql
    • hôte : 127.0.0.1:5432
    • nom d'utilisateur : giteadbadmin
    • mot de passe : xxxxxxxxxxxx
    • nom de la base : giteadb
  • configuration générale :
    • titre du site : La forge Chapril
    • emplacement racine des dépôts : /srv/gitea/repositories
    • domaine du serveur SSH : forge.chapril.org
    • URL de base de Gitea : https://forge.chapril.org/
    • chemin des fichiers log : /var/log/gitea/
    • laisser les autres valeurs par défaut
  • paramètres facultatifs :
    • paramètres emails :
      • hôte SMTP : localhost:25
      • envoyer les mails en tant que : admins@chapril.org
      • exiger la confirmation de l'email lors de l'inscription : oui
      • activer les notifications par email : oui
    • paramètres serveurs et tierces parties :
      • activer le mode hors-ligne : OUI (servira toutes les ressources localement)
      • désactiver Gravatar : OUI
      • activer les avatars unifiés : NON
      • activer l'inscription OpenID : NON
      • désactiver le formulaire d'inscription : non
      • n'autoriser l'inscription qu'à partir des services externes : non
      • activer l'inscription OpenID : non
      • activer le CAPTCHA : OUI
      • exiger la connexion à un compte pour afficher les pages : non
      • masquer les adresses e-mail par défaut : non
      • autoriser la création d'organisation par défaut : oui
      • activer le suivi de temps par défaut : NON
    • paramètres de compte administrateur :
      • nom : chapriladmin (admin est refusé par le formulaire)
      • mot de passe : xxxxxxxxxxx
      • adresse email : admins@chapril.org

Puis cliquer sur « Installer Gitea ».

Un fichier de configuration a été créé dans /etc/gitea/gitea.ini. Par la suite, les valeurs pourront être modifiées dans /etc/gitea/gitea.ini. Précaution de protection du fichier de configuration :

chown -R root:gitea /etc/gitea
chmod g=rx /etc/gitea
chmod g=r /etc/gitea/gitea.ini

Paramétrages complémentaires

Dans la page https://docs.gitea.io/en-us/config-cheat-sheet/, des paramétrages affinés sont trouvables à faire dans /etc/gitea/gitea.ini.

section par défaut

APP_NAME = La forge Chapril
RUN_USER = gitea
RUN_MODE = prod
WORK_PATH = /srv/gitea

base de données

[database]
DB_TYPE  = postgres
HOST     = /run/postgresql
NAME     = giteadb
USER     = giteadbadmin
PASSWD   = [REDACTED]
SCHEMA   = 
SSL_MODE = disable
CHARSET  = utf8

Désactivation des appels aux services externes

[picture]
DISABLE_GRAVATAR        = true
ENABLE_FEDERATED_AVATAR = false

[openid]
ENABLE_OPENID_SIGNIN = false
ENABLE_OPENID_SIGNUP = false

Licences préférées

Extrait de la documentation :

PREFERRED_LICENSES: Apache License 2.0,MIT License:
    Preferred Licenses to place at the top of the list.
    Name must match file name in conf/license or custom/conf/license.

Les noms de fichiers à utiliser sont présents dans les sources : https://github.com/go-gitea/gitea/tree/master/options/license

Paramétrage dans /etc/gitea/gitea.ini :

[repository]
ROOT = /srv/gitea/repositories
PREFERRED_LICENSES=AGPL-3.0-or-later,GPL-3.0-or-later,CC-BY-SA-4.0

lfs

[lfs]
PATH = /srv/gitea/data/lfs

Taille maximale de téléversement

Par défaut, la taille maximale d'un téléversement est limité à 3 Mo. Pour augmenter la taille (à 20 Mo pour la forge Chapril), ajouter une section dans /etc/gitea/gitea.ini :

[repository.upload]
; Whether repository file uploads are enabled. Defaults to `true`
; ENABLED = true
; Path for uploads. Defaults to `data/tmp/uploads` (tmp gets deleted on gitea restart)
; TEMP_PATH = data/tmp/uploads
; One or more allowed types, e.g. image/jpeg|image/png. Nothing means any file type
; ALLOWED_TYPES =
; Max size of each file in megabytes. Defaults to 3MB
FILE_MAX_SIZE = 20
; Max number of files per upload. Defaults to 5
; MAX_FILES = 5

Pour les téléversements de version (release) :

[attachment]
; Max size of each file. Defaults to 4MB
MAX_SIZE = 50

sections session et log

[session]
PROVIDER = file

[log]
MODE      = file
LEVEL     = info
ROOT_PATH = /var/log/gitea/

Désactiver l'ensemble des dépôts d'objets binaires

[packages]
; Enable/Disable package registry capabilities
ENABLED = false

Personnalisation

Basée sur la page https://docs.gitea.io/en-us/customizing-gitea/

Le dossier root@grof:/srv/gitea/custom est un dépôt git. Le but est d'avoir un suivi des modifications.

Page d'accueil

Personnalisation aux couleurs de l'April du logo d'accueil est des 4 textes.

Récupérer l'image ci-dessus et la placer au bon endroit avec les bonnes permissions :

mkdir -p /srv/gitea/custom/public
cd /srv/gitea/custom/public/
wget https://admin.chapril.org/lib/exe/fetch.php?media=admin:services:logo-forgechaprilorg.png
chmod go+r *png

Récupérer le fichier template :

mkdir -p /srv/gitea/custom/templates
cd /srv/gitea/custom/templates
wget https://raw.githubusercontent.com/go-gitea/gitea/v1.14.0/templates/home.tmpl

Appliquer les changements suivants :

=(^-^)=root@grof:/srv/gitea/custom/templates# diff home.tmpl-1.14.0 home.tmpl
1a2,7
> <style type="text/css">
> .home .hero .svg {color: #1c79c5 !important;}
> .ui.icon.header svg {width: 40px !important; height: 40px !important; display: inline !important; vertical-align: middle !important; margin-right: 5px;}
> .hero {font-weight: bold !important;}
> .full.height {padding-bottom : 10px !important; }
> </style>
6c12
<                               <img class="logo" width="220" height="220" src="{{StaticUrlPrefix}}/img/logo.svg"/>
---
>                               <img class="logo" width="220" height="136" src="{{StaticUrlPrefix}}/logo-forgechaprilorg.png"/>
12c18
<                               <h2>{{.i18n.Tr "startpage.app_desc"}}</h2>
---
>                               <h2>Plateforme collaborative de contributions libres.</h2>
19c25
<                               {{svg "octicon-flame"}} {{.i18n.Tr "startpage.install"}}
---
>                               {{svg "octicon-flame"}} Qui peut avoir un compte ?
22c28
<                               {{.i18n.Tr "startpage.install_desc" | Str2html}}
---
>                               Tout le monde, cette instance est ouverte au public.
27c33
<                               {{svg "octicon-device-desktop"}} {{.i18n.Tr "startpage.platform"}}
---
>                               {{svg "octicon-device-desktop"}} Quels contenus sont acceptés ?
30c36
<                               {{.i18n.Tr "startpage.platform_desc" | Str2html}}
---
>                               La forge Chapril accueille tout type de contenu tel que code source, documentation, graphique, artistique, littéraire, etc.
37c43
<                               {{svg "octicon-rocket"}} {{.i18n.Tr "startpage.lightweight"}}
---
>                               {{svg "octicon-rocket"}} Comment créer un compte ?
40c46
<                               {{.i18n.Tr "startpage.lightweight_desc" | Str2html}}
---
>                               La création de compte se fait par une procédure d'inscription classique.
45c51
<                               {{svg "octicon-code"}} {{.i18n.Tr "startpage.license"}}
---
>                               {{svg "octicon-code"}} Licences libres
48c54,55
<                               {{.i18n.Tr "startpage.license_desc" | Str2html}}
---
>                               Tous les dépôts présents sur cette forge sont sous <b>licences libres</b>, au sens de la Free Software Foundation à l'exception des licences Creative Commons en ND ou NC qui sont exclues.<br/>
>                               <a href="https://www.chapril.org/cgu.html#forgechaprilorg-cpu">Consulter les Conditions particulières d'utilisation</a>.

Redémarrer Gitea :

systemctl restart gitea

Barre de navigation

Personnalisation aux couleurs de l'April de l'icône sur la barre de navigation :

Récupérer l'image ci-dessus et la placer au bon endroit avec les bonnes permissions :

mkdir -p /srv/gitea/custom/public/img
cd /srv/gitea/custom/public/img
wget https://admin.chapril.org/lib/exe/fetch.php?media=admin:services:logo-forgechaprilorg-mini2.png
mv /root/april-logo-bluegitea.png gitea-sm.png
chmod go+r *png
systemctl restart gitea

Télécharger la page de code au bon endroit :

mkdir -p /srv/gitea/custom/templates/base
cd /srv/gitea/custom/templates/base
wget https://raw.githubusercontent.com/go-gitea/gitea/release/v1.14/templates/base/head_navbar.tmpl

La personnaliser :

=(^-^)=root@grof:/srv/gitea/custom/templates/base# diff head_navbar.tmpl-1.14.0 head_navbar.tmpl
4c4
<                       <img class="ui mini image" with="30" height="30" src="{{StaticUrlPrefix}}/img/logo.svg">
---
>                       <img class="ui mini image" with="30" height="30" src="{{StaticUrlPrefix}}/img/gitea-sm.png">

Favicon

Personnalisation aux couleurs de l'April du favicon :

Récupérer les deux images ci-dessus et les placer au bon endroit avec les bonnes permissions :

mkdir -p /srv/gitea/custom/public/img
cd /srv/gitea/custom/public/img
wget https://admin.chapril.org/lib/exe/fetch.php?media=admin:services:favicon-forgechaprilorg.png
mv favicon-forgechaprilorg.png favicon.png
wget https://admin.chapril.org/lib/exe/fetch.php?media=admin:services:favicon-forgechaprilorg.svg
mv favicon-forgechaprilorg.svg logo.svg
wget https://admin.chapril.org/lib/exe/fetch.php?media=admin:services:logo-forgechaprilorg02.png
mv logo-forgechaprilorg02.png gitea-lg.png
chmod go+r *png *svg
ln -s logo.svg favicon.svg
systemctl restart gitea

Pages « S'inscrire »

À la création de compte, il faut rappeler les CGU et les CPU.

Possible en personnalisant le fichier signup.tmpl :

=(^-^)=root@grof:/srv/gitea/custom/templates/user/auth# cat signup.tmpl
{{template "base/head" .}}
<div style="background: #ffc; border-radius: 20px; min-height: 40px; margin: 2em auto; padding: 15px 20px 15px 80px; border-collapse: collapse; min-width: 400px; max-width: 40%; background-image: url(https://forge.chapril.org/img/important.png); background-position: 20px 50%; background-repeat: no-repeat; text-align: center;">
En créant un compte, vous acceptez les <a href="https://www.chapril.org/cgu.html">conditions générales d'utilisation</a> du <a href="https://www.chapril.org/">Chapril</a> et les <a href="https://www.chapril.org/cgu.html#forgechaprilorg-cpu">conditions particulières d'utilisation</a> du service <i>forge.chapril.org</i>.<br/>
Notamment, vous vous engagez à ce que tous les contenus de vos dépôts soient sous <a href="https://www.gnu.org/licenses/license-list.fr.html">licence libre</a>, au sens de la Free Software Foundation.
</div>
<div class="page-content user signin{{if .LinkAccountMode}} icon{{end}}">
        <div class="ui middle very relaxed page grid">
                {{template "user/auth/signup_inner" .}}
        </div>
</div>
{{template "base/footer" .}}

Pages internes

À faire.

Courriel d'activation d'un compte

Les courriels soient par défaut en anglais : https://github.com/go-gitea/gitea/blob/master/templates/mail/auth/activate.tmpl

Mais est prévu un système de template custom : https://docs.gitea.io/en-us/mail-templates/

Copier le fichier depuis le dépôt source dans le bon tag puis le modifier :

<!DOCTYPE html>
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>{{.DisplayName}}, veuillez activer votre compte</title>
</head>

<body>
  <p>Bonjour <b>{{.DisplayName}}</b>, merci pour votre inscription à {{AppName}} !</p>
 <p>Veuillez cliquer sur le lien suivant pour activer votre compte avant <b>{{.ActiveCodeLives}}</b> :</p>
 <p><a href="{{AppUrl}}user/activate?code={{.Code}}">{{AppUrl}}user/activate?code={{.Code}}</a></p>
 <p>Un problème ? Essayez en copiant/collant le lien dans votre navigateur web.</p>
 <p>© <a target="_blank" rel="noopener noreferrer" href="{{AppUrl}}">{{AppName}}</a></p>
</body>
</html>

Activer le flux SSH

Pour git clone/push/pull, il est bien pratique de passer par ssh. Sauf qu'en ipv4, le port 22 est déjà redirigé vers la vm bastion qui proxifie les accès SSH aux vm.

Du coup, choix architectural d'utiliser un port dédié à la forge :

user ---> vip:222 --nat-ipv4-> grof:222

Configuration dans /etc/gitea/gitea.ini :

SSH_PORT         = 222

Configuration dédiée de firehol :

=(^-^)=root@grof:/etc/firehol# cat services/gitea.conf 
#FHVER: 1:213
# La premiere ligne ci dessus est nécessaire !!
server_gitea_ports="tcp/222"
client_gitea_ports="default"

=(^-^)=root@grof:/etc/firehol# grep gitea firehol-ext2me.conf 
    server gitea accept

Gestion du port 222 par ssh :

diff --git a/ssh/sshd_config b/ssh/sshd_config
-#Port 22
+Port 22
+Port 222

Pour rappel, dans /etc/ssh/sshd_config, est configuré AuthorizedKeysFile /etc/ssh/authorized_keys/%u. Afin que le fichier /srv/gitea/.ssh/authorized_keys soit pris en compte, il faut faire un lien :

ln -s /srv/gitea/.ssh/authorized_keys /etc/ssh/authorized_keys/gitea

Redirection du port 222 depuis vip vers le port 22 de la vm grof :

TODO

Première utilisation

Actions :

  • création du compte chapriladmin ;
  • création d'un dépôt bac à sable.

Procédure de mise à jour

Constat :

Ajouter une mise à jour planifiée sur https://status.chapril.org/dashboard/schedule en utilisant le modèle prévu à cet effet.

Donc la procédure de mise à jour peut consister, en utilisant un multiplexeur de terminal, à :

  • définir dans une variable le numéro de la nouvelle version :
    export VERSION=1.X.Y
  • Lancer le script de mise à jour:
    /srv/forge.chapril.org/tools/upgrade.sh verify download
    /srv/forge.chapril.org/tools/upgrade.sh stop backup
    /srv/forge.chapril.org/tools/upgrade.sh check
    # corriger les éventuels problèmes
    /srv/forge.chapril.org/tools/upgrade.sh upgrade
    # être attentif aux éventuels problèmes
    /srv/forge.chapril.org/tools/upgrade.sh start
  • surveiller les logs :
    tail -f /var/log/gitea/gitea.log
    tail -f /var/log/apache2/forge.chapril.org/forge.chapril.org-error.log
  • supprimer manuellement l'ancien dump ;
  • vérifier que les personnalisations ne sont pas cassées :
    • https://forge.chapril.org/ sans être authentifié
      • vérifier la présence de la bannière Chapril avec notamment les liens Accueil Chapril, CGU, Mentions légales et le logo de l'April
      • logo (bleu, un profil de chat dans la tasse)
      • Chercher le texte La forge Chapril dans la page
      • favicon identique au logo
      • vérifier qu'il y a un lien Help/Aide dans le pied de page à gauche de la version de Go*
      • vérifier la présence des liens Help/Aide et support dans la barre de navigation supérieure, à droite de explore
      • petit encart jaune En créant un compte, vous acceptez …
      • logo a gauche de la barre de navigation
    • Enregistrer un compte pour vérifier que le courriel d'activation d'un compte est en français
    • en étant authentifié:
      • vérifier la présence des liens Help/Aide et support dans la barre de navigation supérieure, à droite de explore

Procédure de restauration

Il n'existe pas de commande gitea pour restaurer une sauvegarde (mais la documentation mentionne un ensemble de commandes), il faut décompresser la sauvegarde et copier les différents éléments:

  • le fichier de configuration app.ini
  • les données, les logs, les dépôts
  • la base de données

Tâches récurrentes et modération

En plus de la mise à jour du service décrite précédemment, l'administration de la forge nécessite de réaliser deux autres tâches récurrentes qui sont des actions de modération:

  • modération des comptes: suppression sans préavis ni avertissement des comptes créés par des robots
    • Pour connaître l'IP utilisée lors de la création d'un compte:
      1. Via l'interface d'administration, notez la date et l'heure de la création du compte
      2. Puis recherchez la date et l'heure dans les logs: journalctl -u gitea -S -1w -g 'POST[^/]+/user/sign_up'
  • Trouver les comptes récemment créés et actifs (afin de supprimer les nouvelles issues crées par les spammeurs) (pour créer un token):
    for x in $(curl  -H "Authorization: token $token" https://forge.chapril.org/api/v1/admin/users | jq -r '.[] | select(.id > 3100) | select(.id | IN(3394, 3288, 3271, 3132) | not) | .login'); do test $(curl  -sH "Authorization: token $token" https://forge.chapril.org/api/v1/users/$x/activities/feeds | jq 'map(select(.op_type | IN("comment_issue", "create_issue")))| length') -ne 0 && echo https://forge.chapril.org/$x?tab=activity ; done
  • Supprimer un range :
    for x in $(curl  -H "Authorization: token $token" https://forge.chapril.org/api/v1/admin/users | jq -r '(.[] | select(.id > 3330)) | select(.id < 3394)| .login'); do curl  -H "Authorization: token $token" -X DELETE -H "Content-Type: application/json" https://forge.chapril.org/api/v1/admin/users/$x?delete=true ; done
  • Sélection des comptes récents contenant des liens en description :
    for x in $(curl  -H "Authorization: token $token" https://forge.chapril.org/api/v1/admin/users | jq -r '.[] | select(.id > 10317) | .login'); do curl -sH "Authorization: token $token" https://forge.chapril.org/api/v1/users/$x | jq -er "select(.website != \"\" or (.description | test(\"http\"))) | .login + \" repositories: $(curl -sH "Authorization: token $token" https://forge.chapril.org/api/v1/users/$x/repos | jq length)\\n\n\" + .website + .description + \"\\n\"" && (read -e -p "Delete ? " delete; [[ "$delete" == [Yy]* ]] && clear && curl  -H "Authorization: token $token" -X DELETE -H "Content-Type: application/json" https://forge.chapril.org/api/v1/admin/users/$x?purge=true && echo -e "deleted\n" && echo $x >> /tmp/deleted); done
  • trouver les comptes ayant plusieurs fois un caractère donné dans l'email
    giteadb=# select id, name, email, (CHAR_LENGTH(split_part(email, '@', 1)) - CHAR_LENGTH(REPLACE(split_part(email, '@', 1), '.', ''))) as c from "user" where (CHAR_LENGTH(split_part(email, '@', 1)) - CHAR_LENGTH(REPLACE(split_part(email, '@', 1), '.', ''))) > 3 order by c;
  • modération des dépôts: en cas d'absence de licence ou de licence non conforme aux CGU, envoi d'un mail à l'utilisateur et suppression si au bout de 15 jours celui-ci ne s'est pas mis pas en conformité avec les CGU.
admin/services/forge.chapril.org.txt · Dernière modification : 2024/10/27 16:42 de pilou