Skip to main content

Open-source alternatives guide

Gitea vs OneDev vs Forgejo (2026)

Detailed comparison of the three leading self-hosted Git platforms. GitHub costs $4-21/user/month. These open source alternatives give you complete code.

·OSSAlt Team
Share:

Why Self-Host Your Git Platform?

GitHub Teams costs $4/user/month ($48/user/year). GitHub Enterprise is $21/user/month. For a 50-developer organization, that's $2,400-12,600/year just for code hosting.

Beyond cost, self-hosting your Git platform means your source code stays on your infrastructure — not on GitHub/Microsoft servers. For organizations with compliance requirements, classified work, or simply a preference for data sovereignty, self-hosting is the right choice.

Three projects stand out as the best options in 2026: Gitea (the established leader), Forgejo (the community-driven Gitea fork), and OneDev (the most integrated development platform).

TL;DR

  • Forgejo (5K+ stars): Best for teams prioritizing community governance, GPL licensing, and federation features. Community-driven Gitea fork with strong trajectory.
  • Gitea (53K+ stars): Best established option with widest community and most integrations. Commercial backing from Gitea Ltd.
  • OneDev (13K+ stars): Best integrated development platform. Built-in CI/CD with visual pipeline editor, code navigation, and symbol search.

Quick Comparison

FeatureGiteaForgejoOneDev
GitHub Stars53K+5K+ (new org)13K+
LicenseMITGPL-3.0MIT
GovernanceGitea Ltd (company)Non-profitCompany (OneDev)
CI/CD built-inYes (Gitea Actions)Yes (Forgejo Actions)Yes (native)
FederationNoIn developmentNo
Code navigationBasicBasicAdvanced
Symbol searchNoNoYes
Container registryYesYesYes
Resource usageLowLowMedium
Docker deploymentEasyEasyEasy

Gitea vs Forgejo: What You Need to Know

Gitea and Forgejo share a common origin. Understanding the split helps you choose:

Gitea was founded as an open source project and grew to 53K+ stars. In 2022, a company (Gitea Ltd.) took control of the project's direction, domain, and trademark. Development continued but governance shifted from pure community to company-controlled.

Forgejo was created as a response. In 2024, Forgejo formally split from Gitea (stopped synchronizing), adopted the GPL-3.0 license, and became hosted by the Codeberg non-profit. Forgejo is pursuing features Gitea isn't — particularly federation (ActivityPub), which would allow users on different Forgejo instances to interact.

Functionally, they're very similar today. The differences are:

  • License: Forgejo is GPL-3.0 (copyleft), Gitea is MIT
  • Governance: Forgejo has non-profit community governance, Gitea has company control
  • Federation: Forgejo is actively building federation, Gitea is not
  • Long-term trajectory: Different visions for what a Git forge should be

Forgejo — Best Community Choice

Forgejo is the choice if you care about open source governance, long-term community direction, and want federation capability in the future.

What Makes It Stand Out

Community governance: Forgejo is hosted by a non-profit (Codeberg e.V.) with transparent governance. No single company controls the project's direction.

GPL-3.0 license: Stronger copyleft protection than Gitea's MIT. Any modifications to Forgejo that are distributed must be open source.

Federation roadmap: Forgejo is implementing ActivityPub federation, which will allow Forgejo instances to communicate with each other and potentially with other fediverse platforms. This is a unique feature not present in Gitea.

Forgejo Actions: Compatible with Gitea Actions and largely compatible with GitHub Actions workflow syntax. Migrate GitHub Actions workflows with minimal changes.

Self-Hosting

# Docker Compose
docker run -d \
  --name=forgejo \
  -p 3000:3000 \
  -p 2222:22 \
  -v forgejo:/data \
  codeberg.org/forgejo/forgejo:latest

Or with docker-compose:

services:
  forgejo:
    image: codeberg.org/forgejo/forgejo:latest
    restart: always
    ports:
      - "3000:3000"
      - "2222:22"
    volumes:
      - forgejo:/data
  db:
    image: postgres:15
    environment:
      POSTGRES_USER: forgejo
      POSTGRES_PASSWORD: forgejo
      POSTGRES_DB: forgejo

Resource requirements: 512MB RAM minimum, 1-2GB recommended. Can run on a $4/month VPS.

Best for: Open source communities, organizations prioritizing software freedom, teams that want to migrate away from company-controlled infrastructure.

Gitea — Most Established Option

Gitea (53K+ stars) is the most widely deployed self-hosted Git platform. The large community means more tutorials, more integrations, more third-party tools with native Gitea support.

What Makes It Stand Out

Ecosystem: The largest community of any lightweight self-hosted Git platform. Most CI/CD tools, deployment platforms, and developer tools have native Gitea integration.

Gitea Actions: GitHub Actions-compatible workflow engine. Migrate many GitHub Actions workflows directly to Gitea.

Packages/Registry: Container registry (Docker), npm, Maven, PyPI, and other package registries built in.

Wiki, issues, PRs, reviews: Full code review workflow including line comments, review requests, and merge strategies.

OAuth2 provider: Use Gitea as an OAuth2 provider for other applications — unified login across your self-hosted stack.

Self-Hosting

docker run -d \
  --name=gitea \
  -p 3000:3000 \
  -p 2222:22 \
  -v gitea:/data \
  gitea/gitea:latest

Gitea can run with SQLite (for small deployments), MySQL, or PostgreSQL.

Best for: Organizations who want the widest ecosystem support and the most battle-tested lightweight Git platform.

OneDev — Best Integrated Development Platform

OneDev (13K+ stars) takes a different philosophy: instead of a lightweight Git host you integrate with other tools, it's a complete integrated development environment with built-in CI/CD, code intelligence, and issue tracking.

What Makes It Stand Out

Code navigation: OneDev indexes your code for symbol search, go-to-definition, and find-references — similar to a web-based IDE. Navigate large codebases without cloning.

Symbol search: Search for function names, class definitions, and symbols across all repositories. This is OneDev's unique killer feature.

Built-in CI/CD: YAML-based pipeline definitions with a visual editor. No need for a separate CI tool like Drone or Jenkins.

Job executors: Flexible job execution — run CI jobs on Docker, Kubernetes, SSH remotes, or inline.

Build artifacts: Store and retrieve build artifacts from within OneDev.

Issue tracking: Kanban board, milestones, iterations, and custom fields for issues.

Self-Hosting

docker run -d \
  --name onedev \
  -p 6610:6610 \
  -p 6611:6611 \
  -v /opt/onedev:/opt/onedev \
  1dev/server

OneDev runs as a single Docker container. More resources needed than Gitea (512MB-1GB minimum, 2GB recommended for code indexing).

OneDev vs Gitea for CI/CD

Gitea's Actions requires a separate runner process. OneDev's CI is fully integrated:

Gitea: Configure actions runners → write YAML → run OneDev: Write YAML in visual editor → run (runner built in)

For teams who want CI/CD without managing a separate runner infrastructure, OneDev's integrated approach is simpler.

Best for: Development teams who want an all-in-one solution — code hosting, CI/CD, and code intelligence without managing separate tools.

Migration from GitHub

All three tools support GitHub-compatible APIs for most operations. Migration typically involves:

  1. Export from GitHub: Use GitHub's export feature or gh repo clone --all
  2. Configure authentication: Set up SSH keys and access tokens
  3. Import repositories: Use the platforms' GitHub import features (all three support this)
  4. Migrate CI/CD: GitHub Actions syntax is mostly compatible — minor changes needed
  5. Update integrations: Update webhook URLs and tokens in integrated tools

Gitea and Forgejo have the most GitHub Actions compatibility. OneDev requires rewriting CI pipelines in its own format.

Cost Comparison

GitHub Annual Costs (50 Developers)

PlanPer User/MonthAnnual
Teams$4$2,400
Enterprise$21$12,600

Self-Hosted

ToolServer (Hetzner CPX21)Annual
Gitea$6.50/mo$78
Forgejo$6.50/mo$78
OneDev$10-15/mo$120-180

50-developer savings vs GitHub Teams: ~$2,322/year. vs GitHub Enterprise: ~$12,420/year.

Which One Should You Choose?

Choose Forgejo if: You care about software freedom and community governance. You want federation capability. You prefer GPL licensing.

Choose Gitea if: You want the widest ecosystem support, the largest community, and the most existing integrations.

Choose OneDev if: You want code navigation and symbol search. You want integrated CI/CD without a separate runner. You're comfortable with less GitHub compatibility in exchange for more integrated tooling.

CI/CD Integration Comparison

CI/CD integration is one of the most practically important dimensions for development teams choosing a self-hosted Git platform. The experience varies substantially across these three tools.

Gitea Actions is GitHub Actions-compatible — the same YAML syntax, the same uses: step references, and most of the same action ecosystem. You deploy a Gitea Actions runner (available as a Docker image or binary) on any machine, and pipelines trigger on push, PR, schedule, or manual dispatch. Because the syntax is compatible with GitHub Actions, teams migrating from GitHub can reuse their workflow files with minimal modification. The main gap is GitHub's hosted runner ecosystem: you must run your own runners, which means configuring runner environments (language runtimes, build tools, Docker) yourself. For teams already managing servers, this is trivial. For teams that depended on GitHub's managed runners for exotic environments, it requires more setup.

Forgejo's CI/CD story is identical to Gitea's, since Forgejo tracks Gitea releases. However, Forgejo has additional community development around Forgejo Actions with slightly different defaults and improvements that haven't landed in Gitea upstream yet. For practical purposes, treat Gitea Actions and Forgejo Actions as equivalent.

OneDev's integrated CI/CD is a different philosophy. Rather than using an external runner, OneDev's CI runs pipeline steps inside Docker containers managed by the OneDev server itself. You define pipelines using OneDev's YAML format (not GitHub Actions-compatible). The advantage is that there's nothing to deploy separately — CI is part of the OneDev instance. The disadvantage is that OneDev's CI syntax is its own dialect, which means no existing GitHub Actions workflows transfer directly. For teams starting fresh with no existing CI configurations, OneDev's integrated approach is simpler. For teams migrating workflows from GitHub, the syntax incompatibility requires rewriting pipelines.

GitHub Migration Checklist

Migrating from GitHub to a self-hosted alternative involves more than cloning repositories. A systematic approach reduces the risk of losing history, integrations, or team context.

Start with an inventory. GitHub's API can enumerate all repositories, teams, permissions, webhooks, deploy keys, and GitHub Actions workflow files. Run this inventory before beginning migration and treat it as your migration checklist.

For Gitea and Forgejo, the migration tools are built in. The admin panel includes a "GitHub Migration" wizard that takes your GitHub personal access token and imports repositories including stars, forks, issues, pull requests, milestones, labels, and wiki pages. Issues are recreated with their full comment history. This process runs in the background and typically handles a repository with hundreds of issues in minutes.

GitHub Actions workflows need audit. Actions that reference actions/checkout, actions/setup-node, actions/upload-artifact, and similar official GitHub actions will work in Gitea Actions because those actions have been mirrored or reimplemented. Custom actions from the GitHub marketplace require evaluation — some have Gitea equivalents, others need replacement.

Webhooks and integrations (Slack notifications, deployment triggers, Dependabot) require manual recreation in the new platform. Document all existing webhooks in the inventory step, then recreate them post-migration. See Best Open Source GitHub Alternatives 2026 for a full ecosystem overview, and for specific deployment guides, see How to Self-Host Forgejo 2026 and How to Self-Host Gitea 2026.


Package registries are often the overlooked requirement. Forgejo's native Packages feature supports npm, Maven, PyPI, Docker, Helm, Composer, and RubyGems registries — self-hosted package distribution alongside your code without a separate Verdaccio or Nexus instance. Gitea has the same feature. OneDev does not have a package registry. For organizations that publish internal packages alongside their code, the integrated registry can simplify the overall infrastructure picture meaningfully.

Find Your Git Platform

Browse all GitHub and GitLab alternatives on OSSAlt — compare Gitea, Forgejo, OneDev, Gitlab CE, and every other open source Git hosting platform with deployment guides and feature comparisons.

The SaaS-to-Self-Hosted Migration Guide (Free PDF)

Step-by-step: infrastructure setup, data migration, backups, and security for 15+ common SaaS replacements. Used by 300+ developers.

Join 300+ self-hosters. Unsubscribe in one click.