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.