[{"data":1,"prerenderedAt":183},["ShallowReactive",2],{"seo-verification":3,"blog-comparatif-forge-git-self-hosted-2026-fr":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"id":7,"slug":8,"title":9,"excerpt":10,"readTime":11,"views":12,"isPinned":13,"publishedAt":14,"category":15,"categories":21,"featuredImage":23,"bgImage":24,"posterImage":25,"relatedSolution":23,"intro":26,"sections":27,"ctaTitle":133,"ctaBody":134,"ctaButton":135,"ctaUrl":136,"relatedPosts":137},241,"comparatif-forge-git-self-hosted-2026","Gitea, Forgejo ou GitLab CE : quelle forge Git en 2026 ?","Gitea, Forgejo ou GitLab CE pour auto-héberger sa forge Git en 2026 ? Ressources, CI\u002FCD, gouvernance et migration après la CVE-2026-59774.",10,0,false,"2026-08-09T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":20},4,"Développement","developpement","bg-warning\u002F10 text-warning","dev",[22],{"id":16,"name":17,"slug":18,"color":19,"icon":20},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fcomparatif-forge-git-self-hosted-2026-poster.svg","En 2026, auto-héberger sa forge Git n'est plus une démarche de niche. Mais depuis la CVE-2026-59774, qui a exposé des instances Gitea non patchées à une lecture arbitraire de fichiers et une escalade vers l'exécution de code à distance, beaucoup d'équipes doivent trancher une question qu'elles remettaient à plus tard : Gitea, Forgejo ou GitLab CE ? Cet article compare les trois sur les critères qui comptent en production — ressources, CI\u002FCD, gouvernance et migration.",[28,32,42,45,85,88,116,119,122,130],{"type":29,"title":30,"body":31},"h2","Pourquoi cette question est urgente en 2026","La CVE-2026-59774 a été publiée le 4 août 2026. Elle touche Gitea versions 1.22.1 à 1.27.0 inclus — score CVSS 9.9, critique. Le vecteur : la directive `#+INCLUDE` du rendu Org-mode permet à un attaquant non authentifié de lire des fichiers arbitraires accessibles au compte de service Gitea, y compris `app.ini` et les tokens internes. L'exposition de `INTERNAL_TOKEN` ouvre ensuite la voie à une injection de hook Git et à l'exécution distante de code. Le correctif est dans la version 1.27.1. Si votre instance tourne sous une version antérieure et n'est pas isolée du réseau public, patcher est la première action. La seconde est de décider si vous restez sur Gitea ou si la situation accélère une migration que vous différiez.",{"type":33,"title":34,"items":35},"ul","Ce qui a changé depuis 2024 et qui pèse sur ce choix",[36,37,38,39,40,41],"**Forgejo est un fork dur depuis début 2024** — la base de code a divergé de Gitea ; les deux projets partagent encore l'essentiel, mais les chemins d'évolution diffèrent désormais clairement","**Gouvernance communautaire chez Forgejo** — géré par une association à but non lucratif, sans accord de contribution signé par la maison mère ; les correctifs de sécurité arrivent indépendamment","**Forgejo Actions en production** — syntaxe identique à Gitea Actions (GitHub Actions-compatible), compatible avec Woodpecker CI et les runners Docker, active sur Codeberg depuis 2024","**Forgejo v16.0 en juillet 2026** — commentaires de revue multi-lignes, authentification JWT externe pour l'API, durcissement SSRF, réduction de bande passante sur les avatars","**GitLab CE toujours complet mais lourd** — la version communautaire intègre CI\u002FCD, registre de conteneurs, scanning de sécurité et Pages ; le prix : 4 Go de RAM minimum, 8 Go recommandés","**Cinq comparatifs indépendants publiés en 2026** convergent vers la même hiérarchie : Forgejo pour démarrer, Gitea si vous y êtes déjà et à jour, GitLab CE si vous avez besoin d'une plateforme DevOps complète dans une seule installation",{"type":29,"title":43,"body":44},"Prérequis selon votre choix","Forgejo et Gitea sont écrits en Go et livrent un binaire statique unique. Une instance modeste (jusqu'à vingt dépôts, quelques CI runners) tourne confortablement sur 1 vCPU et 1 Go de RAM ; une instance d'équipe (runners CI actifs, LFS, registre de paquets) préférera 2 vCPU et 2 à 4 Go. GitLab CE est dans une autre catégorie : 4 Go de RAM est le minimum absolu pour démarrer, 8 Go pour une utilisation confortable, avec Postgres, Redis, Gitaly et Sidekiq qui tournent en parallèle. Prévoyez au moins 4 vCPU et 50 Go de stockage SSD. Pour les trois outils, vous aurez besoin d'un domaine pointé sur votre VPS, des ports 22 (SSH Git), 80 et 443 ouverts, et d'un reverse proxy (Nginx ou Caddy) pour le HTTPS.",{"type":46,"title":47,"headers":48,"rows":52},"comparison","Forgejo vs Gitea vs GitLab CE — tableau comparatif 2026",[49,50,51],"Critère","Forgejo \u002F Gitea","GitLab CE",[53,57,61,65,69,73,77,81],[54,55,56],"RAM minimale","512 Mo – 1 Go","4 Go (8 Go recommandés)",[58,59,60],"Format de distribution","Binaire statique unique ou image Docker","Omnibus (multi-processus) ou Helm chart",[62,63,64],"CI\u002FCD natif","Forgejo Actions \u002F Gitea Actions (syntaxe GitHub Actions)","GitLab CI\u002FCD intégré, runners partagés ou dédiés",[66,67,68],"Gouvernance","Forgejo : association non-profit (Codeberg) · Gitea : Gitea Ltd.","GitLab Inc. (open-core, CE libre)",[70,71,72],"Registre de conteneurs","Oui (packages + container registry)","Oui, plus complet",[74,75,76],"Fédération \u002F ActivityPub","Forgejo : beta opt-in · Gitea : non prévu","Non",[78,79,80],"Migration depuis Gitea","Forgejo : même schéma de base, une commande · GitLab : import API ou migrator","Import partiel (dépôts, issues, PRs)",[82,83,84],"Idéal pour","Équipes de 1 à 50 développeurs, VPS modeste, CI légère","Organisation qui veut tout dans une seule install, budget infra disponible",{"type":29,"title":86,"body":87},"Migrer de Gitea vers Forgejo : ce que c'est vraiment","La migration Gitea → Forgejo est souvent décrite comme « une commande » — c'est vrai dans le cas simple. Les deux projets ont partagé le même schéma de base de données depuis l'origine et Forgejo maintient la compatibilité ascendante. La procédure se résume à arrêter le conteneur Gitea, pointer le même volume de données vers une image Forgejo, démarrer. Forgejo détecte le schéma existant et applique ses propres migrations. Quelques points à vérifier avant : sauvegardez `app.ini` et la base de données, notez la version Gitea en cours (la migration est testée depuis les versions récentes — une instance très ancienne peut nécessiter une mise à jour intermédiaire), et vérifiez que vos runners CI utilisent la même syntaxe (Forgejo Actions et Gitea Actions sont compatibles). La migration dans l'autre sens — vers GitLab CE — est plus longue : GitLab propose un outil d'import via API (dépôts, issues, merge requests, labels), mais les pipelines CI doivent être réécrits en syntaxe GitLab CI.",{"type":89,"title":90,"steps":91},"steps","Déployer Forgejo sur un VPS avec Docker et Nginx",[92,95,98,101,104,107,110,113],{"title":93,"body":94},"Préparer le VPS","Mettez le système à jour et installez Docker et Docker Compose : `apt update && apt install -y docker.io docker-compose-plugin`. Ouvrez les ports nécessaires : `ufw allow 22\u002Ftcp && ufw allow 80\u002Ftcp && ufw allow 443\u002Ftcp && ufw allow 2222\u002Ftcp` (2222 pour SSH Git si vous ne voulez pas exposer le 22 du système).",{"title":96,"body":97},"Créer les répertoires et le fichier Compose","Créez un répertoire dédié : `mkdir -p \u002Fopt\u002Fforgejo && cd \u002Fopt\u002Fforgejo`. Puis créez un fichier `compose.yml` avec un service `forgejo` pointant l'image `codeberg.org\u002Fforgejo\u002Fforgejo:latest`, un volume persistant pour `\u002Fdata`, les ports `3000:3000` (HTTP) et `2222:22` (SSH), et des variables d'environnement minimales (`FORGEJO__server__DOMAIN=git.votre-domaine.com`, `FORGEJO__server__SSH_PORT=2222`).",{"title":99,"body":100},"Démarrer Forgejo","Lancez le service : `docker compose up -d`. Vérifiez que le conteneur est actif avec `docker compose ps` et consultez les logs avec `docker compose logs -f forgejo`. L'interface d'installation est disponible sur `http:\u002F\u002F\u003Cip-du-vps>:3000`.",{"title":102,"body":103},"Configurer Nginx en reverse proxy HTTPS","Installez Nginx et Certbot : `apt install -y nginx python3-certbot-nginx`. Créez un virtual host pour `git.votre-domaine.com` qui proxifie vers `http:\u002F\u002Flocalhost:3000` avec les en-têtes proxy standard (`proxy_set_header Host $host`, `proxy_set_header X-Real-IP $remote_addr`, `proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for`, `proxy_set_header X-Forwarded-Proto $scheme`).",{"title":105,"body":106},"Obtenir le certificat TLS","Exécutez `certbot --nginx -d git.votre-domaine.com`. Certbot configure la redirection HTTP→HTTPS et programme le renouvellement automatique. Vérifiez avec `curl -I https:\u002F\u002Fgit.votre-domaine.com` que le code est bien `200`.",{"title":108,"body":109},"Finaliser l'installation via l'interface web","Ouvrez `https:\u002F\u002Fgit.votre-domaine.com` dans un navigateur. L'assistant d'installation vous demande le type de base de données (SQLite pour démarrer, PostgreSQL pour la production), l'URL de l'instance, et les paramètres SSH. Créez le compte administrateur, puis désactivez les inscriptions publiques si l'instance est privée (`FORGEJO__service__DISABLE_REGISTRATION=true` dans `compose.yml`).",{"title":111,"body":112},"Activer un runner CI (optionnel)","Forgejo v15.0 (avril 2026) a introduit un workflow d'enregistrement de runner simplifié via l'interface web. Allez dans **Paramètres du site → Actions → Runners**, cliquez **Créer un runner** et copiez la commande d'enregistrement. Lancez le runner dans un second conteneur : `docker run -d --name forgejo-runner -v \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock codeberg.org\u002Fforgejo\u002Frunner:latest daemon --config config.yml`.",{"title":114,"body":115},"Vérifier la sécurité de base","Contrôlez que `FORGEJO__server__LOCAL_ROOT_URL` ne pointe pas vers une IP interne exposée (vecteur SSRF). Depuis Forgejo v16.0, le durcissement SSRF est actif par défaut pour le mirroring Git — vérifiez `FORGEJO__migrations__ALLOW_LOCALNETWORKS` dans votre config si vous avez des besoins de mirroring vers des dépôts internes.",{"type":117,"body":118},"tip","Pour une forge Gitea existante affectée par la CVE-2026-59774 (versions 1.22.1 à 1.27.0) : la migration vers Forgejo et la mise à jour vers Gitea 1.27.1 corrigent toutes les deux la vulnérabilité. Si vous choisissez de rester sur Gitea, appliquez le patch immédiatement. Si vous envisagez Forgejo depuis un moment, la migration résout les deux problèmes en une opération : patchez en migrant plutôt qu'en mettant à jour puis en migrant. Dans tous les cas, invalidez `INTERNAL_TOKEN` et `SECRET_KEY` dans `app.ini` après toute exposition suspectée, et rotez les tokens d'accès personnels de vos utilisateurs.",{"type":29,"title":120,"body":121},"Dépannage : erreurs fréquentes à l'installation","Les erreurs ci-dessous couvrent les cas les plus fréquents lors d'un premier déploiement ou d'une migration.",{"type":33,"title":123,"items":124},"Erreurs courantes et leurs remèdes",[125,126,127,128,129],"**`level=fatal msg=\"Failed to initialize ORM engine\" error=\"Error 1071: Specified key was too long\"` (MySQL\u002FMariaDB)** — la collation de la base n'est pas `utf8mb4` : créez la base avec `CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci` et redémarrez","**`Failed to initialize SSH: ssh: no key found`** — Forgejo cherche les clés SSH dans `\u002Fdata\u002Fgitea\u002F.ssh` ; si le volume n'est pas monté ou si les permissions sont incorrectes, lancez `docker compose exec forgejo forgejo admin regenerate keys` pour les régénérer","**`x509: certificate signed by unknown authority` sur les webhooks sortants** — votre instance appelle un service interne avec un certificat auto-signé ; ajoutez `FORGEJO__webhook__SKIP_TLS_VERIFY=true` uniquement en dev, ou montez le certificat CA dans le conteneur via `SSL_CERT_FILE`","**`Error response from daemon: conflict: unable to delete image` lors d'une mise à jour** — arrêtez d'abord le conteneur (`docker compose down`), supprimez l'image (`docker image rm codeberg.org\u002Fforgejo\u002Fforgejo`), puis repullez (`docker compose pull`) avant de redémarrer","**Runners CI bloqués sur `waiting for available runner` après l'enregistrement** — vérifiez que le runner peut joindre l'instance Forgejo : `curl -s https:\u002F\u002Fgit.votre-domaine.com\u002Fapi\u002Fv1\u002Fversion` depuis le conteneur runner doit retourner un JSON avec la version ; si le nom de domaine ne résout pas depuis le conteneur, ajoutez un `extra_hosts` dans le Compose ou passez par l'IP du VPS",{"type":29,"title":131,"body":132},"Quel outil choisir selon votre situation","Pour une nouvelle installation en 2026 : Forgejo est le choix par défaut dans la quasi-totalité des comparatifs indépendants publiés cette année. La gouvernance communautaire, les correctifs de sécurité indépendants de Gitea Ltd., la compatibilité avec l'outillage existant (runners, webhooks, tokens) et l'empreinte mémoire identique à Gitea réunissent les arguments sans contrepartie notable pour un nouveau projet. Si vous exploitez déjà une instance Gitea à jour (1.27.1+) et qu'elle répond à vos besoins, la migration n'est pas urgente — mais la prochaine fois que vous envisagez une mise à jour majeure, évaluez Forgejo à ce moment. GitLab CE s'impose quand votre équipe a besoin de l'intégralité de la chaîne DevOps dans une seule installation — scanning de sécurité, pages, environnements de déploiement, DORA metrics — et que vous disposez de l'infrastructure pour le faire tourner confortablement. Sur un VPS modeste, ce n'est pas le bon outil. Pour aller plus loin : notre guide d'installation détaillé de Forgejo, la mise en place d'un pipeline CI avec Woodpecker et l'article sur le durcissement initial d'un serveur Linux complètent ce comparatif.","Votre forge tourne sur l'infrastructure que vous contrôlez","Une fois la forge choisie, elle tourne sur un VPS ServOrbit : accès root, IPv4 dédiée, choix d'OS, pas de restrictions arbitraires — l'infrastructure qui ne vous contredit pas.","Voir les VPS Cloud","\u002Fsolutions\u002Fdeveloppeurs",[138,154,168],{"id":139,"slug":140,"title":141,"excerpt":142,"readTime":16,"views":143,"isPinned":13,"publishedAt":144,"category":145,"categories":151,"featuredImage":23,"bgImage":24,"posterImage":153,"relatedSolution":23},75,"heberger-forgejo","Héberger Forgejo sur votre propre VPS","Installez Forgejo, le fork communautaire de Gitea, sur votre VPS avec Docker et SSL. Forge Git souveraine et 100% libre.",575,"2026-04-06T00:00:00+00:00",{"id":146,"name":147,"slug":148,"color":149,"icon":150},7,"Self-hosting","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[152],{"id":146,"name":147,"slug":148,"color":149,"icon":150},"\u002Fblog\u002Fcovers\u002Fheberger-forgejo-poster.svg",{"id":155,"slug":156,"title":157,"excerpt":158,"readTime":16,"views":12,"isPinned":13,"publishedAt":159,"category":160,"categories":165,"featuredImage":23,"bgImage":24,"posterImage":167,"relatedSolution":23},212,"woodpecker-ci-pipeline-vps-forgejo","Woodpecker CI et Forgejo : pipeline CI\u002FCD sur VPS","Déployez Woodpecker CI avec Forgejo sur votre VPS pour un pipeline CI\u002FCD open source auto-hébergé, léger et souverain. Guide Docker pas à pas.","2026-08-02T00:00:00+00:00",{"id":161,"name":162,"slug":163,"color":164,"icon":163},2,"Automatisation","automatisation","bg-brand-action\u002F10 text-brand-action",[166],{"id":161,"name":162,"slug":163,"color":164,"icon":163},"\u002Fblog\u002Fcovers\u002Fwoodpecker-ci-pipeline-vps-forgejo-poster.svg",{"id":169,"slug":170,"title":171,"excerpt":172,"readTime":11,"views":12,"isPinned":13,"publishedAt":173,"category":174,"categories":180,"featuredImage":23,"bgImage":24,"posterImage":182,"relatedSolution":23},228,"durcissement-serveur-linux-initial","Durcissement initial d'un serveur Linux","Créez un utilisateur sudo, configurez SSH avec clés, activez UFW et fail2ban sur Ubuntu 22.04 ou Debian 12 en moins d'une heure.","2026-08-06T00:00:00+00:00",{"id":175,"name":176,"slug":177,"color":178,"icon":179},8,"Sécurité & Monitoring","securite-monitoring","bg-rose-500\u002F10 text-rose-400","security",[181],{"id":175,"name":176,"slug":177,"color":178,"icon":179},"\u002Fblog\u002Fcovers\u002Fdurcissement-serveur-linux-initial-poster.svg",1786296197648]