[{"data":1,"prerenderedAt":225},["ShallowReactive",2],{"seo-verification":3,"blog-migrer-gitlab-vers-gitea-vps-2026-fr":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-migrer-gitlab-vers-gitea-vps-2026-fr",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":33,"intro":35,"sections":36,"ctaTitle":158,"ctaBody":159,"ctaButton":160,"ctaUrl":161,"relatedPosts":162},352,"migrer-gitlab-vers-gitea-vps-2026",{"fr":10,"en":12,"ar":13,"es":14},"migrate-gitlab-to-gitea-vps-2026","الانتقال-من-gitlab-إلى-gitea-على-vps-في-2026","migrar-gitlab-a-gitea-en-un-vps-en-2026","Migrer de GitLab vers Gitea sur VPS en 2026","GitLab.com impose la lecture seule aux namespaces de plus de 5 membres depuis le 15 août 2026. Voici comment migrer vers Gitea auto-hébergé sans perdre l'historique.",10,0,false,"2026-09-16T00:00:00+00:00","2026-09-16T14:44:13+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},4,"Développement","developpement","bg-warning\u002F10 text-warning","dev",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fmigrer-gitlab-vers-gitea-vps-2026-poster.svg",{"categorySlug":25,"appSlug":34},"gitea","Depuis le 15 août 2026, GitLab.com a basculé en lecture seule les namespaces comptant plus de cinq membres sur les abonnements gratuits. Pour de nombreuses équipes, c'est une migration forcée — et une occasion de reprendre le contrôle. Gitea, dans sa version 1.27.3 disponible en template VPS chez ServOrbit, offre une alternative légère, auto-hébergée et suffisamment complète pour couvrir la quasi-totalité des besoins d'une équipe de développement de taille intermédiaire. Ce guide couvre l'export GitLab, l'import Gitea, la CI\u002FCD et la gestion des permissions, commandes réelles à l'appui.",[37,41,53,56,96,121,142,145,148,151,155],{"type":38,"title":39,"body":40},"h2","Pourquoi GitLab.com est devenu intenable pour les équipes de 5+ personnes","Le 15 août 2026, GitLab a appliqué une nouvelle politique sur son offre gratuite : tout namespace regroupant plus de cinq membres passe automatiquement en lecture seule (source : support.gitlab.com\u002Fhc\u002Fen-us\u002Farticles\u002F28301407860508). Concrètement, les développeurs supplémentaires ne peuvent plus pousser de code, ouvrir des merge requests ni déclencher des pipelines CI\u002FCD. La seule issue proposée par GitLab est la souscription à un abonnement payant — dont le coût par siège devient rapidement significatif pour une startup ou une agence.\n\nCette décision intervient dans un contexte plus large de monétisation accélérée de la plateforme SaaS. Elle touche en priorité les équipes open-source à faible budget, les agences multi-projets et les développeurs indépendants qui mutualisent un namespace. Ce n'est pas la première restriction de ce type : GitLab avait déjà supprimé les pipelines CI\u002FCD gratuits pour les nouveaux utilisateurs en 2021. Le mouvement est structurel.\n\nFace à cette contrainte, auto-héberger sa forge Git sur un VPS reprend tout son sens. Vous contrôlez les accès, les données restent sur votre infrastructure, et le coût est fixe — celui du serveur, pas celui des sièges.",{"type":42,"title":43,"items":44},"ul","Ce que Gitea apporte nativement",[45,46,47,48,49,50,51,52],"**Forge Git complète** — repositories, branches, tags, pull requests, code review inline et gestion des conflits via l'interface web.","**Gestion des organisations et des équipes** — permissions granulaires par dépôt (lecture, écriture, admin) sans limite de membres.","**Gitea Actions** — moteur de CI\u002FCD compatible avec la syntaxe YAML de GitHub Actions, ce qui facilite la portabilité des workflows existants.","**Registre de paquets intégré** — npm, PyPI, Maven, Docker, Helm : publiez et consommez vos artefacts sans dépendance externe.","**Webhooks et API REST** — surface d'API large pour intégrer vos outils de déploiement, notifications Slack ou tableaux de bord internes.","**Authentification SSO** — LDAP, OAuth2, SAML et OpenID Connect pris en charge nativement pour centraliser l'identité.","**Empreinte mémoire réduite** — 512 Mo de RAM suffisent pour une équipe de dix personnes ; 1 Go recommandé pour les Actions concurrentes.","**Mises à jour simples** — binaire unique ou image Docker officielle, migrations de base de données automatiques à chaque version.",{"type":38,"title":54,"body":55},"Prérequis avant de commencer","Côté serveur, Gitea v1.27.3 tourne confortablement avec 512 Mo de RAM pour un usage minimal ; prévoyez 1 Go si vous activez les Actions Gitea avec des runners concurrents. Le template VPS ServOrbit part sur une image Debian 12 avec Docker pré-installé — c'est le mode de déploiement recommandé car il isole le processus Gitea et simplifie les mises à jour.\n\nCôté réseau, pointez un sous-domaine vers l'IP de votre VPS avant de lancer l'installation : Gitea génère les URLs des clones SSH et HTTPS au premier démarrage, et il est fastidieux de les corriger après coup. Un enregistrement A `git.mondomaine.com` suffit. Prévoyez également un certificat TLS — Caddy ou Traefik peuvent le générer automatiquement via Let's Encrypt en frontal de Gitea.\n\nSur GitLab.com, vérifiez que vous disposez des droits Owner sur le groupe ou les projets à migrer : l'export nécessite ce niveau d'accès. Générez un token d'API personnel avec les scopes `api` et `read_repository` — il servira lors de l'export via l'API REST.",{"type":57,"title":58,"rows":59,"headers":92},"comparison","GitLab vs Gitea — critères clés",[60,64,68,72,76,80,84,88],[61,62,63],"Limite de membres (gratuit SaaS)","5 membres (lecture seule au-delà depuis août 2026)","Non restreint en auto-hébergé",[65,66,67],"Empreinte mémoire minimale","4 Go (GitLab CE self-hosted)","512 Mo",[69,70,71],"CI\u002FCD intégrée","GitLab CI (YAML)","Gitea Actions (syntaxe GitHub Actions)",[73,74,75],"Registre de conteneurs","Oui (GitLab Container Registry)","Oui (Gitea Packages — Docker inclus)",[77,78,79],"Gestion des merge\u002Fpull requests","Merge Requests avancées","Pull Requests avec code review inline",[81,82,83],"Authentification SSO","SAML, LDAP, OAuth2","LDAP, OAuth2, SAML, OIDC",[85,86,87],"Import depuis GitLab","N\u002FA","Import natif via API ou archive .tar.gz",[89,90,91],"Coût d'exploitation","29 $\u002Futilisateur\u002Fmois (Premium)","Coût du VPS uniquement (99 DH\u002Fmois\u002Fmois)",[93,94,95],"Critère","GitLab.com Free","Gitea VPS",{"type":97,"title":98,"steps":99},"steps","Préparer l'export GitLab",[100,103,106,109,112,115,118],{"title":101,"body":102},"Connectez-vous à GitLab.com et naviguez vers le projet à exp","Connectez-vous à GitLab.com et naviguez vers le projet à exporter : **Settings > General > Advanced > Export project**. Cliquez sur « Export project » et attendez l'e-mail de confirmation (quelques minutes pour les petits dépôts, jusqu'à une heure pour les grands).",{"title":104,"body":105},"Pour exporter via l'API sans passer par l'interface, déclenc","Pour exporter via l'API sans passer par l'interface, déclenchez l'export avec : `curl --request POST --header \"PRIVATE-TOKEN: \u003Cvotre-token>\" \"https:\u002F\u002Fgitlab.com\u002Fapi\u002Fv4\u002Fprojects\u002F\u003Cproject-id>\u002Fexport\"`",{"title":107,"body":108},"Vérifiez l'état de l'export avec","Vérifiez l'état de l'export avec : `curl --header \"PRIVATE-TOKEN: \u003Cvotre-token>\" \"https:\u002F\u002Fgitlab.com\u002Fapi\u002Fv4\u002Fprojects\u002F\u003Cproject-id>\u002Fexport\"` — attendez le statut `finished`.",{"title":110,"body":111},"Téléchargez l'archive d'export","Téléchargez l'archive d'export : `curl --location --header \"PRIVATE-TOKEN: \u003Cvotre-token>\" \"https:\u002F\u002Fgitlab.com\u002Fapi\u002Fv4\u002Fprojects\u002F\u003Cproject-id>\u002Fexport\u002Fdownload\" --output gitlab-export.tar.gz`",{"title":113,"body":114},"Pour migrer l'historique Git brut en complément, clonez le d","Pour migrer l'historique Git brut en complément, clonez le dépôt avec toutes les références : `git clone --mirror git@gitlab.com:votre-groupe\u002Fvotre-projet.git votre-projet.git`",{"title":116,"body":117},"Vérifiez l'intégrité du clone miroir avant de transférer","Vérifiez l'intégrité du clone miroir avant de transférer : `git -C votre-projet.git fsck --no-progress` — aucune erreur ne doit apparaître.",{"title":119,"body":120},"Transférez l'archive et le dépôt miroir vers votre VPS","Transférez l'archive et le dépôt miroir vers votre VPS : `rsync -avz gitlab-export.tar.gz votre-projet.git user@votre-vps:\u002Ftmp\u002Fmigration\u002F`",{"type":97,"title":122,"steps":123},"Importer dans Gitea sur VPS",[124,127,130,133,136,139],{"title":125,"body":126},"Sur votre VPS, créez l'organisation cible dans Gitea via l'i","Sur votre VPS, créez l'organisation cible dans Gitea via l'interface web ou via l'API : `curl -X POST \"https:\u002F\u002Fgit.mondomaine.com\u002Fapi\u002Fv1\u002Forgs\" -H \"Authorization: token \u003Cgitea-token>\" -H \"Content-Type: application\u002Fjson\" -d '{\"username\":\"mon-organisation\",\"visibility\":\"private\"}'`",{"title":128,"body":129},"Créez le dépôt vide dans Gitea avant l'import","Créez le dépôt vide dans Gitea avant l'import : `curl -X POST \"https:\u002F\u002Fgit.mondomaine.com\u002Fapi\u002Fv1\u002Forgs\u002Fmon-organisation\u002Frepos\" -H \"Authorization: token \u003Cgitea-token>\" -H \"Content-Type: application\u002Fjson\" -d '{\"name\":\"mon-projet\",\"private\":true}'`",{"title":131,"body":132},"Poussez l'historique Git depuis le clone miroir","Poussez l'historique Git depuis le clone miroir : `git -C votre-projet.git remote set-url origin https:\u002F\u002Fgit.mondomaine.com\u002Fmon-organisation\u002Fmon-projet.git` puis `git -C votre-projet.git push --mirror`",{"title":134,"body":135},"Pour importer les issues et les merge requests depuis l'arch","Pour importer les issues et les merge requests depuis l'archive GitLab, utilisez l'outil `gitea-migrator` ou l'import natif Gitea : dans l'interface, **+ New Migration > GitLab** et fournissez l'URL du projet source avec votre token GitLab.",{"title":137,"body":138},"Vérifiez que toutes les branches et tous les tags sont prése","Vérifiez que toutes les branches et tous les tags sont présents : `git ls-remote https:\u002F\u002Fgit.mondomaine.com\u002Fmon-organisation\u002Fmon-projet.git` doit lister les mêmes références que l'original.",{"title":140,"body":141},"Mettez à jour les URLs de clone dans les configurations loca","Mettez à jour les URLs de clone dans les configurations locales de chaque développeur : `git remote set-url origin https:\u002F\u002Fgit.mondomaine.com\u002Fmon-organisation\u002Fmon-projet.git`",{"type":38,"title":143,"body":144},"Configurer la CI\u002FCD dans Gitea","Gitea v1.27.3 intègre Gitea Actions, un moteur de CI\u002FCD dont la syntaxe YAML est volontairement compatible avec GitHub Actions. Si vos pipelines existaient sur GitLab CI, une adaptation est nécessaire — les étapes `stages` et `script` de GitLab se traduisent en `jobs` et `steps` Gitea Actions — mais la logique reste identique.\n\nPour activer les runners, installez `act_runner` sur votre VPS ou sur une machine dédiée : `act_runner register --no-interactive --instance https:\u002F\u002Fgit.mondomaine.com --token \u003Crunner-token> --name mon-runner --labels ubuntu-latest:docker:\u002F\u002Fnode:20-bullseye`. Le token de registration se trouve dans **Site Administration > Runners**.\n\nSi vous préférez une CI\u002FCD plus découplée, Woodpecker CI est une alternative mature qui s'intègre nativement à Gitea via OAuth2 et propose une interface de supervision des builds. Son fichier de pipeline `.woodpecker.yml` est également proche de la syntaxe Drone CI, ce qui simplifie les migrations depuis d'anciens stacks. Dans les deux cas, la première pipeline devrait valider le build, exécuter les tests et, si tout est vert, pousser une image vers le registre Docker de Gitea.",{"type":38,"title":146,"body":147},"Migrer les membres d'équipe et les permissions","Gitea organise les accès en trois niveaux : les organisations (équivalentes aux groupes GitLab), les équipes au sein d'une organisation, et les permissions par dépôt. Commencez par créer tous les comptes utilisateurs — soit manuellement, soit en activant l'auto-enregistrement temporairement, soit via LDAP\u002FSSO si vous en disposez déjà.\n\nCréez ensuite les équipes dans votre organisation : `Owners`, `Developers`, `Reporters` correspondent aux rôles Owner, Developer et Reporter de GitLab. Gitea permet d'affiner les permissions par dépôt à l'intérieur d'une même équipe — un sous-ensemble de membres peut avoir accès en écriture uniquement à certains repos.\n\nPour migrer en lot les memberships, l'API Gitea accepte des appels de ce type : `curl -X PUT \"https:\u002F\u002Fgit.mondomaine.com\u002Fapi\u002Fv1\u002Forgs\u002Fmon-organisation\u002Fteams\u002F\u003Cteam-id>\u002Fmembers\u002F\u003Cusername>\" -H \"Authorization: token \u003Cgitea-token>\"`. Un script shell bouclant sur votre liste d'utilisateurs exportée de GitLab suffit pour automatiser cette étape sur des équipes de moins de cinquante personnes. Au-delà, évaluez une intégration LDAP pour synchroniser les groupes automatiquement.",{"type":38,"title":149,"body":150},"Dépannage — les 4 erreurs les plus fréquentes","**`remote: repository not found` lors du push miroir.** Le dépôt cible n'existe pas encore dans Gitea, ou le token utilisé n'a pas les droits d'écriture. Vérifiez que le dépôt a bien été créé (étape 2 de l'import) et que votre token possède le scope `write:repository`.\n\n**`error: src refspec refs\u002Fmerge-requests\u002F... does not match any`** lors du `push --mirror`. Les références internes de GitLab (`refs\u002Fmerge-requests\u002F`) ne sont pas acceptées par Gitea. Filtrez-les explicitement : `git -C votre-projet.git push --mirror` peut être précédé d'une suppression locale des refs parasites avec `git -C votre-projet.git for-each-ref --format='%(refname)' refs\u002Fmerge-requests | xargs -I{} git update-ref -d {}`.\n\n**`Error 413: Request Entity Too Large`** à l'import d'une archive volumineuse. La taille maximale des uploads est configurée dans `app.ini` de Gitea sous la clé `MAX_UPLOAD_SIZE`. Augmentez-la (`MAX_UPLOAD_SIZE = 2048` pour 2 Go) et rechargez le service : `docker compose restart gitea`.\n\n**Les issues importées n'affichent pas les bons auteurs.** Gitea associe les issues aux comptes locaux par nom d'utilisateur. Si le nom GitLab diffère du nom Gitea, les issues sont attribuées à l'utilisateur qui a lancé l'import. Créez d'abord tous les comptes avec les mêmes usernames que sur GitLab avant de lancer la migration des issues.",{"type":152,"title":153,"body":154},"tip","Conseil de sécurité post-migration","Une fois la migration terminée, désactivez l'auto-enregistrement (`DISABLE_REGISTRATION = true` dans `app.ini`) si vous n'utilisez pas de SSO, et activez l'authentification à deux facteurs obligatoire pour tous les membres Owner. Configurez également des sauvegardes automatiques du volume Docker qui contient `\u002Fdata\u002Fgitea` : un dump quotidien vers un stockage distant (S3, Backblaze B2) vous protège d'une perte de disque. Vérifiez enfin que le port SSH de Gitea (2222 par défaut dans Docker) n'est pas exposé directement sur l'IP publique si vous filtrez par clé SSH — un fail2ban ou une règle UFW limitant les connexions SSH par minute réduit significativement la surface d'attaque.",{"type":38,"title":156,"body":157},"Reprendre le contrôle de votre forge Git","La restriction GitLab.com du 15 août 2026 a accéléré une tendance déjà engagée : les équipes qui avaient accepté la dépendance à une plateforme SaaS gratuite se retrouvent face à un choix tarifaire non anticipé. Gitea v1.27.3 répond à l'essentiel des besoins d'une forge Git d'équipe — repositories, pull requests, CI\u002FCD, registre de paquets, SSO — dans une empreinte qui tient sur un VPS entrée de gamme.\n\nLa migration n'est pas instantanée, mais elle est séquentielle et réversible à chaque étape : l'historique Git est intégral dès le `push --mirror`, les issues et pull requests suivent via l'import natif, et la CI\u002FCD se reconfigure en quelques heures si vos workflows étaient déjà en YAML. Le template VPS Gitea de ServOrbit vous évite la phase d'installation et de configuration initiale — Gitea est prêt, Docker est en place, il reste à coller votre domaine et à dérouler les étapes décrites ici.\n\nRetrouvez les guides complémentaires sur la stack IA self-hosted avec Gitea et Ollama, le remplacement de GitHub Actions par Woodpecker CI, et l'installation de GitLab CE sur VPS si vous évaluez encore les deux options.","Déployez votre forge Git sur VPS ServOrbit","Template Gitea v1.27.3 prêt à l'emploi, root access, snapshots quotidiens. Votre forge privée en moins de dix minutes.","Voir les VPS développeurs","\u002Fsolutions\u002Fdeveloppeurs",[163,186,206],{"id":164,"slug":165,"slugs":166,"title":170,"excerpt":171,"readTime":172,"views":18,"isPinned":19,"publishedAt":173,"updatedAt":174,"category":175,"categories":181,"featuredImage":30,"bgImage":31,"posterImage":183,"relatedSolution":184},335,"deployer-stack-ia-self-hosted-gitea-ollama-vps",{"fr":165,"en":167,"ar":168,"es":169},"self-hosted-ai-stack-gitea-runners-and-ollama-on-a-vps","مكدس-ذكاء-اصطناعي-ذاتي-gitea-وollama-على-خادم-vps","stack-de-ia-self-hosted-gitea-runners-y-ollama-en-un-vps","Stack IA self-hosted : Gitea, runners et Ollama sur VPS","Déployez un pipeline IA complet sur votre VPS : forge Git Gitea, runners CI et inférence LLM avec Ollama. Aucun code ni prompt ne quitte votre serveur.",9,"2026-09-06T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":176,"name":177,"slug":178,"color":179,"icon":180},1,"Intelligence Artificielle","intelligence-artificielle","bg-purple-500\u002F10 text-purple-400","ia",[182],{"id":176,"name":177,"slug":178,"color":179,"icon":180},"\u002Fblog\u002Fcovers\u002Fdeployer-stack-ia-self-hosted-gitea-ollama-vps-poster.svg",{"categorySlug":180,"appSlug":185},"ollama",{"id":187,"slug":188,"slugs":189,"title":193,"excerpt":194,"readTime":195,"views":196,"isPinned":19,"publishedAt":197,"updatedAt":198,"category":199,"categories":203,"featuredImage":30,"bgImage":31,"posterImage":205,"relatedSolution":30},235,"installer-gitlab-ce-vps",{"fr":188,"en":190,"ar":191,"es":192},"install-gitlab-ce-on-a-vps-complete-guide","تثبيت-gitlab-ce-على-vps-دليل-شامل","instalar-gitlab-ce-en-un-vps-guia-completa","Installer GitLab CE sur VPS : guide complet","Déployez GitLab CE sur VPS avec Docker Compose : forge git, CI\u002FCD intégrée, registry Docker et gestion de projets en self-hosted.",17,3,"2026-08-07T00:00:00+00:00","2026-09-11T11:34:12+00:00",{"id":196,"name":200,"slug":201,"color":202,"icon":201},"Déploiement","deploiement","bg-success\u002F10 text-success",[204],{"id":196,"name":200,"slug":201,"color":202,"icon":201},"\u002Fblog\u002Fcovers\u002Finstaller-gitlab-ce-vps-poster.svg",{"id":207,"slug":208,"slugs":209,"title":213,"excerpt":214,"readTime":215,"views":176,"isPinned":19,"publishedAt":216,"updatedAt":174,"category":217,"categories":222,"featuredImage":30,"bgImage":31,"posterImage":224,"relatedSolution":30},338,"remplacer-github-actions-woodpecker-ci-self-hosted-vps",{"fr":208,"en":210,"ar":211,"es":212},"replace-github-actions-with-woodpecker-ci-on-a-vps","استبدال-github-actions-بـwoodpecker-ci-على-vps","reemplazar-github-actions-con-woodpecker-ci-en-vps","Remplacer GitHub Actions par Woodpecker CI sur VPS","GitHub a annoncé puis suspendu la facturation des runners self-hosted. Migrez vers Woodpecker CI : syntaxe propre, moins de 50 Mo RAM, coût fixe sur VPS.",8,"2026-09-07T00:00:00+00:00",{"id":218,"name":219,"slug":220,"color":221,"icon":220},2,"Automatisation","automatisation","bg-brand-action\u002F10 text-brand-action",[223],{"id":218,"name":219,"slug":220,"color":221,"icon":220},"\u002Fblog\u002Fcovers\u002Fremplacer-github-actions-woodpecker-ci-self-hosted-vps-poster.svg",1789570129625]