Gitea vs GitLab
Gitea and GitLab compared for self-hosted Git: hardware requirements, licences, Free vs paid tiers, CI/CD (Gitea Actions vs GitLab CI), package registries, databases, authentication and SAML, upgrades and release cadence, and when each one breaks, as of November 2026.
Quick Answer
Gitea is a single Go binary under the MIT licence that runs on anything from a Raspberry Pi to Kubernetes, stores data in SQLite, PostgreSQL, MySQL, MariaDB or MSSQL, and bundles issues, pull requests, a wiki, 20 package registry types and Gitea Actions, a CI system that is mostly compatible with GitHub Actions workflows. Gitea Enterprise adds SAML, audit logs, branch-protection inheritance, dependency scanning and SLA support for $9.50 per user per month (list $19, with a one-year commitment). GitLab is a full DevSecOps platform: GitLab CI/CD, merge request approvals, subgroups, a container and package registry, security scanning and value-stream tooling. Its single-node baseline is 8 vCPU and 16 GB of RAM with PostgreSQL, Redis or Valkey, and Gitaly. GitLab Free self-managed has no user cap, Premium costs $29 per user per month billed annually, and Ultimate is custom-priced. GitLab ships a minor release on the third Thursday of every month and a major every May. Pick Gitea for a small team or homelab that wants GitHub-style hosting with minimal upkeep. Pick GitLab when you need its CI depth, nested groups, compliance features or a supported enterprise platform.
Last updated November 8, 2026. Covers Gitea v28.3.0 (1 Nov 2026) and GitLab 19.5 (15 Oct 2026), with Gitea Enterprise pricing from about.gitea.com/pricing and GitLab tiers from about.gitlab.com/pricing, read in November 2026.
| Feature | Gitea | GitLab |
|---|---|---|
| License | MIT | Open core: MIT outside ee/ (Community Edition), proprietary EE licence for ee/ |
| Self-Hosted Pricing | Free (unlimited users); Enterprise $9.50/user/month with 1-year commitment (list $19), 30-day trial | Free (no user cap); Premium $29/user/month billed annually; Ultimate custom pricing |
| Managed / SaaS Option | Gitea Cloud: single-tenant managed instance in your chosen region (30-day trial; price not shown on pages read) | GitLab.com (Free: 5 users per private top-level group, 400 compute min, 10 GiB storage; Premium 10,000 min; Ultimate 50,000 min) and GitLab Dedicated |
| Hardware Requirements | Runs on small hosts; official arm64 and ARMv6 builds for Raspberry Pi; no fixed minimum published on pages read | 8 vCPU / 16 GB RAM baseline single node (8 GB in memory-constrained setups), 40 GB disk plus repos; SSD recommended |
| Supported Databases | SQLite (built-in), PostgreSQL >= 12, MySQL >= 8.0, MariaDB >= 10.4, MSSQL >= 2012 SP4 | PostgreSQL only (bundled or external), plus Redis or Valkey |
| Install Methods | Binary, distro packages, Docker (incl. rootless), Podman Quadlet, Kubernetes, Windows service, from source | Linux package, Docker, Helm chart, GitLab Operator, GitLab Environment Toolkit |
| Built-in CI/CD | Gitea Actions (since 1.19), mostly compatible with GitHub Actions workflow syntax | GitLab CI/CD (.gitlab-ci.yml) with Advanced CI/CD in Premium |
| Runners | Gitea Runner (Go, hard fork of nektos/act); Kubernetes autoscaling runners in Enterprise | GitLab Runner: instance, group and project runners; compute quotas on admin-managed runners |
| Package & Container Registry | 20 registries incl. Container, npm, PyPI, Maven, NuGet, Cargo, Go, Helm, Composer, Conan, Conda, Debian, RPM, Alpine, Arch, RubyGems, Swift | Container Registry plus Maven, npm, NuGet, PyPI, Composer, Conan, Debian, Go proxy, Helm, Ruby gems, Cargo, Terraform, generic |
| Code Review / Merge Controls | Required approvals, multiple reviewers, merge queues, squash/rebase, signed-commit enforcement | Merge requests with approvals; Gitea's table marks required approvals and multiple reviewers as EE (paid) only |
| Org Structure (Groups) | Users, organisations and teams; no subgroups | Groups with nested subgroups, group milestones |
| Issues & Planning | Issues, labels, milestones, time tracking, issue dependencies, projects (kanban) | Issues, confidential issues, service desk, issues by email; team project management (Premium), portfolio management (Ultimate) |
| Authentication (LDAP / OIDC / SAML) | LDAP/AD (multiple servers), OIDC, OAuth2 provider, 2FA/WebAuthn; SAML in Enterprise | LDAP/AD, OIDC, SAML 2.0, OAuth provider, 2FA |
| Repository Mirroring | Push and pull mirrors | Push and pull mirrors |
| Security Scanning | Dependency scanning and IP allowlist in Enterprise; no SAST/DAST suite | SAST listed in Free; full application security testing, supply chain and vulnerability management in Ultimate |
| AI Features | None built in | GitLab Duo Agent Platform via GitLab Credits ($12/user/month included with Premium, $24 with Ultimate, GitLab.com promo) |
| Release Cadence | Frequent minor releases (28.0 on 29 Sep 2026, 28.1, 28.2, 28.3 within five weeks) | Monthly minor (third Thursday), twice-monthly patches, yearly major in May (20.0 on 20 May 2027) |
| Latest Version (Nov 2026) | v28.3.0 (1 Nov 2026) | 19.5 (15 Oct 2026) |
Gitea
Lightweight, self-hosted Git service written in Go and released under the MIT licence, led by CommitGo. It bundles Git hosting, code review, issues, projects, wikis, a multi-format package registry and Gitea Actions CI/CD in a single binary, with a paid Enterprise edition and a single-tenant Gitea Cloud.
Pros
- Single Go binary for linux-amd64, arm64 (Raspberry Pi 4), 386 and ARMv5/v6, plus Docker, rootless Docker, Podman Quadlet, Kubernetes, packages and a Windows service
- Choice of database: built-in SQLite for small installs, or PostgreSQL 12+, MySQL 8.0+, MariaDB 10.4+ or MSSQL 2012 SP4+
- Gitea Actions is mostly compatible with GitHub Actions workflows, accepts absolute action URLs from any Git host, and runs jobs on the Go-based Gitea Runner
- 20 package registry types in the open-source edition, including Container, npm, PyPI, Maven, Cargo, Go, Helm, Debian, RPM, Alpine, Arch and Conda
- Fully MIT-licensed core with unlimited users and repositories; Enterprise costs $9.50 per user per month on an annual commitment
- Push and pull mirroring, LDAP (including multiple servers), OIDC login, acting as an OAuth2 provider, and WebAuthn 2FA in the free edition
Cons
- SAML 2.0, audit logs, branch-protection inheritance, IP allowlists and dependency scanning sit in the paid Enterprise edition
- No nested groups: organisations are one level deep, which gets awkward past a few dozen teams
- Gitea Actions gaps vs GitHub Actions: jobs.<id>.environment and problem matchers are ignored, and GITEA_TOKEN can't push to the repository's package registry
- Gitea's own comparison lists no confidential issues, service desk, or web UI merge-conflict resolution
- Much smaller security, compliance and planning surface than GitLab Ultimate; no built-in SAST, DAST or vulnerability management in the open-source edition
Best For
Homelabs, startups and small-to-mid teams that want GitHub-style repos, pull requests, packages and Actions-compatible CI on a small VPS or NAS with minimal maintenance.
GitLab
Open-core DevSecOps platform from GitLab Inc. covering source control, GitLab CI/CD, package and container registries, planning, security scanning and compliance. Available as GitLab.com SaaS, single-tenant GitLab Dedicated, or self-managed via the Linux package, Docker, Helm chart or Operator, in Free, Premium and Ultimate tiers.
Pros
- GitLab CI/CD is one of the most complete built-in pipeline systems, with instance, group and project runners and compute quotas for admin-managed runners
- Nested subgroups, group milestones, confidential issues, service desk and portfolio tools scale to large organisations
- Built-in container registry and package registry for Maven, npm, NuGet, PyPI, Composer, Conan, Debian, Go proxy, Helm, Ruby gems, Cargo, Terraform modules and generic packages
- Free self-managed has no user limit (the five-user cap applies only to private namespaces on GitLab.com)
- Predictable releases: a minor on the third Thursday of every month, twice-monthly patches, a major each May, and security fixes backported to the previous two monthly releases
- Ultimate adds application security testing, supply-chain security, vulnerability management and compliance tooling in one product
Cons
- Heavy footprint: the single-node baseline is 8 vCPU and 16 GB of RAM plus 40 GB of disk, with PostgreSQL, Redis or Valkey, Gitaly and bundled Prometheus to operate
- PostgreSQL is the only supported database, and upgrades must follow GitLab's version and PostgreSQL compatibility matrix
- Premium costs $29 per user per month billed annually, and Ultimate is quote-only
- Open core: code under ee/ is under GitLab's proprietary EE licence, and many governance features are Premium or Ultimate only
- Monthly minor releases mean regular upgrade work to stay within the security-backport window
Best For
Engineering organisations that want one platform for code, CI/CD, packages, planning and security, have ops capacity for a multi-service install, or need compliance features and vendor support.
Footprint and operations: one binary vs a platform
The two differ most in what you have to run. Gitea is a single Go binary. The binary install guide offers builds for linux-amd64, arm64 (Raspberry Pi 4), 386, ARMv5 and ARMv6, and the docs also cover distro packages, Docker (including rootless), Podman Quadlet, Kubernetes, SELinux and a Windows service. Data can live in built-in SQLite or in PostgreSQL 12+, MySQL 8.0+, MariaDB 10.4+ or MSSQL 2012 SP4+. Gitea warns that converting between databases later is poorly tested, so choose once. GitLab's requirements page sets a single-node baseline of 8 vCPU and 16 GB of RAM, says memory-constrained installs can run on 8 GB, and asks for 40 GB of disk (the package alone is about 2.5 GB) plus repository storage on Gitaly and 5 to 12 GB for PostgreSQL. PostgreSQL is the only supported database, alongside Redis or Valkey, and Prometheus monitoring is bundled and on by default. A separate memory-constrained guide shows GitLab running on 2 to 2.5 GB of RAM plus swap with features turned off, but that is a tuning exercise rather than the default. For a homelab or a five-person startup, Gitea's overhead is negligible. GitLab realistically needs a dedicated VM and someone who understands its moving parts.
CI/CD: Gitea Actions vs GitLab CI/CD
Gitea Actions arrived in Gitea 1.19, and the docs call it stable enough for production; Gitea runs it on every repository at gitea.com/gitea. Workflows use GitHub Actions syntax, and jobs run on Gitea Runner, a standalone Go program built on a hard fork of nektos/act. Most marketplace actions work, and uses: can point at an absolute URL on any Git host, a self: action on your own instance, or a builtin: action that needs no Node.js. Gitea also accepts schedule shorthands such as @daily, which GitHub doesn't. The documented gaps: jobs.<id>.environment is ignored, problem matchers and error annotations are ignored, pre and post steps have no separate log section, and GITEA_TOKEN can't push to the repository's own package registry, so OCI image pushes need a personal access token. Gitea 28 added RUN_RETENTION_DAYS for pruning old runs. GitLab CI/CD is a different class of system. Pipelines in .gitlab-ci.yml run on GitLab Runner at instance, group or project level, admins can apply compute quotas to instance runners, and Premium adds Advanced CI/CD. On GitLab.com, Free includes 400 compute minutes a month, Premium 10,000 and Ultimate 50,000; self-managed, you bring your own runners. If your workflows already target GitHub Actions, Gitea is the easier migration.
Pricing at 10, 50 and 200 users
Self-hosted, both start at zero. Gitea's open-source edition is MIT with unlimited users and repositories. GitLab Free self-managed has no user cap; the five-user limit applies only to private top-level namespaces on GitLab.com. Paid tiers are where the gap opens. Gitea Enterprise lists $19 per user per month, currently shown as $9.50 with a one-year commitment paid online. That works out to about $1,140 a year for 10 users, $5,700 for 50 and $22,800 for 200. GitLab Premium costs $29 per user per month billed annually: $3,480, $17,400 and $69,600 a year at the same sizes. Ultimate is quote-only. These are list-price sums before any negotiated or non-profit discounts, which both vendors mention. The tiers aren't equivalent, though. Gitea Enterprise mainly adds SAML SSO, audit logs, branch-protection inheritance across an organisation, dependency scanning, IP allowlists, mandatory 2FA, Kubernetes autoscaling runners and SLA-backed support. GitLab Premium adds Advanced CI/CD, team project management, SLA management and priority support, plus a promotional $12 a month per user in GitLab Credits for AI features on GitLab.com. Most of GitLab's security and compliance features are in Ultimate. If SAML is the only reason to pay, Gitea Enterprise is far cheaper.
Collaboration features and where Gitea runs out
Gitea covers the everyday developer loop well. Its own comparison table lists required approvals, multiple reviewers, merge queues, squash and rebase merges, signed-commit enforcement, cherry-picking, issue templates, time tracking, issue dependencies, kanban projects, a repo-backed wiki, global code search, push and pull mirrors, and LDAP with multiple servers, OIDC and an OAuth2 provider. Where teams outgrow it is organisational structure and governance. Gitea has organisations and teams but no subgroups, so a company with dozens of teams ends up with a flat list of orgs. The same table marks confidential issues, service desk, creating issues by email, creating a branch from an issue and merge-conflict resolution in the web UI as unsupported in Gitea, and marks all of them as available in GitLab CE. GitLab's groups nest, milestones work at group level, and Premium and Ultimate add epics, portfolio management, value-stream analytics and compliance frameworks. Treat the table as Gitea's view, maintained in Gitea's docs, and check any feature you depend on against GitLab's own tier pages. In practice, a team that lives in pull requests and Actions rarely misses GitLab's extras. A company that plans quarters in its forge or reports to auditors usually does.
Upgrades, release cadence and migrating between them
GitLab publishes a strict release policy. Minor releases ship on the third Thursday of every month, patch releases go out twice a month, and a major ships every May; GitLab 20.0 is scheduled for 20 May 2027. Bug fixes are backported only to the current stable release, and security fixes to the previous two monthly releases as well. As of November 2026 that means 19.5 (released 15 October) gets bug and security fixes while 19.4 and 19.3 get security fixes only. Fall more than three months behind and you're outside the security window, and major upgrades must follow GitLab's upgrade paths and PostgreSQL version matrix. Gitea moves fast too. It went from 1.27 to version 28.0 on 29 September 2026, then shipped 28.1, 28.2 and 28.3 by 1 November. Gitea 28.0 carried breaking changes, such as routing Git network operations through an internal proxy, so read release notes before upgrading. A Gitea upgrade is usually just replacing a binary or image tag. Moving between the two is well trodden: Gitea has a built-in tool for migrating repositories from other services, GitLab included, and both support pull mirroring for a gradual cutover. CI definitions are the real migration cost, since .gitlab-ci.yml and Actions YAML have to be rewritten.
Verdict
Pick Gitea if you want GitHub-style hosting on your own box without making it a part-time job. It is one binary with SQLite or the database you already run, it fits on a small VPS, a NAS or a Raspberry Pi, and you still get pull requests with required approvals, issues and projects, 20 package registry types and Gitea Actions, which runs most GitHub Actions workflows with little or no change. It is MIT-licensed with no user limits. If you later need SAML, audit logs or support, Enterprise costs $9.50 per user per month on an annual commitment, a third of GitLab Premium's $29. Pick GitLab if CI/CD is the centre of your engineering workflow (complex multi-stage pipelines across many runners), if you need nested subgroups and confidential issues for a large org, or if security scanning, compliance and a vendor SLA are requirements, which points to Premium or Ultimate. Budget at least 8 vCPU and 16 GB of RAM for a single node and plan a monthly upgrade routine. For a team under about 50 developers on GitHub Actions-style workflows, Gitea is the cheaper and simpler default. Above that, or with regulatory pressure, GitLab's depth earns its overhead.

