unsubbed.co

Gitea

Lightweight, self-hosted Git service with code hosting, pull requests, CI/CD, package registry, and project management. GitHub alternative that runs on a Raspberry Pi.

Self-hosted Git hosting, honestly reviewed. No marketing copy, just what you get when you run it yourself.


TL;DR

  • What it is: Open-source (MIT) self-hosted Git service — repositories, code review, CI/CD, package registry, and project management in a single binary [4].
  • Who it’s for: Development teams and founders paying GitHub or GitLab per-seat fees who want full control over their code and data. Also individual developers and homelab enthusiasts who want a private Git server that runs on a Raspberry Pi [2].
  • Cost savings: GitHub Teams runs ~$4/user/month; GitHub Enterprise runs ~$21/user/month. Gitea self-hosted runs on a $5–10/month VPS with unlimited users and repositories for $0 in licensing [website pricing].
  • Key strength: Lowest resource consumption in the category — the only major Git platform that genuinely runs on cheap hardware. Written in Go, single binary, no JVM, no heavy dependencies [1][3].
  • Key weakness: No subgroups (groups within groups), no in-browser merge conflict resolution, and advanced AI code review tooling requires third-party setup [3][5]. Not the right tool if your team is already comfortable with GitHub and the bill is manageable.

What is Gitea

Gitea is a self-hosted Git service — the same category as GitHub, GitLab, and Bitbucket, except the software runs on your server and costs nothing to license. The project describes itself as “painless self-hosted all-in-one software development service, including Git hosting, code review, team collaboration, package registry and CI/CD” [website]. That’s accurate, if a bit dry.

It started as a community fork of Gogs in November 2016, when contributors wanted faster iteration and more open governance than Gogs provided [4]. Since then it’s grown into a full DevOps platform: issue tracking, pull requests with review workflows, milestones, kanban boards, Gitea Actions (a CI/CD system directly compatible with GitHub Actions YAML), and a package registry supporting 20+ formats including npm, PyPI, Maven, Docker containers, and Helm charts [website][1].

The critical technical fact is that Gitea is written in Go. That means a single compiled binary, cross-platform support (Linux, Windows, macOS, FreeBSD, ARM), and resource consumption low enough to run comfortably on a Raspberry Pi 4B or a $5 VPS [1][2]. This is not true of GitLab, which has a well-earned reputation for eating RAM. The Gitea documentation’s own feature comparison table shows Gitea as the only platform in its class with a checkmark for “Low RAM/CPU usage” [3].

As of this review it sits at 54,343 GitHub stars.


Why people choose it

The XDA Developers piece [2] puts it plainly: control and privacy. When you host your own Gitea instance, your repositories, commit history, user data, and metadata live on your hardware under your policies — no third-party infrastructure, no unexpected terms of service changes, no data leaving your network. This matters more than it sounds when your codebase contains unreleased product code, client data integrations, or anything that would be uncomfortable sitting on GitHub’s servers during an acquisition or policy shift.

The second reason people choose it is the resource efficiency. Reviewers consistently note that the interface is snappy even on modest hardware, and repositories clone quickly over both SSH and HTTPS [1][2]. One testimonial on the Gitea website (Tony Brix, @tonybrix) captures the onboarding experience bluntly: “wow. just wow. I wanted to see how ‘painless’ this was but figured it would still take a week to learn everything and setup. 2 hours!” That tracks with the setup experience described across reviews.

The third reason is cost. For a small engineering team paying per-seat GitHub fees, the math eventually tips. A 10-person team on GitHub Teams pays roughly $40/month, or $480/year. On GitHub Enterprise, that’s $210/month or $2,520/year. A Gitea instance on a $6 VPS handles unlimited users and unlimited repositories for $72/year in hosting costs and $0 in licensing [website pricing]. The savings accelerate as team size grows — GitHub and GitLab both charge per seat, Gitea does not.

The Gitea blog post celebrating 40K stars [4] makes another case worth taking seriously: it’s possible to consolidate multiple tools into one. A team running Jira for issues, Jenkins for CI, Nexus for artifacts, and Harbor for container images can, in principle, replace all four with Gitea. That’s an aggressive claim and most teams won’t execute a clean swap, but the feature coverage is genuinely there [4].


Features

Core Git hosting:

  • Repository management, branching, tagging, Git LFS 2.0 [3]
  • Pull requests with inline comments, multiple reviewers, required approvals, squash/rebase/merge-commit options [3]
  • Protected branches with merge restrictions and push access controls [3]
  • Web-based code editor and commit graph [3]
  • Repository mirroring — both push and pull — so you can sync with GitHub or GitLab [3]
  • Global and repository-level code search [3]
  • Template repositories [3]
  • Git blame, visual image diffs, Mermaid diagrams in Markdown [3]

Project management:

  • Issue tracker with labels, milestones, time tracking, multiple assignees, and dependencies [3]
  • Kanban-style project boards (limited vs. full GitHub Projects) [3]
  • Issue and pull request templates [3]
  • Comment reactions, batch issue handling [3]

CI/CD (Gitea Actions):

  • Built-in CI/CD system with YAML-based workflow syntax directly compatible with GitHub Actions [website][1][4]
  • Can reuse actions from the GitHub Marketplace (20,000+ available) [website][4]
  • Requires self-managed runners — Gitea doesn’t provide hosted runners [1]

Package registry:

  • Supports 20+ package types: Cargo, npm, PyPI, Maven, NuGet, Helm, Docker/OCI containers, RubyGems, Conda, and more [website]
  • Public and private registries on the same instance [website]

Security and access:

  • WebAuthn (hardware 2FA) [3]
  • GPG and SSH signed commits, reject unsigned commits [3]
  • Granular per-user roles per repository (code, issues, wiki independently) [3]
  • AD/LDAP integration [3]
  • OAuth2 and SAML for SSO (SAML is Enterprise-tier only on the commercial offering) [website pricing]
  • No telemetry — a checkmark in the feature table that GitHub, GitLab, and Bitbucket can’t match [3]

What it’s missing vs. GitLab:

  • No subgroups (groups within groups) — relevant for large org structures [3]
  • No in-browser merge conflict resolution — you resolve conflicts locally [3]
  • No service desk or create-issue-by-email [3]
  • No confidential issues [3]
  • Pages hosting requires third-party tooling [3]

Pricing: SaaS vs self-hosted math

Gitea self-hosted (Community Edition):

  • Software license: $0 (MIT) [website]
  • Server: $5–20/month on Hetzner, Contabo, or DigitalOcean depending on team size
  • Runners for CI: additional VPS or use existing machines

Gitea Cloud:

  • Free trial: 30 days, then paid managed hosting [website]

Gitea Enterprise:

  • $9.50–$19/user/month (1-year commitment required) [website pricing]
  • Adds SAML SSO, audit logs, Kubernetes autoscaling runners

GitHub for comparison:

  • Free: unlimited public repos, limited private features
  • Teams: $4/user/month ($480/year for 10 users)
  • Enterprise: $21/user/month ($2,520/year for 10 users)

GitLab.com for comparison:

  • Free tier (limited CI minutes)
  • Premium: $29/user/month ($3,480/year for 10 users)
  • Ultimate: ~$99/user/month

Concrete savings math:

A 10-person team on GitHub Teams: $480/year. The same team on Gitea running on a $10/month Hetzner VPS: $120/year in hosting, zero licensing. That’s roughly $360/year saved — about the cost of one month of a mid-tier SaaS subscription. Modest at 10 seats, but for a 50-person company on GitHub Enterprise the math shifts to ~$12,600/year on GitHub vs. ~$240/year self-hosted on Gitea. The gap is real.

The caveat: these numbers assume you already have someone comfortable deploying and maintaining a Linux server. If you don’t, add either a one-time setup fee (what services like upready.dev charge) or the ongoing cognitive overhead of being your own ops team.


Deployment reality check

Gitea’s install story is genuinely simpler than its competitors. The most common path is Docker Compose with a single container, optionally adding a PostgreSQL or MySQL container for production use (SQLite works for small teams and can be used out of the box). The binary-based install is equally straightforward for teams that prefer it [1][2].

What you actually need:

  • A Linux VPS with 512MB RAM minimum for small teams; 2GB+ for teams with active CI pipelines
  • Docker + docker-compose, or a Go binary and a process manager
  • A reverse proxy (Caddy or nginx) for HTTPS termination
  • A database: SQLite (built in), PostgreSQL, MySQL, or TiDB for production [website]
  • SSH access for repository cloning over SSH

What Gitea does not provide:

  • Hosted CI runners — you bring your own machines or containers to act as runners [1]. This is a meaningful operational difference from GitHub Actions’ hosted runners. On GitHub, a workflow just runs. On Gitea, you need to set up and maintain at least one runner that connects to your instance.
  • AI code review tooling — if you want pull request AI review, you’re building it yourself. One community member (SpaceTerran) published TerraScan, a Docker-based AI reviewer that integrates with Gitea Actions and calls OpenAI, Anthropic, or a local Ollama instance [5]. It works, but you’re assembling the pieces.

Realistic time estimates:

  • Technical user, Docker Compose: 30–60 minutes to a working HTTPS instance [1]
  • Non-technical founder following a written guide: 2–4 hours including domain and SSL setup
  • Never touched a Linux VPS: hire someone for a one-time deployment

One thing the XDA review [2] flags that’s worth repeating: Gitea runs on a Raspberry Pi 4B. That’s not a marketing claim — it’s a practical fact about a Go binary with a 512MB RAM floor. If you have a NAS at home or office, you can likely run Gitea directly on it. The same cannot be said of GitLab.


Pros and cons

Pros

  • Genuinely lightweight. The only major Git platform with low RAM/CPU consumption checked in its own feature comparison [3]. Runs where GitLab refuses to.
  • MIT licensed. Full rights to self-host, fork, modify, or embed in your own product. No “Fair-code” carve-outs, no commercial use restrictions [website].
  • No per-seat pricing. One VPS cost regardless of team size. Unlimited users, unlimited repositories [website].
  • GitHub Actions compatibility. Existing GitHub Actions YAML files work on Gitea Actions with minimal or no modification, and you can reuse 20,000+ actions from the GitHub Marketplace [website][4].
  • Zero telemetry. Gitea doesn’t phone home. GitHub, GitLab, and Bitbucket all do [3].
  • 20+ package registry types in the same instance — containers, npm, PyPI, Maven, Helm, and more [website].
  • AD/LDAP integration in the free tier — important for companies already on Active Directory [3].
  • 54,343 GitHub stars, active community, regular releases — this is not an abandoned project [merged profile].
  • Runs anywhere. Linux, Windows, macOS, FreeBSD, ARM, x86, Kubernetes [website][2].

Cons

  • No hosted CI runners. You manage your own runner infrastructure. On GitHub you get free minutes; on Gitea you provision and maintain the machines [1].
  • No subgroups. Organizations can’t be nested — a limitation that matters for larger companies with complex team structures [3]. GitLab handles this cleanly; Gitea does not.
  • No in-browser merge conflict resolution. Conflicts must be resolved locally and re-pushed [3]. A minor friction point that GitHub and GitLab both handle in the UI.
  • AI code review requires assembly. Tools like CodeRabbit don’t support Gitea. You build your own integration [5]. Feasible, but it’s not a one-click install.
  • SAML SSO is Enterprise-only. The community (free) tier supports LDAP and OAuth2 but not SAML — relevant if your company uses Okta or Azure AD via SAML [website pricing].
  • Audit logs are Enterprise-only. If your compliance team needs them, you’re paying $9.50–$19/user/month [website pricing].
  • Smaller third-party integration ecosystem. Jira, Slack, and other SaaS tools integrate with GitHub and GitLab via official apps. Gitea has webhooks and an API, but the polished integration catalog is thinner.
  • Limited enterprise DevOps features out of the box. Advanced dependency scanning, DAST, container scanning — things GitLab Ultimate bundles — aren’t here [1].

Who should use this / who shouldn’t

Use Gitea if:

  • You’re a founder paying $50–$300/month in GitHub or GitLab seats and those seats are for a small dev team doing straightforward code collaboration.
  • You want your source code and commit history on your own hardware — not on a vendor’s servers — for privacy, compliance, or principle.
  • You have (or can hire) someone to spend one afternoon setting up a VPS and Docker. The operational complexity is low after the initial setup.
  • You’re running a homelab, an internal tools project, or anything where cost matters more than SaaS convenience.
  • Your team already uses GitHub Actions — the YAML compatibility means your CI workflows port over.

Skip it (stay on GitHub) if:

  • Your team is 3–5 developers and GitHub’s free or Teams tier covers you. The switching cost isn’t worth the savings at small scale.
  • You depend heavily on GitHub’s ecosystem: GitHub Copilot, GitHub Advanced Security, the GitHub Marketplace, or tight integrations with third-party SaaS that only officially supports GitHub.
  • Your compliance requirements demand a vendor with a formal support contract, SLA, and SOC 2 certification — Gitea’s community edition has none of that (the commercial Gitea Enterprise offering is a separate conversation).

Skip it (stay on GitLab) if:

  • You need subgroups, service desk, confidential issues, or the full DevSecOps feature set (dependency scanning, SAST/DAST, container scanning).
  • Your team is deeply invested in GitLab CI features that don’t have direct Gitea equivalents.

Consider the Enterprise tier if:

  • You want self-hosted Gitea but your IT department requires SAML SSO and audit logs. At $9.50–$19/user/month it’s still cheaper than GitLab Premium for teams under ~20 people.

Alternatives worth considering

  • GitLab CE (self-hosted) — the most feature-complete free self-hosted option, including subgroups, merge conflict resolution, and a full DevSecOps pipeline. Trade-off: significantly higher resource requirements and operational complexity. GitLab wants 4GB RAM minimum; Gitea runs in 512MB.
  • Forgejo — a community fork of Gitea itself, created in 2022 when governance concerns arose over the Gitea company’s control of the project. Nearly identical feature set, different release cadence and governance model. Worth evaluating if open governance matters more to you than the Gitea company’s commercial backing.
  • Gogs — the original project Gitea forked from. Even lighter, but development pace is slow and the feature gap with Gitea has widened significantly since 2016. Choose Gitea over Gogs unless you have a specific reason.
  • GitHub — the default. Largest ecosystem, best third-party integrations, hosted runners, Copilot integration. Pay per seat, no code on your hardware.
  • GitLab.com — more features than GitHub in some areas (CI, container registry), comparable pricing, closed-source SaaS. The self-hosted CE version is the real competitor to Gitea, not the SaaS offering.
  • Bitbucket — historically popular, Jira-native integration. Atlassian raised prices and reduced features over the years; fewer developers choose it fresh.

The realistic decision for most teams is Gitea vs. GitLab CE vs. GitHub. Gitea if resource efficiency and simplicity matter most. GitLab CE if you need the full DevSecOps feature set and can handle the operational overhead. GitHub if you want to stay on SaaS and the bill is acceptable.


Bottom line

Gitea does one thing better than anything else in its class: it makes self-hosted Git hosting simple enough that a single developer can set it up in an afternoon and maintain it in a few hours per year. The MIT license, the low resource footprint, and the GitHub Actions compatibility are all real advantages, not marketing claims. The trade-offs are also real — no hosted runners, no subgroups, no in-browser conflict resolution, and enterprise features like SAML and audit logs sit behind a paid tier. For a small to mid-size team paying monthly GitHub or GitLab seat fees, the math is straightforward: one afternoon of setup amortizes the cost difference in the first few months. For a team with complex compliance requirements or deep GitHub ecosystem dependencies, it’s a harder case. But for founders who want their code on hardware they control and their monthly dev tooling bill to stop growing, Gitea is the most practical self-hosted option that actually ships.

If the afternoon of setup is the blocker, that’s exactly what upready.dev deploys for clients — one-time fee, done, you own the infrastructure.


Sources

  1. Jamison Johnson“Gitea Review” (jamisonjohnson.me). https://jamisonjohnson.me/blog/reviews/gitea_review/
  2. Jeff Butts, XDA Developers“Gitea is more than just a self-hosted GitHub alternative” (Oct 23, 2025). https://www.xda-developers.com/gitea-more-than-self-hosted-github-alternative/
  3. Gitea Documentation“Compared to other Git hosting” (docs.gitea.com). https://docs.gitea.com/installation/comparison
  4. Gitea Blog“Gitea Hits 40K Stars on GitHub: Celebrating Open Source DevOps Excellence” (blog.gitea.com). https://blog.gitea.com/gitea-hits-40k-stars-on-github-celebrating-open-source-devops-excellence/
  5. SpaceTerran“TerraScan: Self-Hosted AI Code Reviews for Gitea” (spaceterran.com). https://spaceterran.com/posts/terrascan-self-hosted-ai-code-review-gitea/

Primary sources:

Features

Integrations & APIs

  • Plugin / Extension System