Gitea
Updated 30 Septembre 2020
Introduction
Gitea est un service d'hébergement propre pour les dépôts Git, un fork de Gogs. C'est un système léger pour le développement collaboratif avec Git. Il est écrit en Go et est peu gourmand.
Préparer un conteneur LXC
Nous conseillons d'installer Gitea dans un conteneur dédié. Veuillez vous référer au manuel pour le configurer.
Installer et configurer PostgreSQL
Installez et configurez PostgreSQL, comme expliqué dans le manuel. Remplacez dbtest par gitea et test par l'utilisateur gitea.
Installer le logiciel Gitea
Installez Gitea :
emerge -a www-apps/gitea
Configurer Gitea
Configurez Gitea pour gitea.example.org, avec l'IP 1.2.3.4.
... [server] ; The protocol the server listens on. One of 'http', 'https', 'unix' or 'fcgi'. PROTOCOL = http DOMAIN = gitea.example.org ROOT_URL = %(PROTOCOL)s://%(DOMAIN)s:%(HTTP_PORT)s/ ; when STATIC_URL_PREFIX is empty it will follow ROOT_URL STATIC_URL_PREFIX = ; The address to listen on. Either a IPv4/IPv6 address or the path to a unix socket. HTTP_ADDR = 1.2.3.4 ; The port to listen on. Leave empty when using a unix socket. HTTP_PORT = 80 ... [database] ; Database to use. Either "mysql", "postgres", "mssql" or "sqlite3". DB_TYPE = postgres HOST = 127.0.0.1:5432 NAME = gitea USER = gitea ; Use PASSWD = `your password` for quoting if you use special characters in the password. PASSWD = `secret` ... ; !!CHANGE THIS TO KEEP YOUR USER DATA SAFE!! SECRET_KEY = `newsecret` ; The minimum password length for new Users MIN_PASSWORD_LENGTH = 8
Configuration HTTPS
Obtenir le certificat Let's Encrypt
Procurez-vous le certificat de domaine pour gitea.example.org comme expliqué dans le manuel. Enregistrez la clé et le certificat à /etc/ssl/gitea/key.pem et /etc/ssl/gitea/cert.pem+ respectivement.
Indiquez les paramètres HTTPS.
Configurez Gitea HTTPS pour gitea.example.org.
... [server] PROTOCOL = https DOMAIN = gitea.example.org ROOT_URL = %(PROTOCOL)s://%(DOMAIN)s:%(HTTP_PORT)s/ ; when STATIC_URL_PREFIX is empty it will follow ROOT_URL STATIC_URL_PREFIX = ; The address to listen on. Either a IPv4/IPv6 address or the path to a unix socket. HTTP_ADDR = 1.2.3.4 ; The port to listen on. Leave empty when using a unix socket. HTTP_PORT = 443 ; If REDIRECT_OTHER_PORT is true, and PROTOCOL is set to https an http server ; will be started on PORT_TO_REDIRECT and it will redirect plain, non-secure http requests to the main ; ROOT_URL. Defaults are false for REDIRECT_OTHER_PORT and 80 for ; PORT_TO_REDIRECT. REDIRECT_OTHER_PORT = true PORT_TO_REDIRECT = 80 ; Generate steps: ; $ ./gitea cert -ca=true -duration=8760h0m0s -host=myhost.example.com ; ; Or from a .pfx file exported from the Windows certificate store (do ; not forget to export the private key): ; $ openssl pkcs12 -in cert.pfx -out cert.pem -nokeys ; $ openssl pkcs12 -in cert.pfx -out key.pem -nocerts -nodes ; Paths are relative to CUSTOM_PATH CERT_FILE = /etc/ssl/gitea/cert.pem KEY_FILE = /etc/ssl/gitea/key.pem
Lancer Gitea
Vous pouvez maintenant lancer Gitea :
/etc/init.d/gitea start
Ajoutez-le au démarrage automatique :
rc-update add gitea
Ouvrez http://gitea.example.org/install dans votre navigateur Web pour terminer la configuration de Gitea.
Autoriser l'accès aux dépôts publics via le protocole Git
Indiquer le répertoire Gitea pour le démon Git, /var/lib/gitea/gitea-repositories :
# conf.d file for git-daemon # # Please check man 1 git-daemon for more information about the options # git-daemon accepts. You MUST edit this to include your repositories you wish # to serve. # # Some of the meaningful options are: # --syslog --- Enables syslog logging # --verbose --- Enables verbose logging # --export-all --- Exports all repositories # --port=XXXX --- Starts in port XXXX instead of 9418 # GITDAEMON_OPTS="--syslog --base-path=/var/lib/gitea/gitea-repositories" # To run an anonymous git safely, the following user should be able to only # read your Git repositories. It should not be able to write to anywhere on # your system, esp. not the repositories. GIT_USER="git" GIT_GROUP="git"
Lancez le démon Git :
/etc/init.d/gitea start
Ajouter le démon Git au démarrage automatique :
rc-update add gitea
Le démon Git n'exporte que les dépôts marqués git-daemon-export-ok
. Gitea s'en charge automatiquement pour tous les dépôts publics.
Attention
Sachez que l'activation de --export-all
rendra tous les dépôts, qu'ils soient publics ou privés, disponibles via Git.
Installer Memcached
Installez Memcached:
emerge -a net-misc/memcached
Demander à Memcached d'utiliser une interface de bouclage et de fixer sa limite d'utilisation de la mémoire à 512 Mo :
# memcached config file MEMCACHED_BINARY="/usr/bin/memcached" # Specify memory usage in megabytes (do not use letters) # 64MB is default MEMUSAGE="512" # User to run as MEMCACHED_RUNAS="memcached" # Specify maximum number of concurrent connections # 1024 is default MAXCONN="1024" # Listen for connections on what address? # If this is empty, memcached will listen on 0.0.0.0 # be sure you have a firewall in place! LISTENON="127.0.0.1" # Listen for connections on what port? PORT="11211"
Lancez le service Memcached :
/etc/init.d/memcached start
Ajoutez Memcached à la liste de démarrage automatique :
rc-update add memcached
Activez Memcached pour Gitea :
[cache] ; if the cache enabled ENABLED = true ; Either "memory", "redis", or "memcache", default is "memory" ADAPTER = memcache ; For "memory" only, GC interval in seconds, default is 60 INTERVAL = 60 ; For "redis" and "memcache", connection host address ; redis: network=tcp,addr=:6379,password=macaron,db=0,pool_size=100,idle_timeout=180 ; memcache: `127.0.0.1:11211` HOST = `127.0.0.1:11211` ; Time to keep items in cache if not used, default is 16 hours. ; Setting it to 0 disables caching ITEM_TTL = 16h
Redémarrez Gitea :
/etc/init.d/gitea restart
Mise à jour
Mettez à jour le paquet gitea :
emerge -u www-apps/gitea
Redémarrez Gitea :
/etc/init.d/gitea restart