Compares GitHub with self-managed GitLab as a full platform replacement: repositories, merge requests, issues, CI/CD and package registries in one product, what GitLab Free covers versus Premium and Ultimate, GitLab's documented GitHub importer, and the upgrade stops and architecture GitLab requires.
Compares GitHub with Gitea, the lightweight MIT-licensed Go forge: pull requests, issues, package registries and GitHub Actions-compatible CI on a single small server, Gitea's built-in GitHub migration, and commercial support from CommitGo versus GitHub Enterprise.
Compares GitHub with Forgejo, the GPL-licensed community forge governed independently with Codeberg e.V. as its non-profit home: feature overlap with GitHub, Forgejo Actions differences, LTS release support, and when Forgejo fits better than Gitea or GitLab.
Moving repositories with their issues, pull requests and other metadata from GitHub to a self-hosted Gitea using Gitea's built-in migration form and a GitHub token, plus mirroring, moving Actions workflows and re-creating secrets.
Moving GitHub repositories to Forgejo with the dump-repo and restore-repo commands, which carry issues, pull requests, releases, labels, milestones, comments and wikis, plus Forgejo's fallback to .github/workflows for Actions and re-creating secrets.
Cost by component: GitHub Team or Enterprise seats, Actions minutes and storage, or a GitHub Enterprise Server license, against servers, storage, backups, upgrades, support contracts and staff time for Gitea, Forgejo or GitLab Free and Premium.
What leaves GitHub and how: Git history by clone or mirror, the organization migrations API archive with metadata, attachments and releases that expires after seven days, Actions secrets that never export, and the API rate limits behind a bulk export.
What GitHub's own EU option, Enterprise Cloud with data residency on GHE.com, includes and leaves out, how it compares with GitHub Enterprise Server, and when a self-hosted GitLab, Gitea or Forgejo in an EU data center is the simpler answer.
For teams that publish npm, Maven, NuGet, RubyGems or container packages to GitHub Packages: what each registry type maps to in Gitea or Forgejo's built-in package registries, Pulp for multi-format repositories or Harbor for images, and what billing and token rules change.
When code moves off GitHub, issues and project boards must go somewhere: keeping them in Gitea or Forgejo's issue tracker versus moving planning to OpenProject or Plane, what Gitea's GitHub migration carries over, and how to link commits to work items afterwards.