Icon of Gitea Mirror app on Umbrel App Store

Gitea Mirror

Mirror your GitHub repositories to a Gitea instance automatically

RayLabs HQ

Open App Store on your umbrelOS device to install this app
Screenshot 1 of Gitea Mirror app on Umbrel App Store
Screenshot 2 of Gitea Mirror app on Umbrel App Store
Screenshot 3 of Gitea Mirror app on Umbrel App Store
About this app

Gitea Mirror automatically mirrors your GitHub repositories to a self-hosted Gitea instance. It supports mirroring public and private repositories, organizations, starred repos, issues, wikis, and pull requests.

Configure your GitHub and Gitea credentials through the web interface to get started. The app will periodically sync your repositories based on your configured schedule.

Key features include:

  • Mirror repositories from GitHub to Gitea
  • Support for organizations and starred repositories
  • Issue and wiki mirroring
  • Configurable sync intervals and scheduling
  • Repository cleanup and orphan management
  • Header-based authentication for reverse proxy SSO

Connecting to Gitea on Umbrel: If you have the Gitea app installed on your Umbrel, use http://gitea_server_1:8085 as the Gitea URL in the mirror settings.

The Gitea Access Token should have the following permissions:

  • write:repository
  • read:user
  • write:organization (optional)
What's new
Version 3.12.56 days ago

🐛 Bug Fixes

  • Gracefully handle SAML-protected organizations during GitHub import

Full release notes can be found at https://github.com/raylabshq/gitea-mirror

Version 3.12.4last week

🐛 Bug Fixes

  • Fixed fork owner namespace collisions when using preserve-mode mirroring

Full release notes can be found at https://github.com/raylabshq/gitea-mirror

Version 3.12.2last week

✨ New Features

  • Selective Starred Repository Mirroring: a new toggle lets you import starred repos for visibility without automatically mirroring all of them — useful if you have hundreds of starred repos
  • When the Auto-Mirror Starred toggle is disabled, starred repos appear in the dashboard but won't sync unless you manually trigger them

Full release notes can be found at https://github.com/raylabshq/gitea-mirror

Version 3.11.0last week

✨ New Features

  • Smart Force-Push Protection (Beta): detect and protect against destructive force-pushes on GitHub before they overwrite your Gitea mirrors
  • New backup strategies configurable via Settings → GitHub Configuration → Destructive Update Protection: Disabled, Always Backup, Smart (default), and Block & Approve
  • Smart mode compares branch SHAs before each sync and only creates backups when force-pushes are actually detected
  • Block & Approve strategy shows an amber badge on affected repositories with Approve/Dismiss actions
  • New pending-approval status for repositories blocked by the Block & Approve strategy
  • Optional target organization field when adding a single repository to mirror

Full release notes can be found at https://github.com/raylabshq/gitea-mirror

Version 3.9.52 weeks ago

🛡️ Improvements

  • Pre-sync snapshot protection to prevent data loss during mirror rewrites
  • Disabled repositories are now excluded from cleanup while skipping new imports
  • Clearer error guidance shown when an invalid origin is detected during authentication

Full release notes can be found at https://github.com/raylabshq/gitea-mirror

Version 3.9.42 weeks ago

✨ New Features

  • Allow starred repos to be mirrored preserving structure
  • Admin CLI password reset command
  • Implement incremental issue and PR metadata sync

🐛 Bug Fixes

  • ensure correct open/closed status when mirroring
  • repo descriptions and toast no longer overlap

🔒 Security

  • enforce session-derived user identity on API routes

🔧 Improvements

  • Support release limits above 100
  • Mirror sync status and token-rotation troubleshooting clarified
  • Added optional external Gitea URL for UI links

Full release notes can be found at https://github.com/raylabshq/gitea-mirror

Information