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. Elle est écrite dans le langage Go. Elle comprend un éditeur de fichiers de dépôt, un suivi des problèmes, des demandes de pull, une gestion des utilisateurs, des notifications, un wiki intégré, un support LFS, des crochets Git et bien plus encore.

Il s’agit d’une application légère. Par conséquent, elle peut être installée sur des systèmes peu puissants.Si tu cherches une plateforme Git auto-hébergée avec une plus petite mémoire, tu devrais jeter un œil à Gitea.

Cet article explique comment installer et configurer Gitea sur Fedora 34 et comment configurer ton premier dépôt Git. Gitea peut être installé à partir des sources, d’un binaire, d’un paquet docker ou d’un paquet. Pour notre tutoriel, nous l’installerons à partir de binaire.

Conditions préalables

  • Un serveur exécutant Fedora 34.
  • Un utilisateur sudo non-root.
  • SELinux désactivé.
  • Assure-toi 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-feuFirewalld.

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

$ sudo firewall-cmd --state

Tu devrais obtenir la sortie suivante.

running

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

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

Tu devrais obtenir la sortie suivante.

dhcpv6-client mdns ssh

Autorise les ports HTTP et HTTPS.

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

Vérifie à nouveau l'état du pare-feu.

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

Tu devrais voir une sortie similaire.

dhcpv6-client http https mdns ssh

Recharge le pare-feu.

$ sudo systemctl reload firewalld

Étape 2 - Installe Git

La première étape consiste à installer Git.

$ sudo dnf install git

Vérifie l'installation en contrôlant la version de Git.

$ git --version
git version 2.31.1

Configurer Git

Git peut être configuré avec la commande git config. Définis ton nom et ton adresse e-mail pour travailler avec Git.

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

Tu peux 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.

Installe et initialise 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 par défaut le schéma de cryptage md5 pour l'authentification du mot de passe, ce qui n'est pas sûr. Tu dois passer au schéma SCRAM-SHA-256. Et si tu veux te connecter à une base de données PostgreSQL distante, tu dois la configurer pour qu'elle écoute ton adresse IP. Ces deux éléments peuvent être modifiés en éditant le fichier /var/lib/pgsql/data/postgresql.conf. Ouvre-le pour le modifier.

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

Modifie les variables suivantes de la manière suivante.

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

Enregistre le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque tu y es invité.

Redémarre PostgreSQL.

$ sudo systemctl restart postgresql

Connecte-toi au shell PostgreSQL.

$ sudo -u postgres psql

Crée un nouvel utilisateur SQL et une nouvelle base de données pour Gitea. Choisis un mot de passe fort pour l'utilisateur de ta 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';

Remplace le nom d'utilisateur, le nom de la base de données et le mot de passe comme il convient.

Quitte le shell en tapant \q.

Autorise 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, ajoute cette ligne.

local    giteadb    gitea    scram-sha-256

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

host    giteadb    gitea    192.0.2.10/32    scram-sha-256

Tu devras également modifier les lignes suivantes en ajoutant le remplacement de ident par scram-sha-256.

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

Elles doivent 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

Enregistre le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque tu y es invité.

Redémarre PostgreSQL.

$ sudo systemctl restart postgresql

Tu devras aussi ajouter la règle suivante dans le pare-feu si tu veux activer les connexions à distance.

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

Étape 4 - Créer un utilisateur Git

Crée 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 nouveau groupe nommés git et définit le répertoire personnel à /home/git.

Étape 5 - Installe Gitea

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

Utilise l'utilitaire wget 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éplace le binaire téléchargé dans le répertoire /usr/local/bin.

$ sudo mv gitea /usr/local/bin

Rends le binaire exécutable.

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

Exécute les commandes suivantes pour créer des répertoires et définir les permissions 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 du répertoire /etc/gitea est définie sur 770 pour que l'assistant d'installation puisse créer le fichier de configuration. Une fois l'installation terminée, nous définirons des autorisations plus restrictives.

Crée un fichier de service Systemd

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

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

Colle le code suivant dans celui-ci.

[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

Enregistre le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque tu y es invité.

Pour référence, tu peux jeter un œil à l'exemple de fichier systemd disponible dans le référentiel Gitea.

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

$ sudo systemctl daemon-reload

Active et démarre le service Gitea.

$ sudo systemctl enable --now gitea

Vérifie que Gitea fonctionne.

$ 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

Par défaut, Gitea écoute sur le port 3000. Tu peux utiliser un autre port ou t'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

Ouvre ton navigateur et tape https://YOURIPADDRESS:3000 et tu seras accueilli par l'installateur de Gitea. Utilise les valeurs suivantes pour la configuration.

Paramètres de la base de données

Gitea Installer - Paramètres de la base de données

  • Type de base de données : Choisis PostgreSQL dans la liste déroulante
  • Hôte : 127.0.0.1:5432
  • Nom d'utilisateur : gitea
  • Mot de passe : yourpassword
  • Nom de la base de données : gitea

Paramètres généraux

Gitea Installer - Paramètres généraux

  • Titre du site : Saisis le nom de ton organisation
  • Chemin de la racine du référentiel : Laisse le chemin par défaut
  • Chemin racine de Git LFS : Laisse le chemin par défaut
  • Exécuter en tant que nom d'utilisateur : git
  • Domaine du serveur SSH : Saisis ton adresse IP
  • Port d'écoute HTTP : 3000 (Tu peux modifier le port ici, mais tu devras y accéder via le pare-feu).
  • URL de la base Gitea : http://YOURIPADDRESS:3000
  • Chemin du journal : Laisse la valeur par défaut

Tu peux configurer les paramètres de messagerie et de serveur à ce stade, ou tu peux les modifier plus tard. Tu dois cependant remplir les paramètres du compte administrateur.

Gitea Installer - Paramètres facultatifs

Pour commencer l'installation, clique sur le bouton Installer Gitea*. Une fois terminé, tu seras automatiquement connecté et redirigé vers le tableau de bord du compte.

Tableau Tableau de bord du compte Gitea

L'installation créera le fichier de configuration de Gitea. Change sa permission en lecture seule.

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

C'est terminé. Gitea est maintenant installé sur ton serveur.

Étape 7 - Installer SSL à l'aide de Let's Encrypt

Pour installer un certificat SSL à l'aide de Let's Encrypt, nous devons télécharger l'outil Certbot à l'aide de l'installateur de paquets Snapd inclus dans Ubuntu 20.04.

Exécute les commandes suivantes pour installer Certbot.

$ sudo dnf install certbot

Génère le certificat SSL.

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

La commande ci-dessus téléchargera un certificat dans le répertoire /etc/letsencrypt/live/example.com de ton serveur.

Crée un répertoire webroot de défi pour le renouvellement automatique de Let's Encrypt.

$ sudo mkdir -p /var/lib/letsencrypt

Crée une tâche Cron pour renouveler le SSL. Elle s'exécutera tous les jours pour vérifier le certificat et le renouveler si nécessaire. Pour cela, commence par créer le fichier /etc/cron.daily/certbot-renew et ouvre-le pour le modifier.

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

Colle le code suivant.

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

Enregistre le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque tu y es invité.

Change les autorisations sur le fichier de tâches pour le rendre exécutable.

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

Étape 8 - Installe et configure Nginx

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

$ sudo dnf install nginx

Crée le fichier de configuration Nginx pour Gitea.

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

Colle le code suivant dans celui-ci.

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;
}

Enregistre le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque tu y es invité.

Vérifie si le fichier de configuration fonctionne correctement.

$ sudo nginx -t

Redémarre le serveur Nginx.

$ sudo systemctl restart nginx

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

$ sudo nano /etc/gitea/app.ini

Change les valeurs suivantes.

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

Enregistre le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque tu y es invité.

Redémarre le service Gitea.

$ sudo systemctl restart gitea

Étape 9 - Configuration des notifications par courriel

Si tu veux recevoir des notifications par email, tu peux les activer soit via Sendmail, soit via un service de transaction par email tiers comme Amazon SES, Postmark, Mailgun ou Sendgrid.

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

$ sudo nano /etc/gitea/app.ini

Modifie la section suivante dans le fichier et ajoute 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`

Enregistre le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque tu y es invité.

Redémarre le service Gitea.

$ sudo systemctl restart gitea

Étape 10 - Mise à jour de Gitea

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

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

$ sudo systemctl stop gitea

Télécharge et installe 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émarre le service Gitea.

$ sudo systemctl start gitea

Étape 11 - Comment utiliser SSH

Pour utiliser SSH, nous devons ajouter notre propre clé SSH à Gitea. Si tu n'en as pas, tu peux en créer une en utilisant la commande suivante sur ton système local.

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

Cela créera une clé nommée id_ed25519 dans le répertoire ~/.ssh. Pour ajouter cette clé, copie le contenu du fichier ~/.ssh/id_ed25519.pub dans ton presse-papiers. Ajoute ensuite cette clé à ta page de paramètres Gitea sous l'onglet Clés SSH/GPG. Clique sur le bouton Ajouter une clé, donne un nom à la clé et colle-le dans la case.

Gitea SSH Add Key

Si tu as une liste d'utilisateurs autorisés dans le fichier de configuration sshd, tu dois y ajouter git.

Ouvre le fichier de configuration de sshd.

$ sudo nano /etc/ssh/sshd_config

Cherche une ligne qui doit ressembler à ce qui suit.

AllowUsers myuser myotheruser git

Enregistre le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque tu y es invité.

Redémarre le service SSHD.

$ sudo systemctl restart ssh

Tu dois ajouter la phrase de passe de la clé que nous avons créée à l'outil ssh-agent sur ton système local pour qu'on ne te la demande pas à plusieurs reprises. Exécute les commandes suivantes pour le faire.

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

Tu peux cloner ton 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 d'installation et de configuration du service d'hébergement de code Gitea sur Fedora 34. Si tu as des questions, poste-les dans les commentaires ci-dessous.

Vous aimerez aussi...