Compléments & ajustements gitea

This commit is contained in:
Ludovic Poujol 2018-11-13 14:53:47 +01:00
parent ec23b20078
commit bec2f76b93

View file

@ -41,9 +41,12 @@ Il ne reste plus qu'à redémarrer l'instance. C'est terminé !
Dans la suite de cette documentation, on se place dans le cas d'une instance simple, fonctionnant avec l'utilisateur **git**. On part du principe que :
* [MySQL](HowtoMySQL) est déjà installé
* le compte **git** pour l'application existe.
* Le compte **git** pour l'application existe.
* La configuration sera écrire dans `/etc/gitea/git.ini`
* Tous les fichiers de gitea seront dans `/home/git/`
* L'adresse de l'instance sera gitea.example.org
Au final, on va se retrouver avec la hiérarchie suivante :
Au final, Côté fichiers applicatifs, on va se retrouver avec la hiérarchie suivante :
~~~
$ tree /home/git
@ -77,7 +80,7 @@ Lors de la première exécution de Gitea, une page d'installation va demander to
### /etc/gitea/git.ini
On doit initialiser le fichier de configuration de gitea avec les commandes suivantes.
Avant de commencer, on doit initialiser le fichier de configuration de gitea avec les commandes suivantes.
A noter qu'on ne laisse les droits d'écritures uniquement pour l'installation.
~~~
@ -101,7 +104,7 @@ HTTP_ADDR = /home/git/gitea.sock
UNIX_SOCKET_PERMISSION = 660
OFFLINE_MODE = true
SSH_DOMAIN = gitea.example.org
ROOT_URL = https://gitea.example.org/
ROOT_URL = http://gitea.example.org/
[repository]
ROOT = /home/git/repositories
@ -119,6 +122,8 @@ NAMES = Français,English
### systemd
On peut utiliser l'unité systemd suivante. Elle est inspirée de celle [proposée par les développeurs de gitea](https://github.com/go-gitea/gitea/blob/master/contrib/systemd/gitea.service). Nous l'avons ajustée pour correspondre au dossiers et réglages choisis plus haut.
~~~
# cat /etc/systemd/system/gitea.service
@ -126,8 +131,6 @@ NAMES = Français,English
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
After=mysqld.service
After=redis-server.service
[Service]
User=git
@ -148,6 +151,9 @@ WantedBy=multi-user.target
### MySQL
Par défaut, Gitea utilise une base SQLite. Mais on peut utiliser MySQL (ou PostgreSQL).
Gitea nécessite seulement une base MySQL avec un compte.
~~~
# mysqladmin create git
# mysql
@ -156,7 +162,7 @@ mysql> GRANT ALL PRIVILEGES ON git.* TO 'git'@localhost IDENTIFIED BY 'PASSWORD'
Côté `gitea.ini`, la base de donnée MySQL se configure avec la section ci-dessous.
> *Note* : La page d'installation va remplir cette section de la configuration automatiquement.
> *Note* : La page d'installation peut remplir cette section de la configuration automatiquement.
~~~
[database]
@ -178,17 +184,17 @@ upstream gitea_git {
server {
listen 0.0.0.0:80;
listen [::]:80;
listen 0.0.0.0:443 ssl http2;
listen [::]:443 ssl http2;
#listen 0.0.0.0:443 ssl http2;
#listen [::]:443 ssl http2;
server_name gitea.evolix.org;
server_name gitea.example.org;
include /etc/nginx/ssl/git.conf;
include /etc/nginx/letsencrypt.conf;
#include /etc/nginx/letsencrypt.conf;
#include /etc/nginx/ssl/git.conf;
if ( $scheme = http ) {
return 301 https://$server_name$request_uri;
}
#if ( $scheme = http ) {
# return 301 https://$server_name$request_uri;
#}
location / {
proxy_pass http://gitea_git;
@ -222,11 +228,29 @@ PROVIDER = redis
PROVIDER_CONFIG = network=tcp,addr=127.0.0.1:6379,password=PASSWORD,db=0,pool_size=100,idle_timeout=180
~~~
### HTTPS
Après avoir activé le HTTPS sur le vhost nginx faisant office de reverse-proxy, il est utile d'ajuster quelques paramètres de configuration.
* Mettre à jour le `ROOT_URL` pour remplacer `http://gitea.example.org` par `https://gitea.example.org`
* Ajouter `COOKIE_SECURE = true` dans la section `[session]`
* (Optionnel) Rajouter le préfixe `__Secure-` au nom des cookies. Il s'agit des paramètres `COOKIE_NAME` dans la section `[session]` ainsi que `COOKIE_USERNAME` et `COOKIE_REMEMBER_NAME` dans la section `[security]`
## Avancé
### Multiples instances
On peut faire du multi-instances. On peut ainsi basculer sur une unité systemd avec paramètre comme :
La simplicité de gitea permet d'heberger plusieurs instances sur une même machine.
Comme pour la première instance, il a besoin de :
* D'un nouveau compte unix spécifique
* (Si MySQL) D'un nouveau compte avec une base associée.
On peut ainsi basculer sur une unité systemd avec paramètre comme celle donnée en exemple.
Ainsi, les instances seront manipulées avec `systemctl (start|restart|stop) gitea@INSTANCE`_INSTANCE_ se trouve être le nom de compte dédié à l'instance gitea
~~~
# cat /etc/systemd/system/gitea@.service
@ -253,6 +277,9 @@ Environment=GITEA_WORK_DIR=/home/%i/internals
WantedBy=multi-user.target
~~~
## FAQ / Plomberie
### Erreur d'enregistrement avec SHOW_REGISTRATION_BUTTON = false
@ -264,4 +291,4 @@ C'est un [bug connu](https://github.com/go-gitea/gitea/issues/5183) par les dév
### La page d'accueil d'un projet ne se met pas à jour après le premier push
Il faut s'assurer que la partition qui contient le dossier des dépôts gits ne soit **pas** en `noexec`
Il faut s'assurer que la partition qui contient le dossier des dépôts gits ne soit **pas** en `noexec`