Forgejo
Forgejo handles lightweight software forge as a self-hosted solution.
Self-hosted Git forge, honestly reviewed. No marketing fluff, just what you get when you own your code infrastructure.
TL;DR
- What it is: Self-hosted Git forge — think GitHub, but the binary lives on your server and no corporation controls the roadmap [3][5].
- Who it’s for: Developers and technical teams who want GitHub-like functionality without GitHub’s AI surveillance, pricing surprises, or corporate drift. Also non-technical founders who need a private code repository and don’t want to pay per-seat forever.
- Cost savings: GitHub Teams runs $4/user/month; GitLab Premium on SaaS runs $29/user/month. Forgejo self-hosted is $0 in software licensing, running comfortably on a $6/month VPS [5].
- Key strength: Lightweight enough to run on a Raspberry Pi, familiar enough that GitHub users migrate in an afternoon, and governed by a democratic non-profit (Codeberg e.V.) that has no financial incentive to enshittify the product [1][3][4].
- Key weakness: 3,910 GitHub stars puts it well below GitHub or GitLab in mindshare. Federation via ActivityPub is still in progress, not shipped. It’s a soft fork of Gitea, which means it inherits Gitea’s codebase including its rough edges. Not a fit for teams that need enterprise SSO, compliance tooling, or managed CI at scale.
What is Forgejo
Forgejo is a self-hosted software forge — meaning it gives you Git repository hosting, issue tracking, pull requests, wikis, kanban boards, a package registry, and CI/CD runners, all running on infrastructure you control. The project describes itself simply: “Easy to install and low maintenance, it just does the job.” [homepage].
What makes Forgejo different from Gitea (which it forked from) is governance. In October 2022, Gitea Ltd confirmed a corporate takeover of the Gitea project [3]. A group of contributors — many of them from Codeberg — decided that a community-governed fork was the right response. By December 2022, Forgejo was announced under the umbrella of Codeberg e.V., a registered democratic non-profit [3]. The framing matters: Forgejo isn’t just a different binary, it’s a different social contract. The Codeberg e.V. general assembly reviews whether Forgejo stays aligned with its mission annually [3]. There’s no VC, no growth target, no Series B that forces a pricing page redesign.
The software is written in Go, MIT-licensed, and as of this review sits at 3,910 GitHub stars. Codeberg — the largest public Forgejo instance — already runs it at scale and migrated to Forgejo v1.21 in late 2023 [2], which makes it the most battle-tested public deployment of the software.
Why people choose it
The migration stories cluster around two distinct triggers: GitHub’s AI invasion and the search for a genuine GitHub alternative with a clean governance story.
The GitHub AI exodus. The most recent and candid account comes from a developer who moved to Forgejo in April 2026 [4]. The stated reason wasn’t pricing — it was Copilot’s behavior. Specifically, seeing GitHub Copilot rewrite pull request comments during code review was the final trigger. “Enough is enough. I have plenty of servers at my disposal, and plenty of knowledge. So why don’t I just spin up my own Git server?” The migration was a few hours of work, and the result was a setup where every part of the workflow — development, CI builds, binary uploads — runs on hardware they control [4]. The GitHub account was kept only as a stub pointing to the new forge.
The Gitea “open core” moment. For a significant cohort of self-hosters, Forgejo exists because Gitea turned open-core [2]. The December 2023 Forgejo monthly report frames it plainly: “Gitea turned Open Core this month and it articulates why Forgejo is a safe haven for admins who want to escape this trap.” If you’re an admin who self-hosted Gitea and don’t want to discover that a feature you depend on is now behind a commercial license, Forgejo is the obvious exit path.
Codeberg as proof of viability. The fact that Codeberg runs Forgejo publicly and at real scale is the credibility anchor that a pure GitHub-fork alternative wouldn’t have. It’s not vaporware — Codeberg’s migration to v1.21 went through a real performance incident in December 2023 [2], which the team fixed and wrote up transparently. That kind of public post-mortem culture is evidence of organizational health, not just software quality.
Federation (future bet). For developers who think the GitHub monoculture is the actual problem — not just the pricing — Forgejo’s ActivityPub federation roadmap is the pitch [1][3]. The idea is that separate Forgejo instances could federate: you could star a repo on another instance, follow projects, and receive notifications across forges without centralizing on one platform. As of this review, federated stars are in active development and can be tested manually [2], but this isn’t a shipped feature. It’s a directional bet worth noting if you’re choosing infrastructure for the next five years rather than the next six months.
Features
Based on the LinuxLinks review [1], the noted.lol overview [5], and the official documentation:
Core forge:
- Git repository hosting with web UI, SSH, and HTTP access [5]
- Issues, pull requests, code review, and merge requests [1]
- Wiki per repository [1]
- Kanban boards [1]
- Milestones, labels, and project management primitives [1]
Publishing and packages:
- Release hosting for binary downloads [1]
- Package registry supporting Docker, npm, PyPI, Maven, Helm, and more [1]
Access control and integrations:
- Organizations and team permissions [1]
- LDAP and OAuth2 integration [1]
- Webhooks and API [5]
- Code search [1]
CI/CD:
- Forgejo Actions — a GitHub Actions-compatible runner system [docs]
- Self-hostable runners; actions can be triggered from pull request labels [2]
- End-to-end test infrastructure for verifying deployments [2]
Federation (work in progress):
- ActivityPub support in active development [2][3]
- F3 (Forge Federation Format) for cross-forge data portability [2][3]
- Federated repository stars in review [2]
Platform breadth:
- Runs on Linux, macOS, Windows, ARM, and Raspberry Pi [5]
- Binary install or Docker [5]
- Helm chart (reached GA with version 1.0.0 in December 2023) [2]
What Forgejo does not have: built-in managed CI (you run your own runners), an integrated container registry with a hosted option, or enterprise SSO/SCIM out of the box in the community tier. If you’re comparing against GitHub Enterprise or GitLab Ultimate, you’re comparing against products with ten times the headcount building the feature set.
Pricing: SaaS vs self-hosted math
Forgejo self-hosted:
- Software license: $0 (MIT) [1][3]
- Server cost: $6–20/month depending on team size and storage needs
- Time cost: 30–90 minutes initial setup; periodic upgrades
Codeberg (the public Forgejo instance):
- Free for public repositories; donation-supported
- Not positioned as a paid service — it’s a non-profit instance
GitHub for comparison:
- Free: unlimited public repos, limited Actions minutes, 500MB packages
- Teams: $4/user/month — unlimited private repos, 2,000 CI minutes/month
- Enterprise: $21/user/month — SSO, compliance, advanced security
GitLab SaaS for comparison:
- Free: 5GB storage, 400 CI minutes/month
- Premium: $29/user/month
- Ultimate: $99/user/month
Concrete math for a 5-person technical team:
On GitHub Teams: 5 × $4 = $20/month, $240/year. On Forgejo self-hosted on a Hetzner CX22 (2 vCPU, 4GB RAM): $5.92/month, $71/year. Savings: ~$170/year — modest at 5 people, but the gap scales linearly while GitHub’s enterprise tiers add per-user fees for SSO and audit logs.
For a 20-person team on GitLab Premium: 20 × $29 = $580/month, $6,960/year. A Forgejo instance sized for 20 active developers on a decent dedicated server: $40–60/month. Annual savings: ~$6,500. That’s real money, and it comes with no per-seat pricing anxiety as you hire.
The caveat: self-hosting isn’t free labor. Someone has to run upgrades, manage backups, and handle the occasional storage issue. For a team without a sysadmin, that’s a real cost to factor in. For a team that already runs other self-hosted infrastructure, it’s marginal.
Deployment reality check
The deployment experience reported across sources is consistently described as smooth — the Docker Compose path is the standard install and it works [4][5].
What you actually need:
- A Linux VPS with 1–2GB RAM for a small team (Raspberry Pi is viable for personal use) [1][5]
- Docker and docker-compose installed
- PostgreSQL (bundled in the docker-compose stack or external)
- A domain and reverse proxy (Caddy or nginx) for HTTPS
- An SSH port (Forgejo uses 22 or a custom port like 222 for Git over SSH) [5]
The noted.lol guide [5] shows a complete working docker-compose stack. It’s short: one Forgejo container, one Postgres container, a shared network, and volume mounts for data persistence. No Kubernetes required. No external Redis required for basic usage.
Migration from GitHub: Forgejo can import repositories directly from a GitHub URL, including private repos with a token [4]. One developer described importing repositories as “as simple as putting in the URL and continuing. That’s it.” [4]. Issues, wikis, and labels can be migrated via the API or third-party migration scripts — this part is less turnkey and requires more manual work for large repositories.
What can go sideways:
- The December 2023 Codeberg migration to v1.21 hit performance issues under real load [2]. The problems were resolved, but it’s a signal that Forgejo at scale requires tuning — it’s not a set-and-forget operation for large teams.
- Forgejo Actions runner setup is a separate binary you install alongside the main instance. If you want CI, budget extra setup time.
- The Helm chart only reached GA in December 2023 [2] — if you’re deploying on Kubernetes, expect to do more configuration work than a cloud-native CI solution would require.
- Single sign-on (LDAP and OAuth2 are supported [1], but SAML and SCIM for enterprise identity providers require verification against current docs before assuming they work out of the box).
Realistic time estimate for a developer who’s deployed Docker before: 1–2 hours to a working Forgejo instance with HTTPS and SSH. For migrating an existing GitHub organization: add several hours depending on repository count and whether you care about preserving issues and PR history.
Pros and Cons
Pros
- MIT license, held by a non-profit. The Codeberg e.V. governance structure means there’s no corporate entity that can pull the rug, turn open core, or raise prices [3]. The license lets you self-host, modify, and redistribute without legal negotiation.
- Extremely lightweight. Runs comfortably on a Raspberry Pi or a $6 VPS [1][5]. This isn’t marketing — Codeberg serves a real public instance on it, and the Hetzner entry tiers are sufficient for small teams.
- GitHub-compatible enough to migrate without re-learning. The UI is deliberately familiar for GitHub users. One developer described the transition as requiring minimal adjustment [4].
- Docker Compose deployment that works. The install path is well-documented and the docker-compose stack from noted.lol [5] is production-usable with minor credential changes.
- Forgejo Actions is GitHub Actions-compatible. If your CI is already in
.github/workflows/, migrating to Forgejo requires renaming the directory to.forgejo/workflows/and pointing runners at your instance [docs]. - Package registry built in. Docker, npm, PyPI, Maven — no separate Harbor or Nexus instance needed [1].
- Transparent governance. Monthly reports, public Codeberg instance, video conferences for community members [2][3]. You can see exactly who makes decisions and why.
- Federation roadmap. If ActivityPub federation ships, Forgejo instances will interoperate — a structural alternative to platform lock-in that no commercial forge is building [2][3].
Cons
- 3,910 stars is a niche signal. Gitea has 47K+ stars, GitLab has 58K+. The community is smaller, the plugin ecosystem thinner, and the third-party integrations (Jira bridges, Slack notifications, etc.) less mature.
- Federation is not shipped. The ActivityPub work is real and in progress [2][3], but you can’t build your workflow around it today.
- Codeberg scale incident in 2023. The migration to v1.21 caused a performance-related downtime [2]. This is disclosed and fixed, but it’s a reminder that Forgejo at Codeberg scale requires tuning work that a small team won’t have capacity for.
- No managed offering. If you want Forgejo-compatible hosting without running servers yourself, Codeberg is your only real option — and it’s a donation-supported non-profit, not a commercial SLA. There’s no equivalent to GitHub’s uptime guarantee.
- Enterprise features are unclear. LDAP and OAuth2 are documented [1]; SAML SSO for Okta or Azure AD requires verifying against current docs before assuming it works. Enterprise governance tooling (audit logs, compliance reports) isn’t the project’s focus.
- Inherits Gitea’s technical debt. Forgejo is a soft fork — it tracks Gitea’s codebase. Bug fixes and architectural decisions from Gitea flow in, including ones the Forgejo team didn’t make.
- CI runner setup is separate. Unlike GitHub Actions where CI is just part of the platform, Forgejo Actions requires deploying a runner binary, registering it with the instance, and managing its lifecycle yourself.
Who should use this / who shouldn’t
Use Forgejo if:
- You’re a developer or technical team that self-hosts other infrastructure and wants Git hosting that stays free, stays open, and doesn’t surveil your code for AI training.
- You’re migrating away from GitHub specifically because of Copilot’s behavior, Microsoft’s direction, or per-seat pricing growth.
- You need a private code repository for a small team and $4–29/user/month is friction you don’t want.
- You care about the governance story — MIT license under a non-profit is a meaningful constraint that commercial forges can’t match.
- You’re already running Docker on a VPS and a few more containers is trivial.
Skip it (stay on GitHub) if:
- Your team has no one who can manage a Linux server. Forgejo requires real ops work — it’s not a SaaS.
- You depend on GitHub’s marketplace integrations (hundreds of third-party actions, security scanning products, deployment integrations) that won’t exist in a self-hosted context.
- You need enterprise SSO, SCIM provisioning, and SOC 2 compliance out of the box and don’t have time to verify whether Forgejo’s current version covers it.
- Your organization’s compliance team won’t approve self-hosted infrastructure for code repositories.
Skip it (consider GitLab CE) if:
- You want a more mature self-hosted forge with a larger enterprise feature set, built-in container registry, and more extensive documentation.
- You need built-in DevSecOps tooling (SAST, DAST, dependency scanning) — GitLab CE has more of this than Forgejo.
Skip it (consider Gitea) if:
- The Forgejo governance story doesn’t matter to you and you want slightly more commercial ecosystem support and integrations.
Alternatives worth considering
- GitHub — the incumbent. Largest ecosystem, best tooling, most integrations. Fully closed-source, $4–21/user/month, and increasingly AI-invasive [4].
- GitLab CE — the most feature-complete self-hosted alternative. MIT-ish license (EE code is proprietary), significantly more complex to operate, much larger community than Forgejo.
- Gitea — Forgejo’s upstream. Effectively the same software, different governance. If you don’t care that Gitea Ltd turned open-core, Gitea and Forgejo are functionally near-identical today [2][3].
- Codeberg — the public Forgejo instance. Free, non-profit, no self-hosting required. Reasonable choice for personal projects or small open-source work where you trust the Codeberg team.
- Soft fork route — some teams use GitHub or GitLab for public presence and Forgejo internally for private work. Running both in parallel during a migration is practical [4].
Bottom line
Forgejo is the right answer to a specific question: “What’s the GitHub alternative where I own the server, pay $0 in licensing, and don’t have to trust a corporation’s roadmap?” The MIT license and Codeberg e.V. governance give it a credibility that a corporate-backed open-core product can’t match. The software works — Codeberg runs it publicly, developers migrate to it in an afternoon, and the Docker Compose install is legitimate rather than aspirational [4][5]. The trade-offs are real: smaller community than GitLab, federation not shipped yet, no managed commercial tier if you want SLA guarantees, and CI runner setup requires separate work. But for a developer or small technical team that’s tired of GitHub’s AI creep and wants code infrastructure that stays stable and free — Forgejo is the cleanest answer available.
If self-hosting the infrastructure is the blocker, that’s exactly what upready.dev deploys for clients. One-time setup, you own the server, no recurring platform fees.
Sources
- LinuxLinks — “Forgejo - self-hosted lightweight software forge”. https://www.linuxlinks.com/forgejo-self-hosted-lightweight-software-forge/
- Forgejo Blog — “Forgejo monthly report - December 2023”. https://forgejo.org/2023-12-monthly-update/
- Forgejo Blog — “First forgejo monthly report - December 2022”. https://forgejo.org/2022-12-26-monthly-update/
- Eva Isabella Luna, blog.crystall1ne.dev — “Moving to a self-hosted Forgejo server” (April 7, 2026). https://blog.crystall1ne.dev/posts/2026/04/07/selfhosted-git.html
- noted.lol — “Forgejo - Powerful Self-Hosted Git Service”. https://noted.lol/forgejo/
Primary sources:
- Official website: https://forgejo.org
- Documentation: https://forgejo.org/docs/latest/
- Codeberg public instance: https://codeberg.org
Replaces
Related Developer Tools Tools
View all 181 →Neovim
97KThe hyperextensible Vim fork that rewards the time you invest — sub-100ms startup, modal editing, total customization, and no licensing fees.
Hoppscotch Community Edition
78KOpen-source API development ecosystem — lightweight, fast alternative to Postman with REST, GraphQL, WebSocket, and real-time API testing.
code-server
77KRun VS Code on any machine and access it through a browser — code from your iPad, Chromebook, or any device with a web browser.
Appwrite
55KOpen-source backend-as-a-service with authentication, databases, storage, functions, and messaging. Self-hosted Firebase alternative for web and mobile apps.
Gitea
54KLightweight, self-hosted Git service with code hosting, pull requests, CI/CD, package registry, and project management. GitHub alternative that runs on a Raspberry Pi.
Gogs
48KA painless, lightweight, self-hosted Git service written in Go. Minimal resource usage, easy setup, and runs on anything from a Raspberry Pi to a VPS.