GNU/Linux >> Tutoriels Linux >  >> Debian

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

Gitea est une application Web d'hébergement de code écrite en Go et dérivée de Gogs. 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 comment installer Gitea sur Debian 10 derrière un reverse proxy HTTPS (Nginx).

Exigences

  • Un système Debian 10 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.
  • 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.

Étape 1 :Préparation du système

Commencez par mettre à jour votre index de packages et installez toutes les mises à jour disponibles :

apt update
apt upgrade -y
reboot

Pour cette configuration, plusieurs packages 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.
  • Certbot, un utilitaire pour obtenir des certificats SSL Let's Encrypt.
  • Sudo, pour exécuter des commandes en tant qu'utilisateur système postgres.

Installez-les comme suit :

apt install -y git nginx certbot postgresql sudo

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

adduser --system --disabled-password --group --shell /bin/bash --home /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/gitea
chown -R gitea:gitea /run/gitea
chown -R root:gitea /etc/gitea
chmod -R 750 /var/lib/gitea
chmod 770 /etc/gitea

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

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

Assurez-vous que Postgres est activé et en cours d'exécution :

systemctl enable --now [email protected]

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

sudo -u postgres psql
postgres=# CREATE ROLE gitea LOGIN ENCRYPTED PASSWORD 'your_password';
postgres=# CREATE DATABASE gitea;
postgres=# GRANT ALL PRIVILEGES ON DATABASE gitea TO gitea;
postgres=# exit;

Étape 3 :Installer Gitea

Téléchargez le dernier binaire linux-amd64 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
chmod 755 /usr/local/bin/gitea

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

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

Et entrez ce qui suit :

[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
Requires=postgresql.service
[Service]
Type=simple
User=gitea
Group=gitea
WorkingDirectory=/var/lib/gitea/
RuntimeDirectory=gitea
ExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.ini
Restart=always
Environment=USER=gitea HOME=/home/gitea GITEA_WORK_DIR=/var/lib/gitea
[Install]
WantedBy=multi-user.target

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

systemctl daemon-reload

Demandez ensuite à systemd de démarrer Gitea au démarrage du système :

systemctl enable gitea.service

Étape 4 :Configurer Gitea

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

systemctl start 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 n'appartenant pas au 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/gitea
chown root:gitea /etc/gitea/app.ini
chmod 640 /etc/gitea/app.ini

Ouvrez son fichier de configuration :

$EDITOR /etc/gitea/app.ini
Remove the following line from the [server] section:
HTTP_PORT = 3000
And add the following lines to the [server] section:
HTTP_ADDR        = /run/gitea/gitea.sock
PROTOCOL         = unix
UNIX_SOCKET_PERMISSION = 666

Étape 5 :Configurer le proxy inverse

Stop Nginx if it is running, as certbot will need to bind to port 80:
systemctl stop nginx.service

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

certbot 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/sites-available/gitea

Et saisissez la configuration suivante :

server {
        listen 80;
        listen [::]:80;
        server_name your_domain;
        return 301 https://$server_name$request_uri;
	access_log /var/log/nginx/gitea-proxy_access.log;
	error_log /var/log/nginx/gitea-proxy_error.log;
}
server {
        listen 443 ssl;
        listen [::]:443 ssl;
        server_name your_domain;
        ssl on;
        ssl_certificate /etc/letsencrypt/live/your_domain/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/your_domain/privkey.pem;
        location / {
                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, exécutez la commande suivante pour l'activer :

ln -s /etc/nginx/sites-available/gitea /etc/nginx/sites-enabled

Vérifiez les éventuelles erreurs de syntaxe avec et modifiez votre configuration en conséquence :

nginx -t

Enfin, lancez Nginx et Gitea :

systemctl start nginx.service gitea.service

Votre instance Gitea devrait maintenant fonctionner correctement. Si vous n'avez pas créé de compte administrateur à l'aide du programme d'installation Web initial, le premier utilisateur à s'inscrire se verra attribuer le rôle d'administrateur.

É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 Avertissement ou Erreur. 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 = file
LEVEL = warn
ROOT_PATH = /var/lib/gitea/log

Redémarrez Gitea pour que les modifications prennent effet :

systemctl restart 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 = true

Et changez le port SSH en n'importe quel nombre supérieur à 1000, par exemple :

SSH_PORT = 2222

Redémarrez ensuite Gitea pour appliquer les modifications.


Debian
  1. Comment installer Steam avec Steam Play sur Debian 10 Buster

  2. Comment installer Visual Studio Code sur Debian 10

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

  4. Comment installer Gitea sur Debian 9

  5. Comment installer WonderCMS avec Nginx sur Debian 11

Comment installer Itch avec Debian 11

Comment installer Gitea sur Debian 10

Comment installer Visual Studio Code sur Debian 11

Comment installer phpMyAdmin avec Nginx sur Debian 11

Comment installer Gitea sur Debian 11

Comment installer Anaconda Python sur Debian 10