Self-hosted GitHub alternative: own your Git forge with Forgejo

Your code is your business. The issue threads, the pull request history, the CI logs, the tagged releases — that's the institutional memory of everything you've shipped. GitHub hosts it beautifully, and it's owned by Microsoft, priced per seat, and metered by the CI minute. Private repos were the old hook; now it's Actions minutes, storage packs, and the per-user climb from Team to Enterprise. A Git forge is core infrastructure, not something you should rent by the head. Forgejo is that same forge — repos, issues, pull requests, CI, packages — running on hardware you control.
What Forgejo is
Forgejo is a self-hosted Git forge: a complete web application for hosting repositories, reviewing code, tracking issues, and running CI. It's a community-governed fork of Gitea, maintained by the non-profit behind Codeberg. The fork happened in 2022, after Gitea moved under a private company and a chunk of the community wanted a forge that answered to its contributors rather than a single owner — which is why the project is run by an association and its code is copyleft, so it can't be quietly closed up later. Today it's the software that runs Codeberg itself for tens of thousands of projects. This isn't a stripped-down demo — it's a production forge used at real scale.
It ships as a single Go binary with a small footprint, backed by SQLite, MySQL, or PostgreSQL. What GitHub meters or tiers up — CI minutes, package storage, org-wide access controls, SSO — is simply included here, because there's no plan above the one you're running. Unlimited private repos, protected branches, org-wide teams: all of it, no per-seat math. It's free software, top to bottom, and the whole thing is yours.
The features that actually matter
None of this is an add-on or an upsell — it's what ships in the one binary you install.
- Repositories and code review. Full Git hosting with pull requests, inline review comments, required approvals, merge strategies, and branch protection rules — the review workflow you already know, without a seat cap.
- Forgejo Actions. A built-in CI/CD engine compatible with GitHub Actions workflow syntax, so your `.yml` files and most actions run with minimal changes. You supply the runners, so there are no metered minutes.
- Built-in package registry. Publish and pull from one place across dozens of ecosystems — Container/OCI images, npm, PyPI, Maven, NuGet, Cargo, RubyGems, Composer, Go, Helm and more. On GitHub this is Packages, with its own storage bills.
- Organizations and teams. Group repos under orgs with fine-grained, per-team permissions and access control — the org-wide control GitHub layers into its paid tiers.
- Issues, labels, and project boards. Issues with labels, milestones, and assignees, plus kanban-style project boards to plan work without reaching for a second tool.
- Mirroring and migration. Pull and push mirrors keep repos in sync with anywhere, and the migration tool imports repositories, issues, and pull requests straight from GitHub, GitLab, or Gitea.
- Releases, wikis, webhooks, and LFS. Tagged releases with binary attachments, a wiki per repo, outbound webhooks for automation, and Git LFS for large files — the full supporting cast.
- Real authentication. Two-factor auth, an OAuth2 provider, and LDAP and OAuth login, so Forgejo slots into whatever identity system you already run.
Why self-host it instead of the hosted version
Your source stays yours. Code, issues, secrets, and CI logs are the crown jewels of a software team. Self-hosted, they live on your disk and pass through no one else's telemetry, training pipeline, or terms-of-service update.
The cost doesn't scale per seat. GitHub bills by the user and meters CI by the minute, so onboarding people and running more builds both push the invoice up. Seat pricing quietly taxes the exact thing you want more of — people building. Forgejo is one server hosting one forge: add the tenth developer, the fiftieth, the whole contractor team, and the bill doesn't move. Runners cost only the compute you give them.
You control the whole environment. Your domain, your branding, your authentication, your retention and backup policy, your update cadence. You decide when to upgrade and what to switch on — audit logs, single sign-on, mirror schedules — instead of waiting for a capability to reach the tier you happen to be paying for. Nothing changes under you because a vendor shipped a new pricing tier or deprecated a feature you depended on.
Who it's for
Software teams and agencies who want GitHub's workflow — pull requests, CI, packages — without per-seat pricing that punishes growth, and without handing their private code to a third party.
Open-source maintainers and communities who want a forge they govern, on their own domain, running community-run copyleft software rather than a proprietary platform.
Homelabbers and solo developers who keep dotfiles, side projects, and infrastructure-as-code in Git and would rather run one tidy binary than trust it all to a free tier that can change any time.
The honest setup notes
Running Forgejo yourself is real infrastructure, and we won't pretend otherwise. You'll want a proper database — SQLite is fine to kick the tyres, but PostgreSQL is what you want under a busy team. You own the backups: the database plus the repository data and LFS objects on disk, tested by actually restoring them, not just scheduled and forgotten. Updates land regularly and need applying, with an eye on the release notes. Forgejo Actions needs at least one runner registered and maintained before CI does anything. And outbound email means wiring up SMTP so notifications, password resets, and mentions actually arrive.
None of it is exotic, but it's a standing chore — and a forge that quietly stops taking backups is a forge you'll regret. Or let us run it. On Caliber Node you get the whole application — managed, patched, and backed up — with real logs and SFTP access, and none of the babysitting.
Deploy it in one click
Rolling your own means a server, a database, a reverse proxy with TLS, a runner for Actions, an SMTP relay, and a backup job you actually verify — an afternoon of setup and a permanent maintenance line item. Or you deploy Forgejo in one click on Caliber Node and skip straight to the part that matters: pushing code.
We handle the provisioning, the certificate, the database, and the backups. You get a running forge on your own subdomain in a few minutes, with logs you can read and SFTP into the files whenever you want. It's your instance and your data — we just keep the lights on and the updates flowing so you don't have to.
First run
- Deploy the app from the Caliber Node catalog and open your new Forgejo URL once it's live.
- Create the admin account — the first user you register becomes the instance administrator.
- Make your first repository, then push an existing project to it using the `git remote add` command Forgejo shows you.
- Open a pull request: push a branch, click Compare & pull request, and try the review view on your own code.
- Add a runner and a workflow file to watch Forgejo Actions run your first build — or invite a teammate and hand them a repo.
That's a working forge, hosting real code, in the time it takes to grab a coffee.
The bigger picture
Where your code lives is not a small decision. It's the one system a software team can't afford to lose and can't afford to have quietly mined, re-priced, or locked in. Owning your Git forge means the history, the reviews, the automation, and the releases answer to you — not to a roadmap set three tiers up. Forgejo makes that ownership genuinely practical: a fast, complete, community-run forge with nothing important behind a paywall.
Deploy Forgejo in a few minutes →
Or browse the full app catalog to see what else you can take back.
One-click self-hosted apps, managed for you — real logs, SFTP, and your data always exportable. Never a black box.