Aller au contenu
Culture DevOps medium

Forgejo : présentation de la forge Git communautaire

12 min de lecture

Forgejo est une forge logicielle self-hosted, légère et 100 % libre, conçue pour héberger des dépôts Git avec gestion de projet, CI/CD et registre de paquets intégrés. Fork communautaire de Gitea créé en 2022, Forgejo est porté par une communauté indépendante sous l'égide de Codeberg e.V., une association à but non lucratif allemande. Avec un binaire unique consommant moins de 200 Mo de RAM, c'est l'une des forges les plus légères du marché, tout en offrant un périmètre fonctionnel comparable à GitHub.

  • Comprendre ce qu'est Forgejo : son origine, sa gouvernance communautaire et sa licence
  • Connaître les fonctionnalités principales : dépôts Git, CI/CD, registre de paquets, fédération
  • Identifier la stack technique : un binaire Go unique, bases de données supportées, composants
  • Comparer Forgejo à Gitea et aux autres forges : différences concrètes de gouvernance et de fonctionnalités
  • Évaluer si Forgejo convient à votre contexte (ressources, conformité, philosophie)

L'enchaînement est précis. Le 25 octobre 2022, une lettre ouverte de la communauté Gitea conteste la création de Gitea Ltd., entreprise commerciale à qui le projet venait d'être transféré. Faute de réponse satisfaisante, le fork est annoncé publiquement le 15 décembre 2022 sous le nom de Forgejo, et la première version stable, v1.18.0-1, sort le 29 décembre 2022. L'objectif affiché du groupe de contributeurs est de garantir que le projet reste libre et gouverné collectivement.

Le projet est placé sous la tutelle de Codeberg e.V., une association à but non lucratif enregistrée à Berlin. Codeberg détient les domaines et fournit l'infrastructure, mais la gouvernance technique reste indépendante et définie collectivement par les contributeurs.

AspectDétail
CréationDécembre 2022 (fork de Gitea)
OrganisationCodeberg e.V. (association à but non lucratif, Berlin)
GouvernanceCollective, définie par les contributeurs
LicenceGPL v3+ (depuis v9.0 ; MIT pour les versions antérieures)
Code sourcecodeberg.org/forgejo/forgejo
FinancementBénévolat, dons (Liberapay), subventions, contrats de service

Forgejo est un binaire unique écrit en Go qui embarque tous les composants nécessaires. Lisez le tableau ci-dessous comme une liste de ce que vous n'aurez pas à installer séparément : serveur web, serveur Git, indexeur de recherche et file de tâches sont dans le même exécutable. Seule la ligne « base de données » impose un choix réel au moment de l'installation, et c'est le seul qui soit difficile à changer ensuite.

ComposantTechnologieRôle
Serveur webGo (Chi)Interface web, API REST, serveur Git HTTP/SSH
ORMXORMAbstraction base de données
Base de donnéesSQLite, PostgreSQL, MySQL/MariaDBStockage des métadonnées (projets, utilisateurs, issues)
Indexeur de codeBleve (intégré) ou MeilisearchRecherche full-text dans le code et les issues
File de messagesEn mémoire ou RedisGestion des tâches asynchrones (webhooks, emails)
UIVue 3, Fomantic UIInterface utilisateur web
CI/CDForgejo Runner (Go)Exécution des workflows Forgejo Actions

C'est le socle, et il couvre ce qu'une équipe attend d'une forge au quotidien. Deux points valent d'être soulignés pour qui vient de GitHub : les miroirs fonctionnent dans les deux sens, ce qui permet de garder une copie publique sur GitHub tout en travaillant sur son instance, et la vérification des signatures accepte aussi bien GPG que les clés SSH, plus simples à mettre en place dans une petite équipe.

  • Dépôts Git avec interface web, éditeur en ligne et visualisation de diff
  • Pull requests avec revue de code en ligne, discussions et approbations
  • Branches protégées avec règles de merge configurables
  • Miroir de dépôts (pull et push) depuis/vers d'autres forges
  • Signature GPG/SSH des commits

Le CI/CD n'est pas intégré au binaire : il repose sur un programme séparé, le Forgejo Runner, que vous installez et déclarez auprès de l'instance. C'est une différence structurelle avec GitLab, où l'agent fait partie de la même procédure d'installation. En contrepartie, le runner peut vivre sur une autre machine, ce qui isole les jobs de la forge elle-même.

  • Workflows YAML compatibles avec la syntaxe GitHub Actions
  • Forgejo Runner : exécuteur léger en Go (shell, Docker, LXC)
  • Réutilisation d'Actions existantes : la plupart des Actions GitHub fonctionnent directement
  • Téléchargement d'Actions depuis n'importe quel dépôt Git (pas uniquement GitHub)

Le périmètre couvre le suivi d'un projet, pas la gestion d'un portefeuille de projets. Vous trouverez les issues, les milestones et un tableau Kanban par dépôt ou par organisation, mais rien d'équivalent aux epics de GitLab pour agréger plusieurs équipes. Pour une petite structure c'est suffisant, et cela évite la couche d'outillage que personne ne remplit.

  • Issues avec labels, milestones, assignations et suivi de temps
  • Tableaux Kanban (boards de projet)
  • Wiki intégré par dépôt
  • Webhooks vers Slack, Discord, Matrix, Mattermost et endpoints personnalisés

C'est l'argument le plus sous-estimé de Forgejo : la même instance héberge le code et les artefacts produits par la CI, sans registre tiers à déployer ni à authentifier séparément. Les jetons d'accès de la forge servent aussi bien à docker login qu'à npm publish. Attention en revanche à la rétention : les paquets s'accumulent sur le disque de la forge, et la purge des anciennes versions se pilote au niveau de chaque dépôt.

  • Container Registry (images OCI/Docker)
  • Package Registry compatible : npm, PyPI, Maven, NuGet, Cargo, Composer, Conda, Helm, RubyGems, Conan, Pub, Vagrant et plus de 20 formats

La fédération vise à supprimer l'obligation de créer un compte sur chaque instance pour contribuer : un utilisateur inscrit sur une forge pourrait ouvrir une issue sur une autre. Le protocole retenu, ActivityPub, est celui de Mastodon, étendu par la spécification ForgeFed pour les objets propres aux forges. À ce jour, seules des briques partielles sont livrées, et il faut lire cette section comme une orientation du projet, pas comme une fonctionnalité disponible.

  • ActivityPub / ForgeFed : Forgejo travaille activement sur la fédération entre instances
  • Objectif : permettre à des forges indépendantes de collaborer (suivre des utilisateurs distants, interagir avec des dépôts d'autres instances)
  • Fonctionnalité expérimentale, des changements incompatibles sont possibles

Les trois méthodes installent le même binaire, la différence porte sur qui gère les mises à jour et le cycle de vie du service. Le binaire vous laisse tout piloter, y compris le fichier de service systemd et l'utilisateur dédié. Le conteneur simplifie la montée de version au prix d'une gestion explicite des volumes de données. Les paquets Debian et RPM sont maintenus par la communauté, pas par le projet lui-même : vérifiez le décalage de version avant de vous appuyer dessus.

MéthodeDescriptionRecommandée pour
BinaireTéléchargement direct depuis forgejo.org/releasesServeurs Linux, contrôle maximal
Container OCIcodeberg.org/forgejo/-/packages/container/forgejoDocker, Podman, Kubernetes
Packages Debian/RPMVia les dépôts communautairesDistributions Linux standard

Forgejo et Gitea partagent la même base de code historique, mais les projets divergent de plus en plus.

AspectForgejoGitea
GouvernanceCommunauté (Codeberg e.V.)Entreprise (Gitea Ltd. / CommitGo Inc.)
LicenceGPL v3+ (depuis v9.0)MIT
Offre commercialeAucune (services professionnels communautaires)Gitea Cloud + Gitea Enterprise
Support WindowsAbandonnéMaintenu
Fédération ActivityPubEn développement actifNon prioritaire
Certification SOC 2NonOui (CommitGo)
APICompatible Gitea (divergences mineures)API de référence
Migration Gitea → ForgejoSupportée officiellementSans objet

Cette comparaison n'oppose pas deux équivalents : GitLab CE embarque des fonctions que Forgejo ne prétend pas couvrir, et la ligne « complexité opérationnelle » est le vrai critère de choix pour une petite équipe. Regardez d'abord les deux premières lignes, elles décident souvent seules : si votre serveur a 2 Go de RAM, la question est tranchée. Regardez ensuite la ligne CI/CD, car c'est celle qui coûte le plus cher à migrer plus tard, la syntaxe des pipelines n'étant pas transposable d'un outil à l'autre.

CritèreForgejoGitLab CE
RAM minimum~200 Mo~4 Go
CPU minimum1 vCPU2 vCPU
Installation1 binairePackage Omnibus (~1 Go)
CI/CDForgejo Actions (compatible GitHub Actions)GitLab CI (syntaxe propriétaire)
SAST/DASTNon intégréIntégré (Ultimate)
Registre de paquets20+ formats10+ formats
Gestion de portefeuilleNonEpics, Milestones (Premium+)
Complexité opérationnelleFaibleÉlevée
  • Forgejo est une forge Git self-hosted légère, 100 % libre (GPL v3+), portée par une communauté indépendante sous Codeberg e.V.
  • Fork de Gitea depuis 2022, motivé par la volonté de préserver une gouvernance communautaire face à la commercialisation de Gitea
  • Un binaire unique en Go qui embarque serveur web, Git, base de données (SQLite possible) et indexeur
  • Empreinte minimale : ~200 Mo RAM, fonctionne sur un Raspberry Pi
  • Forgejo Actions pour le CI/CD, compatible avec la syntaxe GitHub Actions
  • Registre de paquets intégré (Docker, npm, PyPI, Maven et 20+ formats)
  • La fédération (ActivityPub/ForgeFed) est la fonctionnalité phare en développement, absente chez Gitea et GitLab
  • Migration depuis Gitea supportée officiellement (remplacement du binaire)

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn