Pourquoi choisir Forgejo pour votre forge auto-hébergée
Forgejo est né en 2022 d'un désaccord sur la gouvernance de Gitea, passée sous le contrôle d'une société. Le projet est désormais maintenu par une association à but non lucratif et progresse vers une forge décentralisée capable de fédération via ActivityPub — l'objectif étant qu'un dépôt sur une instance puisse interagir avec une issue ouverte depuis une autre instance. Pour qui valorise la pérennité et l'indépendance de son outillage, Forgejo offre les mêmes qualités techniques que Gitea (légèreté, rapidité, faible consommation) tout en garantissant une licence et une gouvernance entièrement communautaires. C'est la forge de référence de Codeberg, ce qui prouve sa capacité à tenir la charge en production.
Bénéfices concrets d'un Forgejo auto-hébergé
- Gouvernance associative à but non lucratif : aucun risque de pivot commercial du projet.
- Forgejo Actions, compatible avec la syntaxe des workflows GitHub Actions, sans service tiers.
- Migration sans douleur depuis Gitea : même format de base et de volume de données.
- Fédération ActivityPub en cours de déploiement pour interconnecter les instances.
- Empreinte légère identique à Gitea : idéal sur un VPS modeste.
- 100% logiciel libre, sans édition entreprise payante ni fonctionnalité bridée.
Prérequis matériels et logiciels
Comme Gitea, Forgejo est extrêmement sobre. Un VPS de 2 vCPU et 2 Go de RAM gère une équipe de 10 à 20 développeurs sans effort ; passez à 4 Go si vous exécutez Forgejo Actions avec des runners qui compilent localement. Réservez 20 à 40 Go de SSD pour les dépôts et l'historique. Il vous faut Docker et Docker Compose, un sous-domaine git.votredomaine.ma avec un enregistrement A vers l'IP du VPS, et un port distinct du 22 système pour le SSH des dépôts (par exemple 2222).
Déployer Forgejo avec Docker et SSL
Initialiser l'environnement
En SSH sur le VPS, installez Docker et le plugin Compose, puis créez /opt/forgejo. Prévoyez un sous-dossier data qui contiendra dépôts, configuration et avatars, monté en volume pour résister aux mises à jour.
Écrire le docker-compose.yml
Utilisez l'image officielle codeberg.org/forgejo/forgejo:latest. Ajoutez un service postgres:16 pour la base. Montez ./data:/data, fixez USER_UID/USER_GID à 1000 et publiez le SSH de Forgejo sur l'hôte avec "2222:22", en gardant le port 3000 interne.
Démarrer la stack
Lancez docker compose up -d, puis surveillez docker compose logs -f forgejo jusqu'à voir le serveur HTTP écouter sur le port 3000 et la base répondre.
Mettre en place le reverse proxy et SSL
Avec Caddy : git.votredomaine.ma { reverse_proxy localhost:3000 }, le certificat Let's Encrypt est géré automatiquement. Avec Traefik ou Nginx, proxifiez vers 127.0.0.1:3000 et activez HTTP/2 ainsi que la redirection HTTP vers HTTPS.
Configurer l'instance
Accédez à https://git.votredomaine.ma, renseignez l'hôte PostgreSQL (db:5432), l'URL de base HTTPS et le port SSH externe 2222. Créez le compte administrateur et désactivez l'auto-inscription pour une instance privée.
Brancher un runner Forgejo Actions
Récupérez le jeton d'enregistrement dans l'administration, puis démarrez un conteneur forgejo-runner pointant vers votre instance. Validez avec un workflow .forgejo/workflows/ci.yml minimal qui exécute echo ok.
Si vous migrez depuis une instance Gitea existante, Forgejo lit directement le même volume de données et la même base : arrêtez Gitea, sauvegardez, remplacez l'image par celle de Forgejo dans le docker-compose.yml, puis relancez. La version de Forgejo doit être compatible avec celle de Gitea utilisée — vérifiez la table de correspondance des versions avant la bascule pour éviter une migration de schéma à sens unique. Faites toujours un snapshot du VPS avant l'opération.
Forgejo face à Gitea
| Critère | Forgejo | Gitea |
|---|---|---|
| Gouvernance | Association à but non lucratif (Codeberg e.V.) | Société commerciale |
| Licence / modèle | 100% libre, pas d'édition entreprise | Open source avec édition Gitea Cloud commerciale |
| CI/CD intégré | Forgejo Actions (compatible GitHub Actions) | Gitea Actions (compatible GitHub Actions) |
| Fédération | ActivityPub en développement actif | Non prioritaire |
| Consommation RAM | Très faible (~200-300 Mo) | Très faible (~200-300 Mo) |
| Migration croisée | Lit le volume et la base Gitea | Origine du fork |
| Image Docker | codeberg.org/forgejo/forgejo | gitea/gitea |
| Cas d'usage type | Souveraineté et pérennité communautaire | Forge généraliste avec services managés possibles |