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.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- 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)
Origine et gouvernance
Section intitulée « Origine et gouvernance »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.
| Aspect | Détail |
|---|---|
| Création | Décembre 2022 (fork de Gitea) |
| Organisation | Codeberg e.V. (association à but non lucratif, Berlin) |
| Gouvernance | Collective, définie par les contributeurs |
| Licence | GPL v3+ (depuis v9.0 ; MIT pour les versions antérieures) |
| Code source | codeberg.org/forgejo/forgejo |
| Financement | Bénévolat, dons (Liberapay), subventions, contrats de service |
Stack technologique
Section intitulée « Stack technologique »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.
| Composant | Technologie | Rôle |
|---|---|---|
| Serveur web | Go (Chi) | Interface web, API REST, serveur Git HTTP/SSH |
| ORM | XORM | Abstraction base de données |
| Base de données | SQLite, PostgreSQL, MySQL/MariaDB | Stockage des métadonnées (projets, utilisateurs, issues) |
| Indexeur de code | Bleve (intégré) ou Meilisearch | Recherche full-text dans le code et les issues |
| File de messages | En mémoire ou Redis | Gestion des tâches asynchrones (webhooks, emails) |
| UI | Vue 3, Fomantic UI | Interface utilisateur web |
| CI/CD | Forgejo Runner (Go) | Exécution des workflows Forgejo Actions |
Fonctionnalités principales
Section intitulée « Fonctionnalités principales »Hébergement Git et revue de code
Section intitulée « Hébergement Git et revue de code »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
CI/CD, Forgejo Actions
Section intitulée « CI/CD, Forgejo Actions »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)
Gestion de projet
Section intitulée « Gestion de projet »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
Registre de paquets
Section intitulée « Registre de paquets »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
Fédération (expérimentale)
Section intitulée « Fédération (expérimentale) »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
Méthodes d'installation
Section intitulée « Méthodes d'installation »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éthode | Description | Recommandée pour |
|---|---|---|
| Binaire | Téléchargement direct depuis forgejo.org/releases | Serveurs Linux, contrôle maximal |
| Container OCI | codeberg.org/forgejo/-/packages/container/forgejo | Docker, Podman, Kubernetes |
| Packages Debian/RPM | Via les dépôts communautaires | Distributions Linux standard |
Forgejo vs Gitea : quelles différences ?
Section intitulée « Forgejo vs Gitea : quelles différences ? »Forgejo et Gitea partagent la même base de code historique, mais les projets divergent de plus en plus.
| Aspect | Forgejo | Gitea |
|---|---|---|
| Gouvernance | Communauté (Codeberg e.V.) | Entreprise (Gitea Ltd. / CommitGo Inc.) |
| Licence | GPL v3+ (depuis v9.0) | MIT |
| Offre commerciale | Aucune (services professionnels communautaires) | Gitea Cloud + Gitea Enterprise |
| Support Windows | Abandonné | Maintenu |
| Fédération ActivityPub | En développement actif | Non prioritaire |
| Certification SOC 2 | Non | Oui (CommitGo) |
| API | Compatible Gitea (divergences mineures) | API de référence |
| Migration Gitea → Forgejo | Supportée officiellement | Sans objet |
Forgejo vs GitLab CE
Section intitulée « Forgejo vs GitLab CE »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ère | Forgejo | GitLab CE |
|---|---|---|
| RAM minimum | ~200 Mo | ~4 Go |
| CPU minimum | 1 vCPU | 2 vCPU |
| Installation | 1 binaire | Package Omnibus (~1 Go) |
| CI/CD | Forgejo Actions (compatible GitHub Actions) | GitLab CI (syntaxe propriétaire) |
| SAST/DAST | Non intégré | Intégré (Ultimate) |
| Registre de paquets | 20+ formats | 10+ formats |
| Gestion de portefeuille | Non | Epics, Milestones (Premium+) |
| Complexité opérationnelle | Faible | Élevée |
À retenir
Section intitulée « À retenir »- 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)