[{"data":1,"prerenderedAt":159},["ShallowReactive",2],{"seo-verification":3,"blog-gitea-vs-gitlab-en":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":20,"featuredImage":22,"bgImage":23,"posterImage":24,"relatedSolution":25,"intro":28,"sections":29,"ctaTitle":111,"ctaBody":112,"ctaButton":113,"ctaUrl":114,"relatedPosts":115},99,"gitea-vs-gitlab","Gitea vs GitLab: Which Self-Hosted Git Forge on a VPS?","Gitea vs GitLab self-hosted: memory footprint, CI\u002FCD, registries, and scalability compared to choose your Git forge on a VPS.",8,263,false,"2026-03-13T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":18},5,"Comparison","comparatif","bg-info\u002F10 text-info",[21],{"id":16,"name":17,"slug":18,"color":19,"icon":18},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fgitea-vs-gitlab-poster.svg",{"categorySlug":26,"appSlug":27},"self-hosting","gitea","Hosting your own Git forge means taking back control of your code, your CI, and your secrets. Gitea plays the lightweight card, GitLab the all-in-one platform. Here's how to decide and deploy yours on a VPS.",[30,34,44,47,69,108],{"type":31,"title":32,"body":33},"h2","Why Self-Host Your Git Forge on a VPS","A self-hosted Git forge keeps your intellectual property off public platforms and removes any arbitrary limit on the number of private repositories, collaborators, or CI minutes. On a VPS, you control data location, backups, and integration with your internal pipeline. Gitea (and its fork Forgejo) is written in Go: a single binary, instant startup, minimal memory footprint, ideal for a modest VPS. GitLab CE is an integrated suite (issues, CI\u002FCD, Docker registry, package registry, wiki, environments) but consumes far more RAM. The choice depends on your need: a clean, fast Git, or a complete DevOps platform in a single product.",{"type":35,"title":36,"items":37},"ul","The Benefits of a Self-Hosted Forge",[38,39,40,41,42,43],"Unlimited private repositories with no per-seat subscription","CI\u002FCD under your control, with your own runners on the VPS","Secrets and tokens stored on your own server, off a third-party platform","Built-in Docker image and package registry, close to your deployments","Compliance and data residency in Morocco fully under control","With Gitea: a single binary, back up by copying a folder and a database",{"type":31,"title":45,"body":46},"Prerequisites by Chosen Forge","Gitea is frugal: 1 vCPU and 1 GB of RAM are enough for a small team, 2 GB with the database and a few runners. GitLab CE is far more demanding: aim for at least 4 GB of RAM (8 GB recommended in real-world use with CI), 4 vCPUs, and a fast disk, since the suite bundles PostgreSQL, Redis, Sidekiq, and Gitaly. In both cases you'll need Docker and Compose, a subdomain (git.yourdomain.com), a reverse proxy for TLS, and ideally a second subdomain if you enable the Docker registry. Plan for a dedicated volume for the repositories and a backup strategy.",{"type":48,"title":49,"steps":50},"steps","Deploy Gitea (or GitLab) on a VPS with Docker",[51,54,57,60,63,66],{"title":52,"body":53},"Create the Volumes and the Network","Prepare `mkdir -p \u002Fsrv\u002Fgitea\u002F{data,db}` and a dedicated Docker network `docker network create forge`. Separating data\u002Fdb makes it easier to back up the code and the database independently.",{"title":55,"body":56},"Define the docker-compose.yml","For Gitea, declare the `gitea\u002Fgitea` service plus a `postgres`, mount the volumes, and expose HTTP port `3000` and Git SSH port `2222` locally. For GitLab, use `gitlab\u002Fgitlab-ce` with the `GITLAB_OMNIBUS_CONFIG` variable to set the `external_url`.",{"title":58,"body":59},"Launch and Finish the Installation","Run `docker compose up -d`. Gitea shows an installation wizard on first connection (fill in the database type and the domain); GitLab takes several minutes to initialize—retrieve the generated root password from the logs.",{"title":61,"body":62},"Configure the Reverse Proxy and SSL","Proxy git.yourdomain.com to the forge's HTTP port with Caddy or Nginx to obtain a Let's Encrypt certificate. Make sure to pass the correct `X-Forwarded-Proto` so that the HTTPS clone URLs are correct.",{"title":64,"body":65},"Enable Git SSH","Map the container's SSH port to a VPS port (e.g. 2222) and set up your keys. Set `SSH_DOMAIN` so that the `git clone` commands suggested by the interface are accurate.",{"title":67,"body":68},"Wire Up CI\u002FCD","Register a runner: Gitea Actions (compatible with GitHub Actions syntax) or a Docker GitLab Runner. Limit its resources and isolate it in its own container so that a heavy job doesn't bring the forge down.",{"type":70,"headers":71,"rows":75},"comparison",[72,73,74],"Criterion","Gitea","GitLab CE",[76,80,84,88,92,96,100,104],[77,78,79],"Recommended minimum RAM","1 to 2 GB","4 to 8 GB",[81,82,83],"Architecture","Single Go binary","Multi-service suite (omnibus)",[85,86,87],"Startup time","Near-instant","Several minutes",[89,90,91],"Built-in CI\u002FCD","Gitea Actions (GitHub-style)","GitLab CI\u002FCD, very complete",[93,94,95],"Docker \u002F package registry","Included and lightweight","Included, rich",[97,98,99],"Project management (issues, boards)","Essential","Advanced (epics depending on edition)",[101,102,103],"Ease of backup","Folder + SQL dump","Dedicated omnibus procedure",[105,106,107],"Ideal for","Modest VPS, small\u002Fmedium team","Complete DevOps platform",{"type":109,"body":110},"tip","On GitLab, avoid the OOM-kill on a small VPS by reducing concurrency: set `puma['worker_processes']` to 2 and `sidekiq['max_concurrency']` to 10 in the omnibus config. If RAM remains a problem, look at Forgejo (a community fork of Gitea), which keeps the lightness while covering 90% of a team's needs, registry and Actions included.","Your Git Forge, Ready to Clone","A ServOrbit Cloud VPS with a Docker template lets you deploy Gitea or GitLab with a reverse proxy, SSL, and a CI runner in a few steps, right from your client area.","Launch My Forge on a VPS","\u002Fvps-cloud",[116,130,144],{"id":117,"slug":118,"title":119,"excerpt":120,"readTime":11,"views":121,"isPinned":13,"publishedAt":122,"category":123,"categories":124,"featuredImage":22,"bgImage":23,"posterImage":126,"relatedSolution":127},4,"coolify-vs-dokploy","Coolify vs Dokploy: which tool should you choose to deploy on your VPS?","A complete Coolify vs Dokploy comparison: features, simplicity, use cases. Which tool should you choose to host and deploy your applications on a VPS?",2600,"2026-06-07T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":18},[125],{"id":16,"name":17,"slug":18,"color":19,"icon":18},"\u002Fblog\u002Fcovers\u002Fcoolify-vs-dokploy-poster.svg",{"categorySlug":128,"appSlug":129},"deploiement","coolify",{"id":131,"slug":132,"title":133,"excerpt":134,"readTime":11,"views":135,"isPinned":13,"publishedAt":136,"category":137,"categories":138,"featuredImage":22,"bgImage":23,"posterImage":140,"relatedSolution":141},93,"n8n-vs-node-red","n8n vs Node-RED: which self-hosted automation tool to choose?","n8n or Node-RED to automate your workflows on a VPS? Technical comparison, Docker prerequisites and self-hosted deployment guide.",641,"2026-03-19T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":18},[139],{"id":16,"name":17,"slug":18,"color":19,"icon":18},"\u002Fblog\u002Fcovers\u002Fn8n-vs-node-red-poster.svg",{"categorySlug":142,"appSlug":143},"automatisation","n8n",{"id":145,"slug":146,"title":147,"excerpt":148,"readTime":149,"views":150,"isPinned":13,"publishedAt":151,"category":152,"categories":153,"featuredImage":22,"bgImage":23,"posterImage":155,"relatedSolution":156},94,"supabase-vs-appwrite","Supabase vs Appwrite: which self-hosted backend for your VPS?","Supabase or Appwrite self-hosted on a VPS? Backend comparison (auth, DB, storage), Docker prerequisites and complete deployment guide.",9,678,"2026-03-18T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":18},[154],{"id":16,"name":17,"slug":18,"color":19,"icon":18},"\u002Fblog\u002Fcovers\u002Fsupabase-vs-appwrite-poster.svg",{"categorySlug":157,"appSlug":158},"bases-de-donnees","supabase",1785628433184]