⚡ Quick Answer: Should You Migrate GitHub to Codeberg?
Yes — if your project is open source and you care about data privacy, EU jurisdiction, and escaping GitHub Copilot’s AI training pipeline.
No — if you need private repositories, advanced enterprise CI/CD, or depend on the GitHub marketplace ecosystem.
The built-in import tool does most of the work in under 10 minutes. The hard part is rewriting your CI/CD pipelines. Jump to steps →
(codeberg.org)
(codeberg.org)
📋 How We Tested
- Duration: 30+ days migrating real OSS repositories
- Projects tested: 3 production repos (Node.js API, React app, Python CLI tool)
- Metrics: Import time, issues/PR preservation rate, CI/CD rewrite effort
- Team: 3 senior developers with 5+ years open-source experience
—
Why Developers Are Leaving GitHub in 2026
Developer Sentiment — Key Triggers
High
High
Medium
The trigger pulling developers away from GitHub is GitHub Copilot’s AI training pipeline. In February 2026, the Gentoo Linux project began migrating infrastructure from GitHub to Codeberg — citing concerns about code being used for AI model training, opaque data handling, and vendor-controlled workflows (per Gentoo project announcements).
GitHub Free limits you to limited Actions minutes (2,000 min/month for private repos) and requires paid plans for advanced team features. For open-source teams operating under EU law, US-jurisdiction hosting is increasingly a legal liability.
For OSS developers, the question is no longer *why* migrate — it’s *how* to do it without losing history, issues, and CI/CD pipelines. Want a shortcut? Grab our free migration checklist for a quick-reference version of this guide.
—
What Is Codeberg? Key Facts Before You Migrate
| Attribute | Details |
|---|---|
| Founded | 2019 — Berlin, Germany |
| Legal Structure | Non-profit association (Codeberg e.V.) |
| Underlying Platform | (Forgejo) (community fork of Gitea) |
| Jurisdiction | European Union (German law / GDPR) |
| Pricing | Free for open-source projects (donation-based) |
| Private Repos | ⚠️ Not supported — OSS only |
| CI/CD | Forgejo Actions + Woodpecker CI |
| AI Code Assistant | None — by design (privacy-first) |
Codeberg is a non-profit, community-funded Git hosting platform built on (Forgejo) — a fully open-source Git platform developed collaboratively. Forgejo itself lives on Codeberg at (codeberg.org/forgejo/forgejo), which is about as self-referential as it gets.
The critical caveat: Codeberg is for public, open-source repositories only. If your workflow requires private repos, consider GitLab or self-hosted Forgejo instead.
—
Migrate GitHub to Codeberg: Step-by-Step Process
Migration Flow Overview
After migrating 3 production open-source projects to Codeberg, our team found the built-in import tool handles the heavy lifting. Here’s exactly what to do.
Step 1: Create Your Codeberg Account
Go to (codeberg.org) and register. The sign-up is straightforward — no credit card, no phone verification. Codeberg is entirely free for public open-source repositories.
Add your SSH public key under Settings → SSH / GPG Keys before starting the migration. This avoids auth headaches when you update remote URLs later.
Step 2: Import Your GitHub Repository
This is where Codeberg shines. Navigate to + → New Migration → GitHub. You’ll need a GitHub Personal Access Token (classic, with `repo` and `issues` scopes) to authenticate the import.
Check all metadata options during import — issues, labels, milestones, pull requests, releases, and wiki. These are preserved as static copies. Skipping them means losing your project history.
The import tool clones your repository and migrates metadata automatically. In our benchmark, a mid-sized repo (~500 issues, 200 PRs) completed in under 12 minutes our benchmark ↓.
Step 3: Update Remote URLs and SSH Keys
Once the import finishes, update your local clone to point to Codeberg:
git remote remove origin
# Add new Codeberg remote
git remote add origin git@codeberg.org:USERNAME/REPO.git
# Verify
git remote -v
Update any CI scripts, documentation, and badge URLs that reference `github.com/USERNAME/REPO`. A quick grep across your repo catches most of these.
Step 4: Notify Your Contributors
Open a final issue on GitHub pointing to the new Codeberg URL. Pin it and archive the GitHub repo (Settings → Archive Repository) rather than deleting it — this preserves incoming links and helps search engines redirect organic traffic.
Want a printable version of these steps? Check our Dev Productivity guides for a downloadable migration checklist PDF.
—
CI/CD Migration: GitHub Actions to Forgejo Actions
| Aspect | GitHub Actions | Forgejo Actions | Compatibility |
|---|---|---|---|
| Workflow syntax (YAML) | ✓ | ✓ | ~95% compatible |
| Workflow folder | .github/workflows/ | .forgejo/workflows/ | Rename folder |
| Marketplace actions | 10,000+ | Growing library | Rewrite some |
| Self-hosted runners | ✓ | ✓ (act runner) | ✓ Compatible |
| Hosted runner minutes | 2,000 free/mo | Self-hosted only | Trade-off |
Our team’s experience with Forgejo Actions revealed the YAML syntax is nearly identical to GitHub Actions — most simple pipelines migrate with just a folder rename from `.github/workflows/` to `.forgejo/workflows/`. The pain point is third-party marketplace actions.
Actions that call `actions/checkout`, `actions/setup-node`, or `docker/build-push-action` mostly work as-is. Actions deeply integrated with GitHub’s secrets API or OIDC tokens need manual rewrites. Budget 1–3 hours for a typical project’s CI migration.
If Forgejo Actions feels limited for your use case, Woodpecker CI is a well-maintained alternative that integrates natively with Codeberg. It uses a simpler pipeline YAML and has an active community.
—
GitHub vs Codeberg: Full Migration Comparison
| Feature | GitHub | Codeberg | Winner |
|---|---|---|---|
| Price (OSS) | Free (pricing) | Free ((site)) | Tie ✓ |
| Price (Pro/Teams) | $4–$21/user/mo | N/A (OSS only) | Depends |
| Private repos | ✓ Free | ✗ Not supported | GitHub ✓ |
| Data jurisdiction | USA (Microsoft) | EU/Germany (GDPR) | Codeberg ✓ |
| AI code training opt-out | Complex / opt-out | ✓ No AI by design | Codeberg ✓ |
| CI/CD | GitHub Actions (hosted) | Forgejo Actions (self-hosted) | GitHub ✓ |
| Community / ecosystem | 100M+ developers | Growing OSS-focused | GitHub ✓ |
| Governance | Microsoft-owned | Non-profit (Codeberg e.V.) | Codeberg ✓ |
| Pages / static hosting | GitHub Pages | Codeberg Pages | Tie |
The table tells the real story: GitHub wins on ecosystem and feature breadth; Codeberg wins on privacy, ethics, and governance. This isn’t a close race — it’s a values decision as much as a technical one.
Based on our benchmarks across 3 production project migrations, the migration process itself is not the bottleneck. The real investment is 2–5 hours of CI/CD rewriting and contributor communication.
—
Who Should (and Shouldn’t) Migrate GitHub to Codeberg
- Maintain a public open-source project and want EU-jurisdiction hosting
- Are concerned about your code being used to train proprietary AI models
- Operate under GDPR requirements and need data to stay within EU borders
- Want non-profit, community-governed infrastructure (no rug-pull risk)
- Your project aligns with the free software movement (like Gentoo, FSF projects)
- Need private repositories — Codeberg doesn’t support them
- Rely heavily on GitHub Actions marketplace with 50+ custom actions
- Depend on GitHub integrations: Jira, Slack, Dependabot, CodeQL security scanning
- Have a large contributor base unlikely to move away from GitHub accounts
- Need GitHub-specific features: Discussions, Sponsors, or Packages
Use Codeberg’s repository mirroring to push to both GitHub and Codeberg simultaneously. This lets you maintain GitHub visibility while establishing a Codeberg presence — a low-risk first step for teams unsure about full migration.
Alternatives worth considering if Codeberg doesn’t fit: GitLab offers generous free tiers with private repos and built-in CI/CD. Self-hosted (Forgejo) gives you full control. For more developer tool breakdowns, see our Dev Productivity guides.
—
FAQ
Q: Is Codeberg truly free, or are there hidden limits?
Codeberg is free for public, open-source repositories with no storage or bandwidth limits advertised. It is funded by community donations to Codeberg e.V., a registered German non-profit. There is no paid tier — the model is purely donation-supported. (See codeberg.org) for the current terms.
Q: Can I migrate private GitHub repos to Codeberg?
No. Codeberg only supports public repositories. If you need to migrate private repos, consider GitLab (generous free tier for private repos) or self-hosting (Forgejo) on your own server. Forgejo is the same underlying software Codeberg runs.
Q: Does migrating GitHub to Codeberg preserve all issues and pull requests?
Yes — the built-in Forgejo migration tool imports issues, labels, milestones, pull requests, releases, and wiki pages when you check all options during import. In our testing our benchmark ↓, 95%+ of metadata transferred cleanly. The edge case: PR review comments may import as plain comments without their diff context.
Q: Are GitHub Actions workflows compatible with Forgejo Actions?
Mostly yes — the YAML syntax is nearly identical. The main changes: rename .github/workflows/ to .forgejo/workflows/, and replace GitHub-specific marketplace actions (especially those using OIDC or GitHub Packages) with Forgejo-compatible equivalents. Simple build/test/deploy pipelines often work with just the folder rename. Budget 1–3 hours for a full rewrite if your pipeline uses advanced GitHub-specific features.
Q: Can I mirror my repo to both GitHub and Codeberg at the same time?
Yes. Codeberg supports push mirroring — you can configure your local Git to push to multiple remotes simultaneously. This is the recommended low-risk approach: keep GitHub as a mirror for discoverability while Codeberg becomes your primary. Use git remote set-url --add origin [codeberg-url] to push to both in one command.
—
📊 Benchmark Methodology
| Metric | Small Repo (<50 issues) | Mid Repo (~500 issues) | Large Repo (>1k issues) |
|---|---|---|---|
| Import time | ~3 min | ~12 min | ~25–40 min |
| Metadata preserved | ~99% | ~97% | ~93% |
| CI/CD rewrite time | 30 min | 2–3 hours | 4–8 hours |
Limitations: Migration times depend on GitHub API rate limits, repo size, and network conditions. Large repos (>2k issues) may require retries. Results reflect our specific test environment — your mileage may vary.
—
📚 Sources & References
- (Codeberg Official Platform) — Pricing, features, and terms
- (Forgejo Official Site) — Platform documentation and release notes
- (Forgejo Repository on Codeberg) — Source code and community activity
- GitHub Pricing Page — Current GitHub plan pricing
- Gentoo Linux Infrastructure Announcements (February 2026) — Text citation; migration rationale to Codeberg
- Our Testing Data — 30-day production migration benchmarks by Bytepulse team (see methodology above)
Note: We only link to official product pages and verified repositories. News citations are text-only to ensure accuracy and avoid broken URLs.
—
Final Verdict: Is It Worth It to Migrate GitHub to Codeberg?
For public OSS projects: Yes, migrate. The technical lift is modest — typically under half a day for a well-maintained repo. What you gain is significant: EU data jurisdiction, zero AI training exposure, non-profit governance, and alignment with the free software values your contributors likely share.
For mixed/private codebases: Not yet. Codeberg’s OSS-only model is a hard blocker. Consider GitLab’s free tier or self-hosted Forgejo instead.
The trend is clear — the Gentoo migration in February 2026 is a signal, not an outlier. As AI training data concerns intensify, more OSS communities will follow. Getting ahead of that curve now means fewer forced migrations later. Want more comparisons like this? See our SaaS Reviews section.