GNU/Linux >> Tutoriels Linux >  >> Fedora

Comment installer le service d'hébergement de code Gitea sur Fedora 34

Gitea est une solution d'hébergement de code open-source basée sur la plateforme Git. Il est écrit en langage Go. Il comprend un éditeur de fichiers de référentiel, un suivi des problèmes, des demandes d'extraction, la gestion des utilisateurs, des notifications, un wiki intégré, le support LFS, des hooks Git et bien plus encore.

C'est une application légère. Par conséquent, il peut être installé sur des systèmes de faible puissance. Si vous recherchez une plate-forme Git auto-hébergée avec une plate-forme de mémoire plus petite, vous devriez consulter Gitea.

Cet article explique comment installer et configurer Gitea sur Fedora 34 et comment configurer votre premier référentiel Git. Gitea peut être installé à partir de la source, du binaire, d'un package docker ou d'un package. Pour notre tutoriel, nous allons l'installer à partir du binaire.

Prérequis

  • Un serveur exécutant Fedora 34.
  • Un utilisateur sudo non root.
  • SELinux désactivé.
  • Assurez-vous que tout est mis à jour.

    $ sudo dnf update
    

Étape 1 - Configurer le pare-feu

La première étape consiste à configurer le pare-feu. Le serveur Fedora est livré avec le pare-feu pare-feu.

Vérifiez si le pare-feu est en cours d'exécution.

$ sudo firewall-cmd --state

Vous devriez obtenir le résultat suivant.

running

Vérifiez les services/ports actuellement autorisés.

$ sudo firewall-cmd --permanent --list-services

Il devrait afficher la sortie suivante.

dhcpv6-client mdns ssh

Autoriser les ports HTTP et HTTPS.

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

Revérifiez l'état du pare-feu.

$ sudo firewall-cmd --permanent --list-services

Vous devriez voir une sortie similaire.

dhcpv6-client http https mdns ssh

Rechargez le pare-feu.

$ sudo systemctl reload firewalld

Étape 2 - Installer Git

La première étape consiste à installer Git.

$ sudo dnf install git

Vérifiez l'installation en vérifiant la version de Git.

$ git --version
git version 2.31.1

Configurer Git

Git peut être configuré avec le git config commande. Définissez votre nom et votre adresse e-mail pour travailler avec Git.

$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"

Vous pouvez vérifier la configuration en utilisant la commande suivante.

$ git config --list
user.name=Your Name
[email protected]

Étape 3 - Installer et configurer PostgreSQL

Gitea prend en charge SQLite, MySQL/Mariadb, MSSQL et PostgreSQL. Pour notre tutoriel, nous utiliserons PostgreSQL.

Installez et initialisez PostgreSQL.

$ sudo dnf module enable postgresql:13
$ sudo dnf install postgresql-server postgresql-contrib
$ sudo postgresql-setup --initdb --unit postgresql
$ sudo systemctl enable --now postgresql

PostgreSQL utilise le schéma de chiffrement md5 pour l'authentification par mot de passe par défaut, qui n'est pas sécurisé. Vous devez passer à SCRAM-SHA-256 schème. Et si vous allez vous connecter à une base de données PostgreSQL distante, vous devez la configurer pour écouter votre adresse IP. Ces deux éléments peuvent être modifiés en éditant le /var/lib/pgsql/data/postgresql.conf dossier. Ouvrez-le pour le modifier.

$ sudo nano /var/lib/pgsql/data/postgresql.conf

Modifiez les variables suivantes de la manière suivante.

listen_addresses = 'localhost, 201.0.110.0'
password_encryption = scram-sha-256

Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité.

Redémarrez PostgreSQL.

$ sudo systemctl restart postgresql

Connectez-vous au shell PostgreSQL.

$ sudo -u postgres psql

Créez un nouvel utilisateur SQL et une nouvelle base de données pour Gitea. Choisissez un mot de passe fort pour l'utilisateur de votre base de données.

postgres-# CREATE ROLE gitea WITH LOGIN PASSWORD 'yourpassword';
postgres-# CREATE DATABASE giteadb WITH OWNER gitea TEMPLATE template0 ENCODING UTF8 LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8';

Remplacez le nom d'utilisateur, le nom de la base de données et le mot de passe, le cas échéant.

Quittez le shell en tapant \q .

Autorisez l'utilisateur de la base de données à accéder à la base de données créée ci-dessus en ajoutant la règle d'authentification suivante à /var/lib/pgsql/data/pg_hba.conf .

Si la base de données est locale, ajoutez cette ligne.

local    giteadb    gitea    scram-sha-256

Pour une base de données distante, utilisez plutôt le code suivant.

host    giteadb    gitea    192.0.2.10/32    scram-sha-256

Vous devrez également modifier les lignes suivantes en ajoutant en remplacement ident avec scram-sha-256 .

# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
# IPv6 local connections:
host    all             all             ::1/128                 ident

Ils devraient ressembler à ce qui suit.

# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
# IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256

Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité.

Redémarrez PostgreSQL.

$ sudo systemctl restart postgresql

Vous devrez également ajouter la règle suivante dans le pare-feu si vous souhaitez activer les connexions à distance.

$ sudo firewall-cmd --permanent--add-service=postgresql
$ sudo firewall-cmd --reload

Étape 4 - Créer un utilisateur Git

Créez un nouvel utilisateur système pour exécuter l'application Gitea.

$ sudo useradd \
   --system \
   --shell /bin/bash \
   --comment 'Git Version Control' \
   --create-home \
   --home /home/git \
   git

Cette commande crée un nouvel utilisateur et un groupe nommé git et définit le répertoire personnel sur /home/git .

Étape 5 - Installer Gitea

Ouvrez la page Gitea Downloads et vérifiez le numéro de version du dernier binaire disponible. Au moment de la rédaction de ce tutoriel, la dernière version est la 1.14.3. S'il existe une version plus récente, modifiez-la dans la VERSION variable dans la commande ci-dessous.

Utilisez le wget utilitaire pour récupérer le dernier binaire Gitea.

$ GITEAVERSION=1.14.3
$ wget -O gitea https://dl.gitea.io/gitea/${GITEAVERSION}/gitea-${GITEAVERSION}-linux-amd64

Déplacez le binaire téléchargé vers /usr/local/bin répertoire.

$ sudo mv gitea /usr/local/bin

Rendre le binaire exécutable.

$ sudo chmod +x /usr/local/bin/gitea

Exécutez les commandes suivantes pour créer des répertoires et définir les autorisations requises pour que Gitea fonctionne correctement.

$ sudo mkdir -p /var/lib/gitea/{custom,data,log}
$ sudo chown -R git:git /var/lib/gitea/
$ sudo chmod -R 750 /var/lib/gitea/
$ sudo mkdir /etc/gitea
$ sudo chown root:git /etc/gitea
$ sudo chmod 770 /etc/gitea

La permission pour /etc/gitea est défini sur 770 pour que l'assistant d'installation crée le fichier de configuration. Une fois l'installation terminée, nous définirons des autorisations plus restrictives.

Créer un fichier de service Systemd

Nous exécuterons Gitea en tant que service systemd. Pour cela, créez un nouveau fichier d'entrée systemd pour Gitea.

$ sudo nano /etc/systemd/system/gitea.service

Collez-y le code suivant.

[Unit]
Description=Gitea
After=syslog.target
After=network.target
After=postgresql.service

[Service]
RestartSec=2s
Type=simple
User=git
Group=git
WorkingDirectory=/var/lib/gitea/
ExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.ini
Restart=always
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea

[Install]
WantedBy=multi-user.target

Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité.

Pour référence, vous pouvez consulter l'exemple de fichier systemd disponible dans le référentiel Gitea.

Rechargez le démon systemd pour activer le fichier que nous venons de créer.

$ sudo systemctl daemon-reload

Activez et démarrez le service Gitea.

$ sudo systemctl enable --now gitea

Vérifiez que Gitea est en cours d'exécution.

$ sudo systemctl status gitea
  gitea.service - Gitea
     Loaded: loaded (/etc/systemd/system/gitea.service; enabled; vendor preset: disabled)
     Active: active (running) since Tue 2021-07-04 20:33:38 EDT; 1 day 8h ago
   Main PID: 46404 (gitea)
      Tasks: 7 (limit: 2328)
     Memory: 115.5M
CPU: 9min 12.061s CGroup: /system.slice/gitea.service ---46404 /usr/local/bin/gitea web -c /etc/gitea/app.ini ...

Étape 6 - Configurer Gitea

Gitea, par défaut, écoute sur le port 3000. Vous pouvez utiliser un port différent ou vous en tenir au port par défaut. Par conséquent, nous devons également ouvrir le port 3000.

$ sudo firewall-cmd --permanent --add-port=3000/tcp
$ sudo firewall-cmd --reload

Ouvrez votre navigateur et tapez https://YOURIPADDRESS:3000 et vous serez accueilli par l'installateur Gitea. Utilisez les valeurs suivantes pour configurer.

Paramètres de la base de données

  • Type de base de données : Choisissez PostgreSQL dans le menu déroulant
  • Hôte : 127.0.0.1:5432
  • Nom d'utilisateur : gîte
  • Mot de passe : votremotdepasse
  • Nom de la base de données : gîte

Paramètres généraux

  • Titre du site : Saisissez le nom de votre organisation
  • Chemin racine du référentiel : Laissez le chemin par défaut
  • Chemin racine LFS Git : Laissez le chemin par défaut
  • Exécuter en tant que nom d'utilisateur : git
  • Domaine du serveur SSH : Entrez votre adresse IP
  • Port d'écoute HTTP : 3000 (Vous pouvez modifier le port ici, mais vous devrez y accéder via le pare-feu.)
  • URL de base Gitea : http://VOTREADRESSEIP:3000
  • Chemin du journal : Laissez la valeur par défaut

Vous pouvez configurer les paramètres de messagerie et de serveur à ce stade, ou vous pouvez les modifier ultérieurement. Vous devez cependant renseigner les paramètres du compte administrateur.

Pour démarrer l'installation, cliquez sur Installer Gitea* bouton. Une fois terminé, vous serez automatiquement connecté et redirigé vers le tableau de bord du compte.

L'installation créera le fichier de configuration de Gitea. Modifiez son autorisation en lecture seule.

$ sudo chmod 750 /etc/gitea
$ sudo chmod 640 /etc/gitea/app.ini

C'est ça. Gitea est maintenant installé sur votre serveur.

Étape 7 - Installer SSL avec Let's Encrypt

Pour installer un certificat SSL à l'aide de Let's Encrypt, nous devons télécharger l'outil Certbot à l'aide du programme d'installation du package Snapd inclus dans Ubuntu 20.04.

Exécutez les commandes suivantes pour installer Certbot.

$ sudo dnf install certbot

Générez le certificat SSL.

$ sudo certbot certonly --standalone --preferred-challenges http -d example.com

La commande ci-dessus téléchargera un certificat sur /etc/letsencrypt/live/example.com répertoire sur votre serveur.

Créez un répertoire racine Web de défi pour le renouvellement automatique de Let's Encrypt.

$ sudo mkdir -p /var/lib/letsencrypt

Créez une tâche Cron pour renouveler le SSL. Il s'exécutera tous les jours pour vérifier le certificat et le renouveler si nécessaire. Pour cela, créez d'abord le fichier /etc/cron.daily/certbot-renew et ouvrez-le pour le modifier.

$ sudo nano /etc/cron.daily/certbot-renew

Collez le code suivant.

#!/bin/sh
certbot renew --cert-name example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"

Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité.

Modifiez les autorisations sur le fichier de tâche pour le rendre exécutable.

$ sudo chmod +x /etc/cron.daily/certbot-renew

Étape 8 - Installer et configurer Nginx

L'étape suivante consiste à installer le serveur Nginx.

$ sudo dnf install nginx

Créez le fichier de configuration Nginx pour Gitea.

$ sudo nano /etc/nginx/conf.d/gitea.conf

Collez-y le code suivant.

server {
        listen 80;
    
        location ~ /\.well-known/acme-challenge {
                root /var/lib/letsencrypt/;
        }
    
        server_name yourdomain.com;
        return 301 https://$server_name$request_uri;
}
server {
        listen 443 ssl http2;
        server_name your_domain;
    
        client_max_body_size 50m;
    
        ssl_session_timeout 1d;
        ssl_session_cache shared:MozSSL:10m;  # about 40000 sessions
        ssl_session_tickets off;
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20- POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
        ssl_prefer_server_ciphers off;
        ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
        ssl_stapling on;
        ssl_stapling_verify on;

        ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
        ssl_trusted_certificate /etc/letsencrypt/live/yourdomain.com/chain.pem;
    
        proxy_read_timeout 720s;
        proxy_connect_timeout 720s;
        proxy_send_timeout 720s;
        
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
    
        location / {
                proxy_redirect off;
                proxy_pass http://127.0.0.1:3000;
     	}
        access_log /var/log/nginx/gitea.access.log;
        error_log /var/log/nginx/gitea.error.log;
}

Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité.

Vérifiez si le fichier de configuration fonctionne correctement.

$ sudo nginx -t

Redémarrez le serveur Nginx.

$ sudo systemctl restart nginx

Ensuite, modifiez le domaine Gitea et l'URL racine. Pour cela, ouvrez le fichier de configuration /etc/gitea/app.ini .

$ sudo nano /etc/gitea/app.ini

Modifiez les valeurs suivantes.

[server]
SSH_DOMAIN       = git.example.com
DOMAIN           = git.example.com
ROOT_URL         = https://git.example.com/

Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité.

Redémarrez le service Gitea.

$ sudo systemctl restart gitea

Étape 9 - Configuration des notifications par e-mail

Si vous souhaitez recevoir des notifications par e-mail, vous pouvez les activer via Sendmail ou via un service de transaction par e-mail tiers tel qu'Amazon SES, Postmark, Mailgun ou Sendgrid.

Pour activer les notifications, ouvrez le fichier de configuration /etc/gitea/app.ini .

$ sudo nano /etc/gitea/app.ini

Modifiez la section suivante dans le fichier et ajoutez le code suivant.

[mailer]
ENABLED = true
FROM           = [email protected]
MAILER_TYPE    = smtp
HOST           = mail.mydomain.com:587
IS_TLS_ENABLED = true
USER           = [email protected]
PASSWD         = `password`

Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité.

Redémarrez le service Gitea.

$ sudo systemctl restart gitea

Étape 10 - Mise à jour de Gitea

La mise à niveau de Gitea implique le téléchargement et le remplacement du binaire Gitea.

Tout d'abord, arrêtez le service Gitea.

$ sudo systemctl stop gitea

Téléchargez et installez le binaire Gitea.

$ GITEAVERSION=LATESTVERSION
$ wget -O gitea https://dl.gitea.io/gitea/${GITEAVERSION}/gitea-${GITEAVERSION}-linux-amd64
$ sudo mv gitea /usr/local/bin
$ sudo chmod +x /usr/local/bin/gitea

Redémarrez le service Gitea.

$ sudo systemctl start gitea

Étape 11 - Comment utiliser SSH

Pour utiliser SSH, nous devons ajouter notre propre clé SSH à Gitea. Si vous n'en avez pas, vous pouvez en créer un à l'aide de la commande suivante sur votre système local.

$ ssh-keygen -N "yourpassphrase" -t ed25519 -C "gitea_key"

Cela créera une clé nommée id_ed25519 dans le ~/.ssh annuaire. Pour ajouter cette clé, copiez le contenu du fichier ~/.ssh/id_ed25519.pub à votre presse-papiers. Ajoutez ensuite cette clé à votre page de paramètres Gitea sous l'onglet Clés SSH/GPG . Cliquez sur Ajouter une clé bouton et donnez un nom à la clé et collez-le dans la boîte.

Si vous avez une liste d'utilisateurs autorisés dans le fichier de configuration sshd, vous devez ajouter git à elle.

Ouvrez le fichier de configuration SSHD.

$ sudo nano /etc/ssh/sshd_config

Recherchez une ligne qui devrait ressembler à ce qui suit.

AllowUsers myuser myotheruser git

Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité.

Redémarrez le service SSHD.

$ sudo systemctl restart ssh

Vous devez ajouter la phrase secrète de la clé que nous avons créée à ssh-agent outil sur votre système local afin de ne pas vous le demander à plusieurs reprises. Exécutez les commandes suivantes pour le faire.

$ eval $(ssh-agent)
Agent pid 46436
$ ssh-add ~/.ssh/id_ed25519

Vous pouvez cloner votre référentiel pour tester la connexion SSH.

$ git clone ssh://[email protected]/username/repo.git
Cloning into 'repo'...
The authenticity of host 'example.com (201.110.80.160)' can't be established.
ECDSA key fingerprint is SHA256:Kx9l19zpGhHfbb2wHtmWeC7/WWv8e5/T3Tcws2qwVEw.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'example.com,201.110.80.160' (ECDSA) to the list of known hosts.
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 5 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (5/5), 4.77 KiB | 977.00 KiB/s, done.

Conclusion

Ceci conclut le tutoriel sur l'installation et la configuration du service d'hébergement de code Gitea sur Fedora 34. Si vous avez des questions, postez-les dans les commentaires ci-dessous.


Fedora
  1. Comment installer le service Git auto-hébergé de Gitea à l'aide de Docker sur Ubuntu 18.04

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

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

  4. Comment installer Node.js sur Fedora 35 / Fedora 34

  5. Comment installer et configurer Redis 6 sur Fedora 34

Comment installer Visual Studio Code sur la station de travail Fedora 35

Comment installer Visual Studio Code sur Fedora 36 Linux

Comment installer Visual Studio Code (VS Code) sur Fedora 34 / 35

Comment installer et configurer Git sur Fedora 35

Comment installer Go sur Fedora 35

Comment installer Gitea sur Ubuntu 22.04