All pages
Powered by GitBook
1 of 15

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Adding GitHub organization to Xopero ONE

This article explains how to add a GitHub organization to Xopero ONE.

Using OAuth

1

Log in to XMS, open the DevOps tab on the left side of the window, and select GitHub from the list.

2

Click the Connect button under GitHub.

3

, log in with a user account which has the required permissions for the repositories or projects to protect. If your GitHub login session is active in a different tab, the login will complete automatically.

4

Grant Xopero ONE access to the specified resources (when prompted).

5

Your GitHub organization has now been successfully added to Xopero ONE. Click Custom policy to adjust your backup policy settings, or click Run backup to execute the backup immediately using the current policy configuration.


1

Log in to XMS, open the DevOps tab on the left side of the window, and select GitHub from the list.

2

Click the advanced mode link under GitHub and GitHub Enterprise Server tiles.


1

Log in to XMS, open the DevOps tab on the left side of the window, and select GitHub from the list.

2

Click the advanced mode link under GitHub and GitHub Enterprise Server tiles.


When adding an organization, you may be prompted to grant additional permissions to the Xopero ONE application— make sure your browser allows Xopero to open pop-up windows.

Depending on your browser, you can either adjust the settings to allow pop-ups or permit the authorization window to open once.

3

Set your authentication method.

  1. In Authentication, select GitHub.

  2. For Connect using, choose GitHub App.

  3. Choose whether Xopero should automatically add new repositories to your backup.

4

Configure your repository sync and default worker. Specify hours for synchronization, or set a time interval for automatic updates.

5

Click Proceed to complete adding your GitHub organization and grant Xopero ONE access to the specified resources. In the window that pops-up, log in with a user account which has the required permissions for the repositories or projects to protect. If your GitHub login session is active in a different tab, the login will complete automatically.

6

Select repositories you want to protect and click Install & Authorize to proceed.

7

Your GitHub organization has now been successfully added to Xopero ONE. Click Custom policy to adjust your backup policy settings, or click Run backup to execute the backup immediately using the current policy configuration.

3

Set your authentication method.

  1. In Authentication, select GitHub.

  2. For Connect using, choose Login and Personal Access Token.

  3. Enter your username.

  4. Add or select PAT from the Password Manager.

  5. Choose whether Xopero should automatically add new repositories to your backup.

4

Configure your repository sync and default worker. Specify hours for synchronization, or set a time interval for automatic updates.

5

Click Proceed to complete adding your GitHub organization and grant Xopero ONE access to the specified resources.

Using GitHub App

Using Personal Access Token (PAT)

Additional browser permissions

In the window that pops-up

Process overview

Learn more about the backup process for GitHub.

Xopero ONE is designed to protect DevOps ecosystems, including GitHub.

To ensure your entire GitHub environment is reliably backed up, make sure to include all repositories along with their related metadata — the best practice is to create a backup plan for critical repositories and metadata that change daily (or even more frequently), for example, using the recommended Grandfather-Father-Son (GFS) rotation scheme.

Additionally, create a separate backup plan for unused repositories that you need to keep for future reference. This type of backup primarily serves GitHub archival purposes, and with unlimited retention, you can store your copies for as long as needed — even indefinitely.

You can also delete repositories from your GitHub account while keeping a copy in storage, which helps bypass GitHub limits.


Incremental and differential backups help save storage space. In

Xopero ONE
you can define different retention and performance settings for each type of backup (
full
,
incremental
, and
differential
). For example, our software
allows you to include only the blocks of
GitHub
data that have changed since the last backup, reducing storage usage, speeding up the process, and limiting bandwidth.

Use different types of storage to replicate backups, minimize the risk of outages or disasters, and comply with the 3-2-1 backup rule (which means having at least three copies of your data on two different storage types, with at least one copy stored in the cloud).

Xopero ONE is a multi-storage system that allows you to store your data:

General information

Backup type

If the PAT does not exist, you need to add it. The PAT should be pasted into the password field.

Adding multiple storage instances

Mozilla pop-up allowance

GitHub

Integration
Backup
Recovery
Cover
Cover
Cover

API rate limits

Learn about GitHub API rate limits.

Rate limits are enforced for security reasons to prevent a large number of requests from blocking or destabilizing the application.


GitHub limits the number of API requests that you can make within a specific time period to prevent abuse, protect against denial-of-service conditions, and maintain platform stability. Primary rate limit thresholds are determined by your authentication method, though specific resource-intensive endpoints—such as search APIs—enforce stricter request quotas.

You can learn more about GitHub API rate limits in the official GitHub documentation.


General information

Useful links and items

Single repository recovery

This article explains how to restore a single repository to a Git service or localhost.

Recovery process

1

Get into the restore view using the following method:

  1. Open the GitHub tab (DevOps > GitHub), then click the Restore button next to the organization whose backup you want to restore.

You can also use the Explore button to restore your data.

  1. Search for the repository you want to restore, and click the Restore button in the action menu of that repository.

2

Next, select the backup plan from which you want to restore data. Click View available plans and choose one of the plans from the list.

3

Choose the backup version from all the backups that have already been performed — select the desired date and click the Restore button.

4

Select the destination for the restore process. You can choose one of the assigned organizations from any Git service or any device. After selecting the repository and the metadata you want to include, click the Restore selected or Restore all button to proceed.

5

In the next aside, click Edit next to Data to restore if you need to adjust it.

6

Next, select the destination where you want to restore the data.

In Map organizations section, select the target organization to which the repository will be restored.

In Restore settings you can set a custom name for the repository that will be created during the restore process and limit the internet bandwidth.

You can enter a new repository name in one of the following formats:

7

In Device used to restore the data section, choose the device that will be responsible for performing the restoration.

8

After defining all parameters, click the Start now button to begin the restore process. When the process is complete, a new repository will be created in your organization account.


Extensive testing and analysis have shown that restoring repositories with many issues and pull requests significantly prolongs the restoration process. This delay is caused by limitations within GitHub’s infrastructure and the API used for repository restoration.

To speed up the repository access, it is recommended to exclude issues and pull requests during the initial restore. Once the repository is restored, you can perform a subsequent restore—including issues and pull requests—under a different repository name. This approach ensures quick access while still allowing full restoration of repository content.


If you enter organization/name (e.g., xsupport/test), the repository will be restored with the chosen name in the specified organization. If the entered organization does not exist, the repository will be restored to the source organization.
  • If you enter only the repository name (e.g., test) and the source organization is registered in Xopero ONE, the repository will be restored there. If the organization is not registered, the repository will be restored to your account.

    1. Select the destination device.

    2. Make sure the device where you want to restore data has the Xopero ONE agent installed and the Git client added to the PATH environment variable. The PATH variable is usually configured automatically after Git installation (a system restart may be required). If it isn’t, set it manually to the path of the git.exe file: C:\Program Files\Git\bin\git.exe

    1. Select the directory where you want the data to be restored.

    Xopero ONE allows you to select specific metadata to restore — each element can be included or excluded by toggling the switch next to it. Additionally, there is a Wiki recovery option below these settings. If your repository already exists in GitHub, you can choose to restore only the Wiki.

    Support for backing up projects (classic) has been removed. It is now available only for restoring previously backed-up projects (classic) — when restored, projects (classic) are automatically converted into projects v2.

    A. Restore to a Git organization

    During restoration to GitHub, the Use existing projects instead of creating new ones option becomes available. When restoring projects v2, this option restores the data into the existing projects rather than creating new ones.

    If the recovery destination is Azure DevOps, the Map organizations section will be replaced by Target organization and Target project settings.

    Closed or merged pull requests are recovered as closed issues.

    Restoration time

    Useful links and items

    Xopero ONE Agent
    Cross-recovery for DevOps organizations
    LFS recovery for DevOps organizations
    Wiki recovery for DevOps organizations
    Throttling prevention

    Restoring never overwrites existing repositories in the organization — if you do not choose a repository name, or if you enter the name of a repository that already exists in your organization, the restore will fail. To complete the restoration successfully, you must choose a unique repository name or select the Add suffix to repo name option so the restored repository keeps its original name with an automatically generated suffix.

    B. Restore to a device

    To restore a repository to a local device, you must have a Git client installed on that device.

    You can restore only the repository (without metadata) when restoring data to local resources.

    To configure the PATH variable, open the environment variables, select the PATH variable, and click the Edit button. Copy the path to the git.exe file and add it to the PATH variable.

    If a repository already exists in the selected folder, you can choose to overwrite the existing data.

    Recovering multiple repositories

    In this article, you will learn how to restore multiple repositories to a Git service or localhost.

    Recovery process

    1

    Get into the restore view using the following method:

    1. Open the GitHub tab (DevOps > GitHub), then click the Restore button next to the organization whose backup you want to restore.

    You can also use the Explore button to restore your data.

    1. Select the repositories you want to restore and click the Restore selected button in the top menu.

    2

    By clicking an individual repository, an aside will appear where you can select a backup plan and a backup version to restore. Click Select under your chosen backup copies to continue.

    3

    Select the destination for the restore process. You can choose one of the assigned organizations from any Git service or any device.

    4

    Next, select the destination where you want to restore the data.

    In Map organizations section, select the target organizations where the repositories will be restored.

    In the Restore settings, you can configure the following options:

    When you toggle Restoring repos with custom name switch, a window will appear allowing you to rename one or more repositories.

    5

    In Device used to restore the data section, choose the device that will be responsible for performing the restoration.

    6

    After defining all parameters, click the Start now button to begin the restore process. When the process is complete, new repositories will be created in your organization account.


    Extensive testing and analysis have shown that restoring repositories with many issues and pull requests significantly prolongs the restoration process. This delay is caused by limitations within GitHub’s infrastructure and the API used for repository restoration.

    To speed up the repository access, it is recommended to exclude issues and pull requests during the initial restore. Once the repository is restored, you can perform a subsequent restore—including issues and pull requests—under a different repository name. This approach ensures quick access while still allowing full restoration of repository content.


    Select the destination device.

  • Make sure the device where you want to restore data has the Xopero ONE agent installed and the Git client added to the PATH environment variable. The PATH variable is usually configured automatically after Git installation (a system restart may be required). If it isn’t, set it manually to the path of the git.exe file: C:\Program Files\Git\bin\git.exe

    1. Select the directory where you want the data to be restored.

    1. Additionally, in the Restore settings, you can limit bandwidth usage during the recovery process.

    Support for backing up projects (classic) has been removed. It is now available only for restoring previously backed-up projects (classic) — when restored, projects (classic) are automatically converted into projects v2.

    A. Restore to a Git organization

    During restoration to GitHub, the Use existing projects instead of creating new ones option becomes available. When restoring projects v2, this option restores the data into the existing projects rather than creating new ones.

    If the recovery destination is Azure DevOps, the Map organizations section will be replaced by Target organization and Target project settings.

    Restoring never overwrites existing repositories in the organization — if you do not choose a repository name, or if you enter the name of a repository that already exists in your organization, the restore will fail. To complete the restoration successfully, you must choose a unique repository name or select the Add suffix to repo name option so the restored repository keeps its original name with an automatically generated suffix.

    B. Restore to a device

    To restore a repository to a local device, you must have a Git client installed on that device.

    You can restore only the repository (without metadata) when restoring data to local resources.

    Closed or merged pull requests are recovered as closed issues.

    Restoration time

    Useful links and items

    Xopero ONE Agent
    Cross-recovery for DevOps organizations
    LFS recovery for DevOps organizations
    Wiki recovery for DevOps organizations
    Throttling prevention

    To configure the PATH variable, open the environment variables, select the PATH variable, and click the Edit button. Copy the path to the git.exe file and add it to the PATH variable.

    If a repository already exists in the selected folder, you can choose to overwrite the existing data.

    Required permissions

    Required permissions for integrating GitHub with Xopero ONE and protecting its resources.

    Connecting GitHub with Xopero ONE requires appropriate permissions to access and protect repositories and their associated metadata. The required permissions depend on the authorization method used, such as a GitHub App or personal access token (PAT), and on the type of data that needs to be protected.


    Account permissions

    Integrating GitHub with Xopero ONE to back up and restore repositories, projects, and associated metadata requires an account with full administrative privileges.

    Exact roles and permission levels may vary depending on individual repository settings, project configurations, or organization-level security policies. Below are examples of different roles, along with the corresponding permissions and the capabilities they provide in Xopero ONE.

    GITHUB ROLES AND PERMISSIONS
    Organization role
    Repository role
    Capabilities

    Permissions for the OAuth app

    To ensure seamless integration and correct operation, the Xopero ONE OAuth application* requires the following permissions:

    *The Xopero ONE OAuth application for GitHub is called GitProtect.


    Xopero ONE GitHub App* installation requires the following permissions:

    *The Xopero ONE GitHub App is called GitProtect.


    Personal access tokens are generated in GitHub account settings under Settings > Developer settings > Personal access tokens and can be assigned different permissions.

    Registering the Xopero ONE application and executing full repository backup and restore tasks requires a token configured with at least repo and workflow permissions.

    The following list outlines the permissions required to back up repository metadata within an organization:


    read:public_key (access keys)

  • Owner

    Permissions for the GitHub App

    Permissions for personal access tokens (PAT)

    With minimal privileges, certain metadata may not be included in the backup. Select the permissions based on the specific data you need to protect.

    If you grant the token only read permissions, you can perform backups, but restoring data requires generating a new token with write permissions.

    Useful links and items

    Default

    Full backup and restore.

    Admin

    Full backup and restore.

    Write

    Full backup and restore.

    Read

    Full backup. Restore only to the user's own account.

    Member

    Admin

    Full backup. Restore only to the user's own account.

    Maintain

    Full backup. Restore only to the user's own account.

    Write

    Full backup. Restore only to the user's own account.

    Triage

    Backup excluding collaborators. Restore only to the user's own account.

    Collaborator

    Read

    Backup excluding collaborators. Restore only to the user's own account.

    Outside collaborator

    Default

    Backup excluding collaborators. Restore only to the user's own account.

    Project (classic) recovery

    This article outlines the classic projects restoration process.

    GitHub projects (classic) are older project types that were used to create customized workflows (like tracking and prioritizing specific feature work, comprehensive roadmaps, or even release checklists) before projects v2 were introduced.


    General information

    Support for backing up projects (classic) has been removed. It is now available only for restoring previously backed-up projects (classic) — when restored, projects (classic) are automatically converted into projects v2.

    According to the official GitHub page, projects (classic) are being discontinued.

    You can only create a new project (classic) for an organization, repository, or user that already has at least one project (classic). If you are unable to create a project (classic), create a project v2 instead.

    When repositories containing projects (classic) are restored to an organization that does not support this feature, direct restoration in the original format is not possible. Instead, the system converts the restoration from projects (classic) to projects v2.

    Key considerations include:

    1. The conversion retains elements such as the project name, issue cards, and pull request cards.

    2. Certain metadata, such as columns or notes, cannot be restored due to GitHub API limitations.

    3. The system flags these conversions in the restoration summary for transparency.


    Data that cannot be converted remains in the backup copy. Future updates to the GitHub API may enable improved restoration capabilities, allowing additional metadata to be recovered.

    Useful links and items

    Protected resources

    Overview of protected GitHub resources, including repositories, wikis, and metadata secured by backup.

    GitHub protected resources define which repositories and data Xopero ONE can access, secure, and restore.


    The following list includes all GitHub resources covered by backup.

    Backup coverage

    Support for backing up projects (classic) has been removed. It is now available only for restoring previously backed-up projects (classic). When restored, projects (classic) are automatically converted to projects v2. Protected metadata for projects (classic) includes cards, issues assigned to cards, pull requests assigned to cards, columns, and notes.

    The list is presented in alphabetical order.

    ACTIONS AND PIPELINES
    BRANCH PROTECTION RULES
    COLLABORATORS
    DEPENDABOT
    ISSUES
    LABELS
    MILESTONES
    PROJECTS (V2)
    PULL REQUESTS
    REPOSITORY
    TEAMS
    RELEASES

    Integration

    Automatically delete head branches
  • Required permissions
    GitHub App
    Adding GitHub organization to Xopero ONE
    Cover
    Cover
    Cover
    Rate limits for the REST API - GitHub DocsGitHub Docs

    Recovery

    Backup

    About projects (classic) - GitHub Enterprise Server 3.15 DocsGitHub Docs
    Managing your personal access tokens - GitHub DocsGitHub Docs
    Cross-recovery for DevOps organizations
    Project (classic) recovery
    Single repository recovery
    Recovering multiple repositories
    Wiki recovery for DevOps organizations
    Recovering teams
    Cover
    Cover
    Cover
    Cover
    Cover
    Cover
    Process overview
    Protected resources
    API rate limits
    Creating a backup plan
    Cover
    Cover
    Cover
    Cover

    GitHub App

    Learn more about GitHub Apps and their features.

    GitHub can be integrated with Xopero ONE using several authorization methods, including a GitHub App, which provides a secure and scalable way to connect GitHub organizations for backup and recovery operations. With granular permissions, repository-level access, and short-lived authentication tokens, GitHub Apps help protect repositories and related metadata while supporting automated backup workflows, repository synchronization, and streamlined management across the Xopero ONE environment.


    General information

    A GitHub App is a type of integration you can build to interact with and extend GitHub's functionality. GitHub Apps can provide flexibility and reduce friction in your processes without requiring users to sign in or create a service account.

    Like OAuth apps, GitHub Apps use OAuth 2.0 and can act on a user's behalf. Unlike OAuth apps, GitHub Apps can also act independently of a user.

    The Xopero ONE GitHub App is called GitProtect.


    Advantages

    The key advantages of using the GitHub App for integration with Xopero ONE include enhanced security, better rate limit handling, and more reliable repository management.

    Security

    GitHub Apps provide enhanced control and security compared to OAuth apps. Instead of broad scopes, GitHub Apps use fine-grained permissions, giving administrators better control over what the app can access and perform:

    • Granular permissions — GitHub Apps request only the permissions they need, unlike OAuth apps, which rely on broader permission scopes.

    • Repository-specific access — users or organization owners can choose which repositories an app can access, whereas OAuth apps can access all repositories available to the authorizing user.

    • Short-lived tokens — GitHub Apps use tokens that expire quickly, reducing the risk of misuse. In contrast, OAuth app tokens remain valid until explicitly revoked.

    These features make GitHub Apps more suitable for organizations with strict security requirements, offering stronger protection against potential security risks.

    GitHub Apps that use installation access tokens are initially allowed 5,000 requests per hour. This limit can increase under specific conditions:

    • GitHub Enterprise Cloud organizations — installations associated with a GitHub Enterprise Cloud organization have a rate limit of 15,000 requests per hour.

    • Scaling by repositories and users — for installations that are not part of a GitHub Enterprise Cloud organization:

      • Organizations with more than 20 repositories receive an additional 50 requests per hour per repository.

    The above rules are designed to ensure fair usage while maintaining system stability and security.


    GitHub Apps can be installed by users on their personal accounts and by organization owners within organizations they own. Additionally, repository admins within an organization can install GitHub Apps, provided the app is limited to repositories they administer and does not request permissions that affect the organization or involve repository administration.

    However, organization owners have the capability to restrict these installations by outside collaborators who are repository admins. If organization members who are neither owners nor admins choose an organization during the app installation process, instead of directly installing the app, GitHub will notify the organization owner to request installation approval.


    After installing a GitHub App, you may also need to authorize it. Installation lets you specify which repositories the app can access and grants it permission to use certain organizational resources.

    During installation, the app displays the for review and approval. Once authorized, the app can also operate on your behalf.


    Throttling limits the number of API calls or operations within a given time window to prevent resource overuse and ensure server stability. If throttling limits are exceeded, further client requests may be temporarily restricted, which can extend backup times.

    Xopero ONE can use up to 10 additional apps to increase request limit and reduce throttling impact.


    With the upcoming release of Xopero ONE (scheduled for May 2026), we are introducing support for GitHub issue types.

    To enable this new feature, GitHub requires a manual update to your GitHub App permissions. While your existing backup plans will continue to run without interruption, this manual approval is required to unlock the new capabilities and ensure future compatibility.

    Below is a step-by-step walkthrough of the approval process.

    1

    You will get an email from GitHub containing information about the application and the organization or account requesting elevated access. To grant Xopero ONE the required permissions, click the Review permission request to accept or reject this change link.

    2

    After clicking the link, you will be redirected to GitHub, where you can review the requested permissions and approve them.


    Organizations with more than 20 users receive an additional 50 requests per hour for each user beyond 20.

  • The total rate limit is capped at 12,500 requests per hour.

  • 3

    Once the requested permissions are accepted, your environment will be ready for full backup coverage of issue type data when the next Xopero ONE release goes live.

    Rate limit

    Learn more about rate limits in .

    Access control and approval flow

    App authorization

    You can install a GitHub App without authorizing it, and you can also authorize an app without installing it.

    Throttling prevention

    You can find more information about throttling and throttling mitigation methods in section.

    Updating GitHub App permissions

    You will receive an email notification from GitHub for each of your installations and will need to manually review and approve the new issue types permission request within your GitHub account.

    Useful links and items

    requested permissions
    Throttling prevention
    Avoiding API rate limits impact
    the official GitHub documentation
    Useful links and items
    Logo
    Logo
    Logo
    Rate limits for the REST API - GitHub DocsGitHub Docs
    Logo
    Deciding when to build a GitHub App - GitHub DocsGitHub Docs
    Logo

    Creating a backup plan

    This article contains information on how to set up a GitHub backup plan.

    Backup plan setup

    1

    Login to XMS, open the Plans > Backup tab and click the Add plan button in the top bar.

    2

    Select GitHub from the list.

    3

    Select (or add) the GitHub environment you want to include in the backup process, and choose the repositories to back up.

    4

    Specify a name for the backup plan.

    5

    Select the appropriate metadata that you want to back up. Here, you can also change the default worker, which is the device directly responsible for the backup process of your repositories.

    6

    Select one of the locations assigned to your Xopero ONE instance as storage.

    7

    Customize the scheduler and specify how long your data should be retained. If needed, adjust the advanced settings to suit your needs.

    8

    If necessary, adjust the advanced settings such as encryption, error handling, or bandwidth limits to fit your requirements.

    9

    Double-check your data and click Save to create the backup plan.


    In Xopero ONE, you can select repositories based on custom properties, but these properties must be configured at the organization level in GitHub. During synchronization, Xopero ONE retrieves the property definitions from the organization and the assigned values from the repositories. After synchronization, the panel displays a list of all properties fetched from every organization on the GitHub side that was added to XMS. For the feature to work correctly, the token used for authorization must also include the read:org permission.

    Optionally, Xopero ONE allows you to protect the entire GitHub environment.

    You can have multiple workers and assign different workers to each backup plan.

    It is worth noting that the cloud worker (a cloud-installed Xopero ONE worker) allows you to perform cloud-to-cloud backups if you want to store your backups in the cloud.

    Useful links and items

    Cloud storage
    Xopero ONE worker
    Scheduler & retention

    Recovering teams

    Learn about recovering GitHub teams in Xopero ONE.

    When restoring repositories, one type of metadata that can be restored is teams. Xopero ONE ensures that teams and their associated users are reinstated.

    Before starting the restoration process, a prompt will inform you of this action—accepting the prompt will restore teams and send invitations as needed. Canceling the prompt will exclude teams from the restoration process.


    The maximum number of external collaborators that can be restored for a single repository in one operation is limited to 50. This restriction is due to GitHub API limitations, which define how many collaborators can be processed in a single batch. This constraint is independent of Xopero ONE and cannot be bypassed by the backup solution.


    Overview

    This process may include sending invitations for users to rejoin the organization.

    Limitations

    Useful links and items

    About creating GitHub Apps - GitHub DocsGitHub Docs
    Logo
    REST API endpoints for collaborators - GitHub DocsGitHub Docs
    Logo