GNU/Linux >> Tutoriels Linux >  >> Cent OS

Comment installer la plate-forme d'hébergement de code Gitea avec HTTPS sur CentOS 8

Gitea est une application web d'hébergement de code écrite en Go. Comme son nom l'indique, il est conçu pour être utilisé avec le programme de contrôle de source populaire Git, de la même manière que Gitlab et Github. Ce guide vous expliquera l'installation de Gitea sur CentOS 8 avec un reverse proxy Nginx HTTPS.

Exigences

  • Un système CentOS 8 sur lequel vous disposez des privilèges root.
  • Un nom de domaine enregistré pointant vers votre serveur.
  • La variable d'environnement $EDITOR doit être définie sur votre éditeur de texte préféré.
  • Accès à un serveur SMTP pour les notifications par e-mail (facultatif).

Assurez-vous que votre (sous-)domaine pointe vers l'adresse IPv4 de votre serveur avec un enregistrement A. Créez éventuellement un enregistrement AAAA pointant vers l'adresse IPv6 de votre serveur.

REMARQUE : Ce guide suppose que SELinux est défini sur désactivé ou permissif.

Étape 1 :Préparation du système

Commencez par installer toutes les mises à jour disponibles et redémarrez :

mise à jour dnf -yreboot

Pour cette configuration, plusieurs composants logiciels sont nécessaires :

  • Git, une dépendance de Gitea.
  • PostgreSQL, car Gitea nécessite une base de données.
  • Nginx, qui sera utilisé comme proxy inverse.
  • Sudo, pour exécuter des commandes en tant qu'utilisateur système postgres.
  • Wget
  • Certbot, un utilitaire permettant d'obtenir des certificats SSL Let's Encrypt. Certbot sera installé séparément car il n'est pas disponible dans les dépôts de logiciels CentOS.

Installez-les comme suit :

dnf install -y git postgresql postgresql-server nginx sudo wget

Certbot-auto est un script qui gère l'installation de certbot. Téléchargez-le :

wget https://dl.eff.org/certbot-auto -O /usr/local/bin/certbot-auto

Assurez-vous que les autorisations correctes sont définies :

chmod 0755 /usr/local/bin/certbot-auto

Exécutez ce qui suit pour installer certbot. Vous serez invité par le gestionnaire de paquets à confirmer l'installation des dépendances, répondez 'y'.

certbot-auto --install-only

Ensuite, créez un utilisateur pour exécuter Gitea :

useradd --system --shell /bin/bash --create-home --home-dir /home/gitea gitea

Créez ensuite la structure de répertoires pour Gitea :

mkdir -p /var/lib/gitea/{data,log} /etc/gitea /run/gitea

Et définissez les propriétaires et les autorisations comme suit :

chown -R gitea:gitea /var/lib/giteachown -R gitea:gitea /var/run/giteachown -R root:gitea /etc/giteachmod -R 750 /var/lib/giteachmod 770 /etc/gitea 

Les autorisations sur /etc/gitea sont temporaires et seront renforcées après l'exécution du programme d'installation Web.

Activez le trafic vers les ports 80 et 443 de manière permanente :

firewall-cmd --add-port 80/tcp --add-port 443/tcp --permanentfirewall-cmd --reload

L'accès au port 3000 n'est requis que temporairement pour la configuration initiale, car nous configurerons gitea pour utiliser un socket Unix à la place.

firewall-cmd --add-port 3000/tcp

Étape 2 :Configuration de la base de données

Initialiser Postgres :

postgresql-setup --initdb --unit postgresql

Assurez-vous qu'il est activé et en cours d'exécution :

systemctl enable --now postgresql.service

Connectez-vous à Postgres :

sudo -u postgres psql

Créez ensuite un rôle d'utilisateur et une base de données à utiliser par Gitea :

postgres=# CRÉER UN RÔLE gitea CONNEXION MOT DE PASSE CRYPTÉ 'votre_mot de passe';postgres=# CRÉER UNE BASE DE DONNÉES gitea;postgres=# ACCORDER TOUS LES PRIVILÈGES SUR LA BASE DE DONNÉES gitea À gitea;postgres=# \q

Ouvrez le fichier de configuration de l'authentification du client Postgres :

$EDITOR /var/lib/pgsql/data/pg_hba.conf

Ajoutez la ligne suivante juste après # Connexions locales IPv4 :

# connexions locales IPv4 :hôte gitea gitea 127.0.0.1/32 md5

Enregistrez le fichier et redémarrez Postgres :

systemctl redémarre postgresql.service

Étape 3 :Installer Gitea

Téléchargez la version binaire linux-amd64 de Gitea depuis la page de téléchargement de Gitea. Par exemple :

wget https://dl.gitea.io/gitea/master/gitea-master-linux-amd64 -O /usr/local/bin/gitea

Définissez les autorisations correctes sur le binaire téléchargé :

chmod 755 /usr/local/bin/gitea

Ensuite, créez un fichier d'unité systemd :

$EDITOR /etc/systemd/system/gitea.service

Et entrez ce qui suit :

[Unit]Description=Gitea (Git avec une tasse de thé)After=syslog.targetAfter=network.targetRequires=postgresql.service[Service]Type=simpleUser=giteaGroup=giteaWorkingDirectory=/var/lib/gitea/RuntimeDirectory=giteaExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.iniRestart=alwaysEnvironment=USER=gitea HOME=/home/gitea GITEA_WORK_DIR=/var/lib/gitea[Install]WantedBy=multi-utilisateur. cible

Assurez-vous que la nouvelle unité est chargée :

rechargement du démon systemctl

Demandez ensuite à systemd de démarrer Gitea au démarrage :

systemctl activer gitea.service

Étape 4 :Configurer Gitea

Pour la configuration initiale, nous utiliserons le programme d'installation Web inclus. Tout d'abord, démarrez Gitea :

systemctl démarrer gitea.service

Accédez ensuite à http://votre_domaine:3000/install et renseignez les paramètres requis comme suit :

  • Type de base de données :PostgreSQL
  • Hôte :127.0.0.1:5432
  • Nom d'utilisateur :gitea
  • Mot de passe :saisissez le mot de passe que vous avez choisi lors de la création du rôle Postgres.
  • Nom de la base de données :gitea
  • SSL :Désactiver
  • Titre du site :titre de votre choix.
  • Chemin racine du référentiel :/var/lib/gitea/data/repositories
  • Chemin racine Git LFS :/var/lib/gitea/data/lfs
  • Exécuter en tant que nom d'utilisateur :gitea
  • Domaine du serveur SSH :votre_domaine
  • Port du serveur SSH :22
  • Gitea HTTP Listen Post :3000
  • URL de base Gitea :https://votre_domaine/
  • Chemin du journal :/var/lib/gitea/log

Configurez l'e-mail et les paramètres restants comme bon vous semble, puis cliquez sur "Installer Gitea". Vous serez redirigé vers une URL erronée. C'est normal, car nous n'avons pas encore configuré Nginx ou HTTPS. Pour des raisons de performances, nous allons maintenant configurer Gitea pour écouter sur un socket unix au lieu du port TCP par défaut.

Arrêtez Gitea avant de continuer :

systemctl stop gitea.service

Resserrez les autorisations sur /etc/gitea comme indiqué ci-dessous. Cela empêche quiconque ne faisant pas partie du groupe gitea de lire app.ini , qui contient des informations sensibles, y compris les informations d'identification de la base de données.

chmod 750 /etc/giteachown root:gitea /etc/gitea/app.inichmod 640 /etc/gitea/app.ini

Ouvrez son fichier de configuration :

$EDITOR /etc/gitea/app.ini

Supprimez la ligne suivante de la section serveur :

HTTP_PORT =3000

Et ajoutez les lignes suivantes dans la section serveur :

HTTP_ADDR =/run/gitea/gitea.sockPROTOCOL =unixUNIX_SOCKET_PERMISSION =666

Étape 5 :configuration du proxy inverse

Arrêtez Nginx s'il est en cours d'exécution, pour permettre au certbot d'écouter sur le port 80 :

systemctl stop nginx.service

Utilisez la commande suivante pour obtenir un certificat pour votre domaine :

certbot-auto certonly --standalone --agree-tos -m [email protected] -d your_domain

Let's Encrypt vérifiera la propriété du domaine avant d'émettre le certificat. Votre certificat, votre chaîne et votre clé privée seront stockés dans /etc/letsencrypt/live/your_domain/ .

Nous pouvons maintenant configurer Nginx. Créez un nouveau fichier de configuration :

$EDITOR /etc/nginx/conf.d/gitea.conf

Et entrez les blocs de serveur suivants :

serveur { écoute 80 ; écouter [::]:80 ; nom_serveur votre_domaine ; renvoie 301 https://$server_name$request_uri ; access_log /var/log/nginx/gitea-proxy_access.log ; error_log /var/log/nginx/gitea-proxy_error.log;}serveur { écouter 443 ssl; écouter [::]:443 ssl ; nom_serveur votre_domaine ; SSL activé ; certificat_ssl /etc/letsencrypt/live/votre_domaine/fullchain.pem ; clé_certificat_ssl /etc/letsencrypt/live/votre_domaine/privkey.pem ; emplacement / { proxy_pass http://unix:/var/run/gitea/gitea.sock ; } access_log /var/log/nginx/gitea-proxy_access.log ; error_log /var/log/nginx/gitea-proxy_error.log;}

Le premier bloc serveur sert simplement à rediriger toutes les requêtes HTTP vers HTTPS. Le deuxième bloc écoute les connexions HTTPS et les transmet au socket Unix sur lequel nous avons configuré Gitea pour écouter.

Une fois que vous avez enregistré la configuration ci-dessus, vérifiez les éventuelles erreurs de syntaxe et modifiez votre configuration si nécessaire :

nginx -t

Enfin, lancez Nginx et Gitea :

systemctl démarrer nginx.service gitea.service

Votre instance Gitea devrait maintenant fonctionner correctement. Accédez-y à https://votre_domaine

Étapes facultatives

Configuration de la journalisation

Par défaut, Gitea journalise les messages de niveau de gravité Info et supérieur. Vous voudrez probablement changer cela en Warn ou Error . Pour ce faire, ouvrez /etc/gitea/app.ini et remplacez le paramètre LEVEL dans la section [log] par :trace, debug, info, warn, error, critical, fatal, none. Par exemple, pour consigner les messages de gravité Avertissement et supérieur, utilisez :

[log]MODE =fileLEVEL =warnROOT_PATH =/var/lib/gitea/log

Redémarrez Gitea pour que les modifications prennent effet :

systemctl redémarre gitea.service

Serveur SSH séparé

Gitea peut alternativement utiliser son propre serveur SSH. Pour l'activer, ajoutez la ligne suivante à la section de configuration [serveur] :

START_SSH_SERVER =vrai

Et remplacez le port SSH par n'importe quel nombre supérieur à 1024, par exemple :

SSH_PORT =2222

Redémarrez ensuite Gitea pour appliquer les modifications et activer le trafic vers le port choisi :

firewall-cmd --add-port 2222/tcp --permanentfirewall-cmd --reload

Cent OS
  1. Comment installer CentOS 8 (avec captures d'écran)

  2. Comment installer Python 3 sur CentOS 7 avec SCL

  3. Comment installer Gitea sur CentOS 8

  4. Comment installer phpMyAdmin avec Nginx sur CentOS 7

  5. Comment installer la plate-forme d'hébergement de code Gitea avec HTTPS sur Debian 10

Comment créer un serveur LAMP sur CentOS 7

Comment installer Nginx avec ngx_pagespeed sur CentOS

Comment installer Textpattern sur CentOS 7

Comment installer Wetty sur CentOS 7

Comment installer cPanel sur CentOS 8

Comment installer la plate-forme d'apprentissage Moodle avec Nginx dans CentOS 8