From bec2f76b9321e07cab52a5972d222872922eebda Mon Sep 17 00:00:00 2001 From: lpoujol Date: Tue, 13 Nov 2018 14:53:47 +0100 Subject: [PATCH] =?UTF-8?q?Compl=C3=A9ments=20&=20ajustements=20gitea?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HowtoGitea.md | 61 +++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 44 insertions(+), 17 deletions(-) diff --git a/HowtoGitea.md b/HowtoGitea.md index a307834e..5e99d731 100644 --- a/HowtoGitea.md +++ b/HowtoGitea.md @@ -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` où _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` \ No newline at end of file +Il faut s'assurer que la partition qui contient le dossier des dépôts gits ne soit **pas** en `noexec`