Gitea, votre GitHub à la maison
GitHub est la plateforme de prédilection pour partager du code open source, j'y ai moi-même mis les sources du CMS que j'utilise pour tous mes développements web. Précédemment, il était aussi possible d'héberger des dépots privés, non accessibles aux autres utilisateurs. La plateforme était, toute ou en partie, financée par les abonnements de ces dépôts privés. Depuis que Microsoft a racheté la plateforme, il possible d'ouvrir gratuitement des dépôts privées. Oui mais voila, le problème est que c'est Microsoft... Et même si la société tente depuis quelques années de faire la part belle à l'open source, il n'en reste pas moins un énorme passif pour lequel j'ai du mal à lui faire confiance.
Pour gérer ses dépôts privés, la solution est donc d'installer sa propre plateforme, plus ou moins équivalente à Github. L'une d'entre elle est Gitea, une solution plutôt performante pour recentraliser ses dépots et profiter des avantages de Git sans pour autant que les sources de ses projets ne soient placées à l'exterieur de son réseau.
Gitea peut servir pour une utilisation personnelle, mais est suffisamment performant et flexible pour être aussi utilisé en entreprise. Le partage des dépôts se fait comme sur GitHub, et la gestion fine des utilisateurs permet de cloisonner par groupe de travail si besoin.
Pour ma part, je m'en sers aussi seul, tout simplement parce qu'en travaillant sur plusieurs postes, mais avec un dépôt maître commum, je suis sur de ne jamais écraser et donc perdre des modifications.
Attention, les pré-requis peuvent être lourds et la mise en place n'est pas si simple, veuillez bien bien lire tout l'article avant de commencer.
Installation de Gitea
Il est conseillé, par l'éditeur, d'installer Gitea via Homebrew, autant suivre les recommandations.
Petit soucis, Homebrew ne connait pas gitea dans sa configuration base, en effet
brew search gitea
renvoie
Error: No formulae or casks found for "gitea".
Il faut donc l'ajouter manuellement
brew tap gitea/tap https://gitea.com/gitea/homebrew-gitea
Une fois que cette action est faite, l'application est alors disponible via la recherche ou la demande d'information de Homebrew
brew info gitea
avec le résultat
gitea/tap/gitea: stable 1.12.5, HEAD
https://github.com/go-gitea/gitea
/usr/local/Cellar/gitea/1.12.5 (3 files, 98.8MB) *
Built from source on 2020-11-11 at 11:11:34
From: https://gitea.com/gitea/homebrew-gitea/gitea.rb
==> Options
--HEAD
Install HEAD version
Bonne nouvelle, avec Homebrew, nous installons la dernière version "stable" de l'application.
Si vous vous sentez prêt, lançons l'installation
brew install gitea
Configuration de la base de données
Gitea nécessite une base de donnée pour fonctionner. Cela tombe bien, nous avons deux articles, l'un pour installer MariaDB et un second pour installer MySQL (chapitre 3). Choisissez l'application que vous souhaitez, mais nous recommandons vivement d'utiliser MariaDB, d'une part parce que l'article est plus récent, et donc plus d'actualité, d'autre part parce qu'ayant installé Gitea via Homebrew vous disposez déjà du gestionnaire de paquet. La moitié du chemin est donc déjà parcourue pour installer MariaDB. Pour ma part, j'utiliserai mon installation de MariaDB pour progresser dans l'article.
Note : Il est aussi possible d'utiliser un serveur MySQL distant. Il faudra donc adapter la suite selon vos besoins.
Fraichement installée ou déjà installée, vous pouvez vous y connecter pour continuer l'installation de Gitea. Avec MariaDB
sudo mysql
La première étape est de créer un utilisateur. Vous pouvez choisir le nom, mais surtout un mot de passe, selon votre convenance. Pour ma part, l'utilisateur s'appelera "gitea", et je prendrai un mot de passe généré, qui pour l'article sera "ia3slmCAD8Yt".
Evidemment, pour votre installation, vous pouvez conserver le même nom d'utilisation, mais changez de mot de passe.
Et c'est parti.
SET old_passwords=0;
CREATE USER 'gitea' IDENTIFIED BY 'ia3slmCAD8Yt';
Ensuite créons la base de données, nommée giteadb, avec les paramètres ci-dessous
CREATE DATABASE giteadb CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci';
Enfin, nous appliquons les droits d'accès à la base de données pour l'utilisateur gitea
GRANT ALL PRIVILEGES ON giteadb.* TO 'gitea';
FLUSH PRIVILEGES;
Et voila ! Vous pouvez quitter la connexion à la base de données, et éventuellement tester la connexion pour être sur que vous n'avez pas fait d'erreur.
mysql -u gitea -p giteadb
Des questions sur la gestion des utilisateurs dans MySQL/MariaDB ? Vous pouvez jeter un oeil à cet article.
Configuration de Gitea
Par défaut, le configuration de Gitea, via brew, se trouve à cet emplacement
/usr/local/bin/custom/conf/app.ini
Pas très logique de mettre une configuration dans le dossier des binaires. Vous pouvez choisir de laisser la configuration où elle est, ou la placer à un endroit plus logique, à savoir le dossier etc de Homebrew
/usr/local/etc/
et donc créer un dossier gitea dedans.
/usr/local/etc/gitea
Pour ma part, pour plus de faciliter, je préfère mettre un dossier Gitea dans le dossier Partagé (comme nous l'avions déjà fait pour minidlna).
/Users/Shared/gitea
Peu importe l'endroit choisi, créez le dossier conf (optionnel mais mieux rangé), puis un fichier vierge nommé app.ini.
Voici un fichier exemple, qui est aussi la configuration de base de Gitea
Ce que nous devons faire, c'est mettre dans le fichier, les éléments que nous souhaitons changer.
Commençons par le dossier dans lequel Gitea va stocker les dépôts. Créez le dossier en question et ajoutez dans le fichier le chemin tel que
[repository]
ROOT = /Users/Shared/gitea/repositories/
Continuons avec la base de données, ajoutons
[database]
DB_TYPE = mysql
HOST = 127.0.0.1:3306
NAME = giteadb
USER = gitea
PASSWD = ia3slmCAD8Yt
N'oubliez pas de mettre ces valeurs à jour selon votre configuration réalisée précédemment
Enfin, les logs. Gitea peut enregistrer des logs, si vous souhaitez y accéder, il faut configurer le dossier des logs. Vous pouvez évidemment choisir le dossier qui vous convient, cependant, deux options semblent les plus logiques. La première est de mettre les logs avec le reste de l'application, ainsi tout est centralisé
[log]
ROOT_PATH = /Users/Shared/gitea/logs/
La seconde est de placer les logs de Gitea, avec les autres logs. L'avantage principal est de retrouver directement ces logs dans l'application Console.
[log]
ROOT_PATH = /Users/sky/Library/Logs/gitea/
En option, vous pourrez aussi désactiver la création de comptes. Cette option peut devenir importante si votre serveur est accessible à tout le monde.
[service]
DISABLE_REGISTRATION = true
Vous pourrez toujours créer les comptes, à partir de votre compte administrateur, une fois connecté à l'interface.
Vous pouvez évidemment continuer la configuration selon vos besoins. Si vous souhaitez plus d'informations, vous pouvez aussi regarder la page suivante.
Pensez simplement à couper Gitea avant d'éditer le fichier, car l'application va aussi ajouter quelques unes de ses variables.
Démarrage de l'application
Pour démarrer l'application, nous avons d'abord besoin d'indiquer son dossier de travail
export GITEA_WORK_DIR=/Users/Shared/gitea
puis lancer l'application elle-même en indiquant le fichier de configuration.
gitea web -config /Users/Shared/gitea/conf/app.ini
Pour accéder à l'interface, il suffit simplement d'ouvrir son navigateur, et d'accéder à l'adresse http://localhost:3000
Par défaut, le port utilisé est le 3000, cependant cela peut être modifié dans la configuration.
Cliquez sur "S'inscrire" en haut à droite. Avant de créer le premier compte, Gitea va vous demander de confirmer les paramètres insérés dans le fichier, afin de finaliser son installation.
Vérifiez l'ensemble des valeurs.
Puis, en bas, vous pouvez ajouter des paramètres facultatifs, relatifs aux e-mails ou à des réglages serveurs. Enfin, vous pouvez créer un compte administrateur, ce que je fais. Ce compte vous permettra, plus tard, de vous connecter à l'interface.
Pour valider tout ça, cliquez sur Installer Gitea
Commencer avec Gitea
Une fois l'installation terminée, on arrive sur l'interface principale.
Ensuite, tout se fait depuis l'interface. Vous pourrez :
- créer des organisations,
- créer des projets dans les organisations,
- gérer les comptes, et les attribuer à des projets.
Il n'y a plus qu'à synchroniser vos projets dans Gitea. Si vous avez besoin d'aide pour effectuer ces actions, n'hésitez pas à le signaler dans les commentaires, je ferai les articles complémentaires.
Démarrage automatique de l'application au démarrage
Lancée comme cela, l'application nécessite de conserver le terminal ouvert, mais surtout elle n'est pas automatiquement activée au démarrage.
Pour une utilisation occasionnelle, cela peut largement suffire, mais pour une utilisation plus intensive, il sera bien plus pratique de configurer le Mac pour que l'application se lance automatiquement au démarrage.
Malheureusement, l'intégration à Homebrew n'est pas suffisamment avancée pour utiliser la gestion des services du gestionnaire de paquets. Il faut donc configurer le démarrage automatique par nous même.
Cela passera donc par l'installation d'un agent, dans launchd, qui gèrera le lancement de l'application à l'ouverture du compte.
Commencez par quitter l'application Gitea afin d'éviter un doublon.
Créez un fichier texte, avec le contenu suivant, dont les chemins auront été adaptés à votre installation.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>io.gitea.local</string>
<key>UserName</key>
<string>sky</string>
<key>WorkingDirectory</key>
<string>/Users/Shared/gitea</string>
<key>EnvironmentVariables</key>
<dict>
<key>GITEA_WORK_DIR</key>
<string>/Users/Shared/gitea</string>
</dict>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/gitea</string>
<string>web</string>
<string>-config</string>
<string>/Users/Shared/gitea/conf/app.ini</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ProcessType</key>
<string>Background</string>
<key>StandardOutPath</key>
<string>/Users/sky/Library/Logs/gitea/gitea.out.log</string>
<key>StandardErrorPath</key>
<string>/Users/sky/Library/Logs/gitea/gitea.error.log</string>
</dict>
</plist>
L'idéal est de nommer le fichier avec le même nom que la valeur Label, avec l'extension .plist, ici
io.gitea.local.plist
Vous pouvez évidemment customiser le nom et le Label comme vous le souhaitez. Placez ensuite ce fichier dans le dossier LaunchAgents de votre dossier Bibliothèque.
Enfin activons l'agent dans launchd, en adaptant une nouvelle fois le chemin
launchctl load /Users/sky/Library/LaunchAgents/io.gitea.local.plist
Il ne reste plus qu'à retourner sur l'interface web pour voir si Gitea est de nouveau fonctionnel.
Evidemment, pour arrêter Gitea, il faudra utiliser la commande
launchctl unload /Users/sky/Library/LaunchAgents/io.gitea.local.plist
Bon à savoir
Ici, l'installation se fait sur un Mac, mais nécessite pas mal d'actions. Si vous ne souhaitez altérer votre Mac avec toutes ces actions, il faut savoir qu'une Raspberry Pi peut largement faire le job et héberger un Gitea, seul ou en plus d'un serveur web.