Gitea est un système de contrôle de version alternatif open source auto-hébergé alimenté par Git. Gitea est écrit en Golang et est une solution légère à héberger sur n'importe quelle plateforme.
Conditions préalables
- Nouvelle instance de Vultr Debian 9.
- Utilisateur non root avec
sudoprivilèges.
- Nginx
- Git
- MariaDB
Étape 1: installer Nginx
Mettez à jour votre liste de colis.
sudo apt update
Installez Nginx.
sudo apt -y install nginx
Une fois l'installation terminée, exécutez les commandes suivantes pour démarrer et activer le service Nginx.
sudo systemctl enable nginx.service
sudo systemctl start nginx.service
Étape 2: installer Git
Cela peut être fait avec la commande suivante.
sudo apt -y install git
Étape 3: installer le serveur de base de données MariaDB
Gitea prend en charge les serveurs de bases de données suivants.
- MariaDB / MySQL
- PostgreSQL
- SQLite
- TiDB
Pour ce didacticiel, nous utiliserons le serveur et le client MariaDB.
sudo apt -y install mariadb-server mariadb-client
Une fois terminé, assurez-vous que MariaDB est activé et en cours d'exécution.
sudo systemctl enable mariadb.service
sudo systemctl start mariadb.service
Après cela, exécutez la commande ci-dessous pour sécuriser le serveur MariaDB en créant un mot de passe root et en interdisant l'accès root distant.
sudo mysql_secure_installation
Lorsque vous y êtes invité, répondez aux questions ci-dessous en suivant le guide.
Enter current password for root (enter for none): Just press the Enter
Set root password? [Y/n]: Y
New password: Enter password
Re-enter new password: Repeat password
Remove anonymous users? [Y/n]: Y
Disallow root login remotely? [Y/n]: Y
Remove test database and access to it? [Y/n]: Y
Reload privilege tables now? [Y/n]: Y
Redémarrez MariaDB.
sudo systemctl restart mariadb.service
Tapez la commande ci-dessous pour vous connecter à la console MariaDB.
sudo mysql -u root -p
Saisissez ensuite le mot de passe que vous avez créé ci-dessus pour vous connecter. Vous verrez le message de bienvenue de MariaDB.
Créez une base de données appelée gitea.
CREATE DATABASE gitea;
Créez un utilisateur de base de données appelé giteauseravec un nouveau mot de passe.
CREATE USER 'giteauser'@'localhost' IDENTIFIED BY 'new_password_here';
Assurez-vous de le remplacer new_password_herepar un mot de passe fort et complexe.
Accordez ensuite à l'utilisateur un accès complet à la base de données.
GRANT ALL ON gitea.* TO 'giteauser'@'localhost' IDENTIFIED BY 'user_password_here' WITH GRANT OPTION;
Enfin, enregistrez vos modifications et quittez.
FLUSH PRIVILEGES;
EXIT;
Étape 4: préparer l'environnement Gitea
Créez un utilisateur pour exécuter Gitea.
sudo adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --disabled-password --home /home/git git
Créez la structure de répertoires requise.
sudo mkdir -p /var/lib/gitea/{custom,data,indexers,public,log}
sudo chown git:git /var/lib/gitea/{data,indexers,log}
sudo chmod 750 /var/lib/gitea/{data,indexers,log}
sudo mkdir /etc/gitea
sudo chown root:git /etc/gitea
sudo chmod 770 /etc/gitea
Étape 5: installer Gitea
Le binaire Gitea peut être téléchargé en exécutant les commandes suivantes.
sudo wget -O gitea https://dl.gitea.io/gitea/1.5.0/gitea-1.5.0-linux-amd64
sudo chmod +x gitea
Copiez le binaire dans un emplacement global.
sudo cp gitea /usr/local/bin/gitea
Étape 6: créer un fichier de service pour démarrer automatiquement Gitea
Créez un fichier de service Linux.
sudo touch /etc/systemd/system/gitea.service
À l'aide d'un éditeur de texte de votre choix, ouvrez ce fichier nouvellement créé et remplissez-le avec les éléments suivants.
[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
After=mariadb.service
[Service]
# Modify these two values and uncomment them if you have
# repos with lots of files and get an HTTP error 500 because
# of that
###
#LimitMEMLOCK=infinity
#LimitNOFILE=65535
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
# If you want to bind Gitea to a port below 1024 uncomment
# the two values below
###
#CapabilityBoundingSet=CAP_NET_BIND_SERVICE
#AmbientCapabilities=CAP_NET_BIND_SERVICE
[Install]
WantedBy=multi-user.target
Activez et démarrez Gitea au démarrage.
sudo systemctl daemon-reload
sudo systemctl enable gitea
sudo systemctl start gitea
Assurez-vous que Gitea est en cours d'exécution.
sudo systemctl status gitea
Supprimez le fichier de configuration nginx par défaut.
sudo rm /etc/nginx/sites-enabled/default
Créez une configuration de proxy inverse pour Gitea.
sudo touch /etc/nginx/sites-available/git
Remplissez le fichier avec la configuration suivante, assurez-vous de le remplacer example.compar votre nom de domaine ou votre adresse IP.
upstream gitea {
server 127.0.0.1:3000;
}
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name example.com;
root /var/lib/gitea/public;
access_log off;
error_log off;
location / {
try_files maintain.html $uri $uri/index.html @node;
}
location @node {
client_max_body_size 0;
proxy_pass http://localhost:3000;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_max_temp_file_size 0;
proxy_redirect off;
proxy_read_timeout 120;
}
}
Activez la configuration du proxy inverse Gitea Nginx.
sudo ln -s /etc/nginx/sites-available/git /etc/nginx/sites-enabled/git
Rechargez ensuite le service Nginx.
sudo systemctl reload nginx.service
Ensuite, ouvrez votre navigateur et accédez au nom d'hôte ou à l'adresse IP du serveur.
http://YOUR_SERVER_IP/install
Suivez les instructions à l'écran pour terminer la configuration de Gitea.