Admin/Dev

25
Nov.
2020

Gitea, votre GitHub à la maison

Publié par sky

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

Accueil de Gitea

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.

Configuration de Gitea

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.

Configuration du compte administrateur

Pour valider tout ça, cliquez sur Installer Gitea

 

Commencer avec Gitea

Une fois l'installation terminée, on arrive sur l'interface principale.

Première visite sur Gitea

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épôts sur Gitea

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.

 
 
Commentaires
Aucun commentaire pour le moment.

 

Poster un commentaire
En postant sur skymac.org, je m'engage à être courtois et à ce que mon message soit pertinent avec le sujet de l'article.
En outre, j'accepte, sans condition, que mon message soit refusé et supprimé si ces règles ne sont pas appliquées.
Captcha indisponible
Pour valider le formulaire, vous devez confirmer que vous êtes bien une personne. Actuellement, la fonctionnalité est indisponible. Vous devez activer le service ReCaptcha dans le gestionnaire des cookies, et donc consentir à l'utilisation de ses cookies.
Ouvrir le panneau de gestion des cookies
Fermer le panneau
Ce site utilise des cookies pour assurer son bon fonctionnement. Il utilise aussi des cookies issues de services tiers permettant de proposer des fonctionnalités avancées. À tout moment, vous pouvez choisir quels services vous souhaitez activer ou refuser, afin de retirer votre consentement quant à l'utilisation des cookies.
 
Personnalisation des services
Vous êtes libre de choisir quels services vous souhaitez activer. En autorisant ces services tiers, vous acceptez le dépôt et la lecture de cookies et l'utilisation de technologies de suivi nécessaires à leur bon fonctionnement. En retirant votre consentement pour certains de ces services, certaines fonctionnalités du site peuvent ne plus fonctionner.
Navigation du site  En savoir plus
Le site écrit un cookie de session permettant son bon fonctionnement et aidant à la navigation. Il ne peut être désactivé.
Utilisation : 1 cookie, enregistre l'identifiant de la session.
Durée de vie : Le cookie est présent pendant toute la session sur le site. Il devient obsolète après 24 minutes d'inactivité.
Obligatoire
Popup Média
Afficher des vidéos depuis Yoube ou Dailymotion.
ReCaptcha  En savoir plus
Permet de valider que les visiteurs sont bien des humains lorsqu'ils valident des formulaires.
 
Tout accepter Tout refuser Gérer