Guide de déploiement

Gitea vs GitLab : quelle forge Git self-hosted sur VPS ?

Déployer sur un VPS Cloud →

Gitea vs GitLab : quelle forge Git self-hosted sur VPS ?

Comparatif10 min de lecture10 étapes

Héberger sa propre forge Git, c'est reprendre le contrôle de son code, de sa CI et de ses secrets. Gitea joue la légèreté, GitLab la plateforme complète. Voici comment trancher et déployer la tienne sur un VPS — de la comparaison des licences à l'installation en quatre étapes.

Sommaire· Pourquoi self-héberger sa forge Git sur VPS1/13
  1. 01Pourquoi self-héberger sa forge Git sur VPS
  2. 02Les bénéfices d'une forge auto-hébergée
  3. 03Gitea vs GitLab : différences de licence en 2026
  4. 04Performance et ressources serveur
  5. 05Gitea vs GitLab CE : tableau de bord comparatif
  6. 06Fonctionnalités CI/CD comparées
  7. 07Migration GitLab → Gitea : ce que couvre la CVE-2026-85706
  8. 08Quand choisir GitLab CE malgré le coût en ressources
  9. 09Prérequis selon la forge choisie
  10. 10Installer Gitea sur VPS ServOrbit en 4 étapes
  11. 11Déployer Gitea (ou GitLab) sur VPS avec Docker
  12. 12Gitea vs GitLab CE : comparaison rapide
  13. 13Gitea + Woodpecker CI : la stack légère pour équipes de 1 à 15

Pourquoi self-héberger sa forge Git sur VPS

Une forge Git auto-hébergée garde ta propriété intellectuelle hors des plateformes publiques et supprime toute limite arbitraire sur le nombre de dépôts privés, de collaborateurs ou de minutes de CI. Sur un VPS, tu maîtrises la localisation des données, les sauvegardes et l'intégration avec ton pipeline interne. Gitea (et son fork Forgejo) est écrit en Go : un binaire unique, démarrage instantané, empreinte mémoire minime, idéal pour un VPS modeste. GitLab CE est une suite intégrée (issues, CI/CD, registre Docker, registre de paquets, wiki, environnements) mais consomme bien plus de RAM. Le choix dépend de ton besoin : un Git propre et rapide, ou une plateforme DevOps complète en un seul produit.

Les bénéfices d'une forge auto-hébergée

  • Dépôts privés sans plafond ni abonnement par siège
  • CI/CD sous ton contrôle, avec tes propres runners sur le VPS
  • Secrets et tokens stockés chez toi, hors d'une plateforme tierce
  • Registre d'images Docker et de paquets intégré, proche de tes déploiements
  • Conformité et localisation des données au Maroc maîtrisées
  • Avec Gitea : un seul binaire, sauvegarde en copiant un dossier et une base

Gitea vs GitLab : différences de licence en 2026

Gitea est publié sous licence MIT : tu peux lire le code, le modifier, le redistribuer et l'héberger sans contrainte commerciale. Forgejo, son fork communautaire né en 2022, applique la même licence. GitLab CE est lui aussi MIT — mais uniquement la couche Community Edition. GitLab EE (Enterprise Edition) est propriétaire : les fonctionnalités premium (SAML SSO avancé, approbations de MR multiples, SAST/DAST intégrés, epics, roadmaps) sont verrouillées derrière un abonnement payant qui commence à plusieurs centaines d'euros par utilisateur et par an. Pour une équipe qui self-host GitLab CE, le risque principal n'est pas la licence mais l'effet d'aspiration : les fonctionnalités manquantes du CE poussent progressivement vers l'EE payant. Avec Gitea ou Forgejo, l'intégralité des fonctionnalités disponibles est incluse dans la version libre, sans tier payant. Si la compliance ou les audits de licence comptent dans ton contexte — administration, sous-traitance publique ou grands comptes — cette différence est structurante.

Performance et ressources serveur

Gitea consomme environ 100 à 150 Mo de RAM au repos pour un déploiement Docker standard avec PostgreSQL. Avec une dizaine de runners actifs et quelques pipelines simultanés, tu restes sous 400 Mo pour la forge elle-même. C'est dimensionnable sur un VPS à 2 Go de RAM en laissant de la place pour le système et la base. GitLab CE en omnibus est dans une catégorie différente : PostgreSQL, Redis, Sidekiq, Gitaly, Puma et NGINX tournent en parallèle. Au repos, l'ensemble dépasse couramment 3 à 4 Go de RAM sur un déploiement neuf et peut grimper à 6 à 8 Go sous charge CI. GitLab recommande officiellement 8 Go de RAM pour un usage en production avec CI activé. Sur le CPU, Gitea est quasi invisible au repos ; GitLab déclenche des processus Sidekiq en arrière-plan (indexation, webhooks, nettoyages) qui consomment du CPU de manière intermittente même sans activité visible.

Gitea vs GitLab CE : tableau de bord comparatif

Faites défiler le tableau

CritèreGitea / ForgejoGitLab CE
RAM au repos~128 Mo (forge seule)3 à 4 Go (omnibus complet)
RAM recommandée production1 à 2 Go8 Go
ArchitectureBinaire Go uniqueSuite multi-services (omnibus)
Temps de démarrageQuasi instantanéPlusieurs minutes
LicenceMIT (Gitea) / MIT (Forgejo)MIT (CE) / propriétaire (EE)
CI/CD intégréeGitea Actions (style GitHub)GitLab CI/CD, très complète
Runners distribuésBasique (act runner)Avancé (distributed runners, k8s executor)
SAST / DAST intégréNon (via plugins CI)EE uniquement
Approbations de MR multiplesSimpleAvancé (EE)
Registre Docker / paquetsInclus et légerInclus, riche
Gestion de projet (issues, boards)EssentielleAvancée (epics selon édition)
Facilité de sauvegardeDossier + dump SQLProcédure omnibus dédiée
Idéal pourVPS modeste, équipe 1 à 30 devsPlateforme DevOps enterprise

Fonctionnalités CI/CD comparées

Gitea Actions est apparu dans Gitea 1.19 (2023) et reprend exactement la syntaxe des workflows GitHub Actions : les fichiers .github/workflows/*.yml existants sont réutilisables sans modification dans la plupart des cas. L'exécuteur sous-jacent est act (le moteur open source qui simule GitHub Actions localement), encapsulé dans un runner Docker. C'est suffisant pour la majorité des pipelines : build, test, lint, push d'image, déploiement SSH. Les limites apparaissent sur les cas avancés : pas de caches partagés entre runners à l'échelle, pas d'environnements de review nativement, gestion des artefacts plus limitée. GitLab CI est plus mature sur ces points : runners distribués sur plusieurs machines, exécuteurs Kubernetes, caches partagés, environnements dynamiques, review apps, pages de rapports de test inline, règles rules: et include: puissantes. Si ton pipeline dépasse la dizaine de jobs parallèles, gère des environnements de review par MR ou requiert un SAST/DAST intégré au rapport de merge, GitLab CI est irremplaçable dans sa version CE (pour la CI/CD elle-même — les SAST restent EE). La règle pratique : Gitea Actions suffit pour les équipes de 1 à 20 développeurs avec des pipelines standards ; GitLab CI s'impose dès que la maturité du pipeline devient un critère de choix en soi.

Migration GitLab → Gitea : ce que couvre la CVE-2026-85706

La CVE-2026-85706 est une vulnérabilité de type Server-Side Request Forgery (SSRF) découverte dans GitLab CE et EE affectant les versions antérieures au correctif de mars 2026. Elle permet à un attaquant authentifié de forcer GitLab à effectuer des requêtes HTTP vers des ressources internes du réseau via la fonctionnalité d'import de dépôt distant. Sur un VPS où GitLab partage le réseau interne avec d'autres services (bases de données, registres, APIs), l'exposition est réelle. Gitea n'est pas affecté par cette CVE spécifique — son code d'import distant est distinct. La migration GitLab → Gitea est documentée et couverte par l'outil gitea-migration-tool : il importe les dépôts, les issues, les labels, les milestones, les pull requests et les commentaires depuis l'API GitLab. Les pipelines CI/CD ne migrent pas automatiquement (syntaxe GitLab CI ≠ Gitea Actions), mais pour les équipes utilisant une syntaxe proche de GitHub Actions dans leur CI GitLab, la conversion est légère. Si tu utilises une version de GitLab CE non patchée sur un VPS exposé, la migration vers Gitea ou la mise à jour urgente sont les deux seules options raisonnables.

Quand choisir GitLab CE malgré le coût en ressources

  • Équipe de plus de 50 développeurs actifs : la gestion fine des permissions et les groupes imbriqués de GitLab justifient la complexité
  • Compliance enterprise ou certification ISO 27001 : les journaux d'audit, les approbations de MR avec quorum et les politiques de push protégées sont plus matures
  • SAST / DAST intégrés au pipeline (nécessite GitLab EE, mais certaines équipes préfèrent tout consolider sur un seul outil payant)
  • Review apps et environnements dynamiques par MR : GitLab CI gère cela nativement, Gitea Actions requiert un outillage externe
  • Besoin de runners Kubernetes avec autoscaling : GitLab dispose d'un opérateur K8s dédié et d'un executor natif
  • Wiki lié au dépôt avec historique Git et rendus Mermaid / PlantUML intégrés dans l'interface

Prérequis selon la forge choisie

Gitea est frugal : 1 vCPU et 1 Go de RAM suffisent pour une petite équipe, 2 Go avec la base de données et quelques runners. GitLab CE est bien plus gourmand : vise au minimum 4 Go de RAM (8 Go recommandés en usage réel avec CI), 4 vCPU et un disque rapide, car la suite embarque PostgreSQL, Redis, Sidekiq et Gitaly. Dans les deux cas il te faut Docker et Compose, un sous-domaine (git.tondomaine.com), un reverse proxy pour le TLS, et idéalement un second sous-domaine si tu actives le registre Docker. Prévois un volume dédié aux dépôts et une stratégie de sauvegarde.

Installer Gitea sur VPS ServOrbit en 4 étapes

  1. Préparer le volume et le réseau Docker

    Sur ton VPS ServOrbit, crée les répertoires de données et un réseau Docker isolé : mkdir -p /srv/gitea/{data,db} && docker network create forge. Ce réseau permettra à Gitea et à PostgreSQL de communiquer sans exposer la base à l'interface publique.

  2. Écrire le docker-compose.yml

    Déclare deux services : gitea/gitea:latest monté sur /srv/gitea/data et postgres:16-alpine monté sur /srv/gitea/db. Expose le port 3000 en interne (ton reverse proxy l'atteindra) et le port SSH Git 2222 vers l'extérieur. Passe GITEA__database__DB_TYPE=postgres, GITEA__server__DOMAIN et GITEA__server__ROOT_URL en variables d'environnement.

  3. Configurer le domaine et le SSL

    Dans ton espace client ServOrbit, crée un enregistrement DNS git.tondomaine.com pointant vers l'IP de ton VPS. Proxifie ce sous-domaine avec Caddy ou Nginx vers le port 3000 de Gitea. Caddy gère Let's Encrypt automatiquement ; avec Nginx, ajoute un bloc certbot. Vérifie que X-Forwarded-Proto: https est transmis pour que les URL de clone soient correctes.

  4. Créer le premier dépôt et brancher un runner CI

    Lance docker compose up -d, puis accède à https://git.tondomaine.com. L'assistant d'installation s'ouvre pour la première connexion : renseigne le type de base (PostgreSQL), confirme le domaine et crée le compte admin. Pour la CI, installe act_runner sur le même VPS ou sur un second VPS léger, enregistre-le dans les paramètres de l'instance Gitea (Administration → Runners), et place ton premier fichier .gitea/workflows/ci.yml dans un dépôt.

Déployer Gitea (ou GitLab) sur VPS avec Docker

  1. Créer les volumes et le réseau

    Prépare mkdir -p /srv/gitea/{data,db} et un réseau Docker dédié docker network create forge. La séparation data/db facilite les sauvegardes différenciées du code et de la base.

  2. Définir le docker-compose.yml

    Pour Gitea, déclare le service gitea/gitea plus un postgres, monte les volumes, et expose le port HTTP 3000 et le port SSH Git 2222 en local. Pour GitLab, utilise gitlab/gitlab-ce avec la variable GITLAB_OMNIBUS_CONFIG pour fixer l'external_url.

  3. Lancer et finaliser l'installation

    Exécute docker compose up -d. Gitea affiche un assistant d'installation à la première connexion (renseigne le type de base et le domaine) ; GitLab met plusieurs minutes à s'initialiser, récupère le mot de passe root généré dans les logs.

  4. Configurer le reverse proxy et le SSL

    Proxifie git.tondomaine.com vers le port HTTP de la forge avec Caddy ou Nginx pour obtenir un certificat Let's Encrypt. Veille à transmettre le bon X-Forwarded-Proto afin que les URL de clone HTTPS soient correctes.

  5. Activer le SSH Git

    Mappe le port SSH du conteneur vers un port du VPS (ex : 2222) et configure tes clés. Renseigne SSH_DOMAIN pour que les commandes git clone proposées par l'interface soient exactes.

  6. Brancher la CI/CD

    Enregistre un runner : Gitea Actions (compatible syntaxe GitHub Actions) ou un GitLab Runner Docker. Limite ses ressources et isole-le dans son propre conteneur pour qu'un job lourd ne fasse pas tomber la forge.

Gitea vs GitLab CE : comparaison rapide

Faites défiler le tableau

CritèreGiteaGitLab CE
RAM minimale conseillée1 à 2 Go4 à 8 Go
ArchitectureBinaire Go uniqueSuite multi-services (omnibus)
Temps de démarrageQuasi instantanéPlusieurs minutes
CI/CD intégréeGitea Actions (style GitHub)GitLab CI/CD, très complète
Registre Docker / paquetsInclus et légerInclus, riche
Gestion de projet (issues, boards)EssentielleAvancée (epics selon édition)
Facilité de sauvegardeDossier + dump SQLProcédure omnibus dédiée
Idéal pourVPS modeste, petite/moyenne équipePlateforme DevOps complète

Gitea + Woodpecker CI : la stack légère pour équipes de 1 à 15

Si Gitea Actions te semble trop proche de l'écosystème GitHub et que tu veux une CI strictement self-hosted sans dépendance à act, regarde Woodpecker CI (fork de Drone CI, licence Apache 2.0). Il s'intègre nativement à Gitea via OAuth, tourne en Docker, et sa syntaxe YAML est plus explicite que GitHub Actions. La stack Gitea + Woodpecker CI consomme moins de 300 Mo de RAM au repos sur un VPS à 2 Go — contre 4 Go minimum pour GitLab CE avec CI. Pour les équipes de 1 à 15 développeurs avec des pipelines classiques (build, test, push Docker, déploiement SSH), c'est la combinaison la plus frugale disponible en self-hosted.

Sur GitLab, évite l'OOM-kill sur un petit VPS en réduisant la concurrence : passe puma['worker_processes'] à 2 et sidekiq['max_concurrency'] à 10 dans la config omnibus. Si la RAM reste un problème, regarde du côté de Forgejo (fork communautaire de Gitea) qui conserve la légèreté tout en couvrant 90% des besoins d'une équipe, registre et Actions inclus.

Votre forge Git prête à cloner

Un VPS Cloud ServOrbit avec template Docker vous permet de déployer Gitea ou GitLab avec reverse proxy, SSL et runner CI en quelques étapes, depuis votre espace client.

Besoin d'aide ?

Parcourez notre centre d'aide et notre FAQ, ou contactez notre équipe — rappel, WhatsApp ou e-mail. Support en français, anglais et arabe.

Écrire sur WhatsApps'ouvre dans un nouvel onglet