Forgejo is pretty close. Its runners are largely compatible with GH’s, and its issues, labels, tags, releases, wikis, packages, branch protection, secrets/envs, signing keys, repo permissions, etc. are all largely identical. I maintain a lot of mirrors and while none of my repos are particularly complex, I haven’t ever lost anything in a migration from GitHub to Forgejo.