Update README.md
This commit is contained in:
parent
09f9e3564d
commit
3720f4e1b2
407
README.md
407
README.md
|
@ -1,5 +1,408 @@
|
||||||
# Service FORGE
|
# Service forge.chalec.org
|
||||||
|
|
||||||
Service de forge logicielle du candidat chaton de Libre en communs.
|
Service de forge logicielle du candidat chaton de Libre en communs basé sur le logiciel libre Gitea : https://gitea.io/.
|
||||||
|
|
||||||
Responsable: Christian Momon (@cpm)
|
Responsable: Christian Momon (@cpm)
|
||||||
|
|
||||||
|
Anciens responsables : n/a.
|
||||||
|
|
||||||
|
La première version de cette documentation est basée sur la [documentation Devinsy](urlhttps://forge.devinsy.fr/adminsys/documentation/src/branch/master/forge.devinsy.fr.md).
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
Note : 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/.
|
||||||
|
|
||||||
|
|
||||||
|
# Intallation
|
||||||
|
|
||||||
|
## NGinx
|
||||||
|
|
||||||
|
Installer les paquets :
|
||||||
|
```
|
||||||
|
apt-get install nginx python3-certbot-nginx
|
||||||
|
```
|
||||||
|
|
||||||
|
Ouvrir les ports http (80) et https (443) :
|
||||||
|
```
|
||||||
|
ufw allow 'Nginx HTTP'
|
||||||
|
ufw allow 'Nginx HTTPS'
|
||||||
|
```
|
||||||
|
|
||||||
|
Configurer a minima le site web dans `/etc/nginx/sites-available/forge.chalec.org` :
|
||||||
|
```
|
||||||
|
server
|
||||||
|
{
|
||||||
|
listen 80;
|
||||||
|
listen [::]:80;
|
||||||
|
|
||||||
|
server_name forge.chalec.org;
|
||||||
|
|
||||||
|
access_log /var/log/nginx/forge.chalec.org-access.log;
|
||||||
|
error_log /var/log/nginx/forge.chalec.org-error.log;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Activer la configuration :
|
||||||
|
```
|
||||||
|
cd /etc/nginx/sites-enabled/
|
||||||
|
ln -s ../sites-available/forge.chalec.org
|
||||||
|
```
|
||||||
|
|
||||||
|
Vérifier que c'est bon et recharger :
|
||||||
|
```
|
||||||
|
nginx -t && systemctl reload nginx
|
||||||
|
```
|
||||||
|
|
||||||
|
Configurer le certificat SSl :
|
||||||
|
```
|
||||||
|
certbot --nginx
|
||||||
|
```
|
||||||
|
|
||||||
|
Créer un fichier générique `cat /etc/nginx/statoolinfos.conf` qui sera includé plus tard :
|
||||||
|
```
|
||||||
|
location /.well-known/statoolinfos/
|
||||||
|
{
|
||||||
|
types
|
||||||
|
{
|
||||||
|
text/plain properties;
|
||||||
|
}
|
||||||
|
|
||||||
|
alias /srv/statoolinfos/well-known/statoolinfos/;
|
||||||
|
autoindex on;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Mettre beau le fichier `/etc/nginx/sites-enabled/forge.chalec.org` :
|
||||||
|
```
|
||||||
|
server
|
||||||
|
{
|
||||||
|
listen 80;
|
||||||
|
listen [::]:80;
|
||||||
|
|
||||||
|
server_name forge.chalec.org;
|
||||||
|
|
||||||
|
access_log /var/log/nginx/forge.chalec.org-access.log;
|
||||||
|
error_log /var/log/nginx/forge.chalec.org-error.log;
|
||||||
|
|
||||||
|
#return 302 https://$host$request_uri;
|
||||||
|
return 302 https://forge.chalec.org$request_uri;
|
||||||
|
}
|
||||||
|
|
||||||
|
server
|
||||||
|
{
|
||||||
|
set_real_ip_from 192.169.1.1;
|
||||||
|
real_ip_header proxy_protocol;
|
||||||
|
listen [::]:443 ssl ipv6only=on;
|
||||||
|
listen 443 ssl proxy_protocol;
|
||||||
|
|
||||||
|
server_name forge.chalec.org;
|
||||||
|
|
||||||
|
access_log /var/log/nginx/forge.chalec.org-access.log;
|
||||||
|
error_log /var/log/nginx/forge.chalec.org-error.log;
|
||||||
|
|
||||||
|
ssl_certificate /etc/letsencrypt/live/forge.chalec.org/fullchain.pem; # managed by Certbot
|
||||||
|
ssl_certificate_key /etc/letsencrypt/live/forge.chalec.org/privkey.pem; # managed by Certbot
|
||||||
|
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
|
||||||
|
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
|
||||||
|
|
||||||
|
# StatoolInfos.
|
||||||
|
include /etc/nginx/statoolinfos.conf;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Vérifier que c'est bon et recharger :
|
||||||
|
```
|
||||||
|
nginx -t && systemctl reload nginx
|
||||||
|
```
|
||||||
|
|
||||||
|
## Postgresql
|
||||||
|
|
||||||
|
```
|
||||||
|
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/13/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 giteadba WITH LOGIN PASSWORD 'xxxxxxxxxxxxx';
|
||||||
|
```
|
||||||
|
|
||||||
|
Créer une base de données :
|
||||||
|
```
|
||||||
|
CREATE DATABASE giteadb WITH OWNER giteadba 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/13/main/pg_hba.conf :
|
||||||
|
```
|
||||||
|
local giteadb giteadba scram-sha-256
|
||||||
|
```
|
||||||
|
|
||||||
|
Redémarrer le service :
|
||||||
|
```
|
||||||
|
systemctl restart postgresql.service
|
||||||
|
```
|
||||||
|
|
||||||
|
## 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/ \
|
||||||
|
git
|
||||||
|
```
|
||||||
|
|
||||||
|
## Préparation des fichiers
|
||||||
|
|
||||||
|
Création de l'arborescence dédiée :
|
||||||
|
|
||||||
|
```
|
||||||
|
export GITEA_WORK_DIR=/srv/gitea
|
||||||
|
mkdir -p $GITEA_WORK_DIR/{custom,data}
|
||||||
|
chown -R git:gitea $GITEA_WORK_DIR
|
||||||
|
chmod -R ug+x $GITEA_WORK_DIR
|
||||||
|
chmod -R o-rwx $GITEA_WORK_DIR
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
mkdir /etc/gitea
|
||||||
|
chown root:gitea /etc/gitea
|
||||||
|
chmod ug+rwx /etc/gitea
|
||||||
|
chmod o-rwx /etc/gitea
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
mkdir /var/log/gitea
|
||||||
|
chown git.gitea /var/log/gitea
|
||||||
|
```
|
||||||
|
|
||||||
|
## Récupération du binaire
|
||||||
|
|
||||||
|
Gitea consiste en un seul fichier binaire :
|
||||||
|
|
||||||
|
```
|
||||||
|
mkdir /srv/gitea/bin
|
||||||
|
cd /srv/gitea/bin/
|
||||||
|
```
|
||||||
|
|
||||||
|
Identifier la dernière version : https://dl.gitea.io/gitea/
|
||||||
|
|
||||||
|
Définir la version cible :
|
||||||
|
```
|
||||||
|
export GITEA_VERSION=1.XX.X
|
||||||
|
```
|
||||||
|
|
||||||
|
La télécharger :
|
||||||
|
```
|
||||||
|
wget -O gitea https://dl.gitea.io/gitea/$GITEA_VERSION/gitea-$GITEA_VERSION-linux-amd64
|
||||||
|
chown root.gitea . gitea
|
||||||
|
chmod g=rx . gitea
|
||||||
|
```
|
||||||
|
|
||||||
|
Installer gpg :
|
||||||
|
```
|
||||||
|
apt-get install gpg
|
||||||
|
```
|
||||||
|
|
||||||
|
Vérifier sa signature :
|
||||||
|
```
|
||||||
|
wget https://dl.gitea.io/gitea/$GITEA_VERSION/gitea-$GITEA_VERSION-linux-amd64.asc
|
||||||
|
gpg --keyserver pgp.mit.edu --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
|
||||||
|
gpg --verify gitea-$GITEA_VERSION-linux-amd64.asc gitea
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Intégration du service dans Systemd
|
||||||
|
|
||||||
|
La documentation de Gitea contient une page dédiée :
|
||||||
|
|
||||||
|
https://docs.gitea.io/en-us/linux-service/
|
||||||
|
|
||||||
|
Gitea propose un fichier prêt à l'emploi dont il faut modifier manuellement quelques paramètres :
|
||||||
|
|
||||||
|
https://github.com/go-gitea/gitea/blob/master/contrib/systemd/gitea.service
|
||||||
|
|
||||||
|
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
|
||||||
|
Wants=postgresql.service
|
||||||
|
After=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=git
|
||||||
|
Group=gitea
|
||||||
|
WorkingDirectory=/srv/gitea/
|
||||||
|
ExecStart=/srv/gitea/bin/gitea web --config /etc/gitea/gitea.ini
|
||||||
|
Restart=always
|
||||||
|
Environment=USER=git HOME=/srv/gitea/ GITEA_WORK_DIR=/srv/gitea
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
```
|
||||||
|
|
||||||
|
Démarrage et activation du service :
|
||||||
|
```
|
||||||
|
systemctl enable gitea.service
|
||||||
|
systemctl start gitea.service
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## 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]
|
||||||
|
PREFERRED_LICENSES=AGPL-3.0-or-later,GPL-3.0-or-later,CC-BY-SA-4.0
|
||||||
|
```
|
||||||
|
|
||||||
|
## 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 Devinsy), 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 = 20
|
||||||
|
```
|
||||||
|
|
||||||
|
# Mettre à jour
|
||||||
|
|
||||||
|
Constat :
|
||||||
|
|
||||||
|
* Gitea consiste en un seul fichier binaire, une base de données, une arborescence de fichiers ;
|
||||||
|
* la documentation officielle de Gitea contient une page sur les backups : https://docs.gitea.io/en-us/backup-and-restore/.
|
||||||
|
|
||||||
|
Donc la procédure de mise à jour consiste juste à faire un export puis relancer avec le nouveau binaire.
|
||||||
|
|
||||||
|
## Méthode automatique
|
||||||
|
Voir le script `update-gitea`.
|
||||||
|
|
||||||
|
## Méthode manuelle
|
||||||
|
|
||||||
|
Les étapes de la méthode manuelle :
|
||||||
|
* définir dans une variable le numéro de la nouvelle version :
|
||||||
|
```
|
||||||
|
export VERSION=1.X.Y
|
||||||
|
```
|
||||||
|
|
||||||
|
* récupérer la dernière version sur https://dl.gitea.io/gitea et faire un sha256sum -c :
|
||||||
|
```
|
||||||
|
cd /srv/gitea/bin
|
||||||
|
wget https://dl.gitea.io/gitea/$VERSION/gitea-$VERSION-linux-amd64
|
||||||
|
wget https://dl.gitea.io/gitea/$VERSION/gitea-$VERSION-linux-amd64.asc
|
||||||
|
wget https://dl.gitea.io/gitea/$VERSION/gitea-$VERSION-linux-amd64.sha256
|
||||||
|
sha256sum -c gitea-$VERSION-linux-amd64.sha256
|
||||||
|
# gpg --keyserver keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
|
||||||
|
gpg --verify gitea-$VERSION-linux-amd64.asc gitea-$VERSION-linux-amd64
|
||||||
|
```
|
||||||
|
|
||||||
|
* stopper :
|
||||||
|
```
|
||||||
|
systemctl stop gitea
|
||||||
|
```
|
||||||
|
|
||||||
|
* dumper :
|
||||||
|
```
|
||||||
|
su - gitea -c "cd /srv/gitea/bin ; /srv/gitea/bin/gitea dump --tempdir /var/tmp/ -c /etc/gitea/gitea.ini"
|
||||||
|
```
|
||||||
|
|
||||||
|
* mettre les bons droits :
|
||||||
|
```
|
||||||
|
cd /srv/gitea/bin/
|
||||||
|
chown git.gitea gitea-$VERSION-linux-amd64
|
||||||
|
chmod u+x gitea
|
||||||
|
```
|
||||||
|
|
||||||
|
* remplacer le binaire /srv/gitea/bin/gitea :
|
||||||
|
```
|
||||||
|
ln --force gitea-$VERSION-linux-amd64 gitea
|
||||||
|
```
|
||||||
|
|
||||||
|
* démarrer :
|
||||||
|
```
|
||||||
|
systemctl start gitea
|
||||||
|
```
|
||||||
|
|
||||||
|
* surveiller les logs :
|
||||||
|
```
|
||||||
|
journal -f
|
||||||
|
```
|
||||||
|
ou suivant la configuration :
|
||||||
|
```
|
||||||
|
tail -f /var/log/gitea/gitea.log
|
||||||
|
```
|
||||||
|
|
||||||
|
* supprimer manuellement l'ancien dump et les anciennes versions.
|
||||||
|
|
Loading…
Reference in New Issue