Move to Forgejo.
Your history, issues, and pull requests come with you. Plan the import, move CI deliberately, and keep an exit door open.
-
Create your account and instance
Create a Fjord Account, then deploy a Forgejo instance: name it, pick a region, pick a plan. It comes up on a subdomain with TLS in a few minutes. Most migrating teams pick Team for private repos, backups, and dedicated runners.
-
Import your repositories
Forgejo's built-in migrator can pull from GitHub and GitLab over their APIs, not just git history but the metadata around it: issues, pull or merge requests, labels, milestones, releases, and wiki where the source supports it. Generate a source token with read access to the repositories you are importing, point the migration at the source URL, and let it run.
-
Repoint your remotes
Update each clone's origin to the new instance, then push to confirm. Branches, tags, and full history are already there from the import, so this just tells your local clone where home is now.
git remote set-url origin https://<yourname>.fjord.host/<org>/<repo>.git
-
Move CI
Forgejo Actions uses a workflow format close to GitHub Actions. GitLab CI usually needs a more explicit rewrite from stages, rules, caches, and protected variables into Forgejo workflows and secrets. Team and Pro can add dedicated, unmetered runners, so CI runs on capacity that is yours. Confirm a green run before you cut over.
-
Cut over
Update anything that points at the old remote: deploy keys, webhooks, badge URLs, bookmarks. Keep the old repositories read-only for a grace period if you like; nothing forces a hard switch. When you are confident, archive them.
Source paths
A source-specific walkthrough for what moves, what needs manual steps, and why teams make the move.
GitHub to Forgejo
- Pick the repo or organization subset to import.
- Use a GitHub token that can read source repositories and metadata. Private repos need classic `repo` scope or a fine-grained token with equivalent read access.
- Validate history, branches, tags, issues, pull requests, labels, milestones, releases, and wiki pages.
- Recreate GitHub-only items such as project boards, Discussions, code scanning, Dependabot, environment rules, and required checks.
GitLab to Forgejo
- Confirm whether the source is GitLab.com or self-managed GitLab.
- Use a GitLab access token with repository and API read access for the projects being imported.
- Validate history, branches, tags, issues, merge requests, labels, milestones, releases, and wiki pages where available.
- Review GitLab-only items such as epics, boards, snippets, approval rules, protected variables, registries, and group-level settings.
Moving your CI
- GitHub Actions ports to Forgejo Actions with small edits; GitLab CI is a deliberate rewrite.
- Secret values never migrate from any source. Re-enter repository and org secrets on the new forge.
- Team and Pro add dedicated, unmetered runners, so CI runs on capacity that is yours.
- Port one representative pipeline, confirm a green run, then move the rest before cutover.
Import expectations
Usually imported
Git history, branches, tags, repository metadata, issues, pull or merge requests, labels, milestones, releases, and wiki content where the source API exposes it.
Plan manually
CI secrets, runner labels, branch protection, required checks, deploy keys, webhooks, OAuth apps, package registries, project boards, Discussions, GitLab epics, snippets, and static-site publishing.
Done-with-you migration help
Starter is self-serve. Team and Pro migration assistance is a pilot, handled case by case while we finalize scope, credential handling, and pricing. Team can request a planning call, source inventory review, checklist review, and CI cutover advice. Pro can request the same plus a written migration runbook and deeper CI review. Hands-on import execution is deferred until the support process and access controls are formalized.
And if you ever leave us
The same openness that lets you come in lets you go out. Your data exports in the upstream
Forgejo format any time, per-repository or as a full forgejo dump. No lock-in is the point, not a footnote.
