Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,6 @@ Use the labels in the table below to run your workflows on the corresponding mac

{% data reusables.actions.larger-runners-table %}

> [!NOTE]
> For macOS {% data variables.actions.hosted_runner %}s, the `-latest` runner label uses the macOS 12 runner image. For macOS Xlarge, the `-latest` runner label uses the macOS 13 runner image

{% endmac %}

{% ifversion repository-actions-runners %}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ topics:
- Infrastructure
---

{% ifversion ghes < 3.20 %}
>[!NOTE] {% data variables.product.prodname_enterprise_backup_service %} is currently in {% data variables.release-phases.public_preview %} and subject to change. The service is available at no additional cost and will remain free.
{% endif %}

## About the {% data variables.product.prodname_enterprise_backup_service %}

Expand All @@ -29,7 +31,9 @@ Compared to the legacy backup utilities, the {% data variables.product.prodname_
* Doesn’t require a separate host for backup software.
* Stores backups on a dedicated storage volume directly accessible by your instance.

{% ifversion ghes < 3.20 %}
>[!NOTE] {% data variables.product.prodname_enterprise_backup_service %} is currently only supported on standalone instances and high availability primary nodes. Cluster configurations and replica nodes are not yet supported.
{% endif %}

## How does the backup service differ from a High Availability replica?

Expand All @@ -47,8 +51,7 @@ The backup service is a disaster recovery solution. It captures full, timestampe

## Further reading

* [AUTOTITLE](/admin/backing-up-and-restoring-your-instance/configuring-backups-on-your-instance)
* [About {% data variables.product.prodname_enterprise_backup_utilities %}](https://github.com/github/backup-utils#readme)
* [AUTOTITLE](/admin/configuration/configuring-your-enterprise/accessing-the-administrative-shell-ssh)
* [AUTOTITLE](/admin/configuration/configuring-your-enterprise/enabling-and-scheduling-maintenance-mode)
* [AUTOTITLE](/admin/github-actions/advanced-configuration-and-troubleshooting/backing-up-and-restoring-github-enterprise-server-with-github-actions-enabled)
* [AUTOTITLE](/admin/backing-up-and-restoring-your-instance/backup-service-for-github-enterprise-server/understanding-the-backup-service)
* [AUTOTITLE](/admin/backing-up-and-restoring-your-instance/backup-service-for-github-enterprise-server/configuring-the-backup-service)
* [AUTOTITLE](/admin/backing-up-and-restoring-your-instance/backup-service-for-github-enterprise-server/restoring-from-a-backup)
* [AUTOTITLE](/admin/backing-up-and-restoring-your-instance/backup-service-for-github-enterprise-server/restoring-with-github-actions-enabled)
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
---
title: Backup from replica in high availability
shortTitle: Backup from replica
intro: 'Enable backup from a high availability replica node.'
versions:
ghes: '> 3.19'
type: how_to
topics:
- Backups
---

## Configuring backups from a replica node

For high availability, you can designate a replica node as your backup server. To minimize latency, {% data variables.product.github %} recommends picking a replica node in the same region or datacenter as your primary node.

> [!IMPORTANT]
> Backups from cache replica nodes or active geo replica nodes are not supported.
To configure your backup server, run the following commands, replacing `HOSTNAME` with the hostname of the node:

```shell
ghe-config cluster.HOSTNAME.backup-server true

ghe-config-apply
```

You can now run `ghe-backup` directly on your replica node.

> [!WARNING]
> Due to the latency between primary and replica nodes, you may lose data when backing up from a replica node.
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
title: Backup in clustering mode
shortTitle: Backup in clustering
intro: 'Enable backup from a node in cluster.'
versions:
ghes: '> 3.19'
type: how_to
topics:
- Backups
---

## Configuring backups from a cluster node

For clustering, you can designate a node as your backup server. To minimize latency, {% data variables.product.github %} recommends picking a data node (for example, a `mysql-server` node or a `git-server` node) instead of a frontend node.

> [!IMPORTANT]
> Only one node can be specified as a `backup-server` node.
1. To configure your backup server, set up a backup disk on one of the cluster nodes of your choice. See [AUTOTITLE](/admin/backing-up-and-restoring-your-instance/backup-service-for-github-enterprise-server/configuring-the-backup-service).

1. After `ghe-storage-init-backup` is executed, the `backup-server` role will be set on this cluster node. You can now run `ghe-backup` directly on this node, or use the management console to schedule backups.
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
---
title: Configuring remote archives for backups
shortTitle: Configure remote archives
intro: 'Enable a remote archive for backups through SSH.'
versions:
ghes: '> 3.19'
type: how_to
topics:
- Backups
---

If you are running {% data variables.product.prodname_ghe_server %} on a cloud platform or virtualization platform that supports disk snapshots, we recommend that you use snapshots to archive your backup disk, and recreate a new backup disk for testing, restoring, or disaster recovery purposes. However, if your infrastructure does not support disk snapshots or similar solutions, you can setup a {% data variables.product.prodname_ghe_server %} backup archive on a remote {% data variables.product.prodname_ghe_server %} appliance for data replication and restoration purposes.

## Set up a remote archive destination

Remote archives are required to be saved on a backup disk of a {% data variables.product.prodname_ghe_server %} appliance, which is used as a staging or testing {% data variables.product.prodname_ghe_server %} appliance. Follow these steps to configure remote backup archives.

1. Set up a backup disk on a remote {% data variables.product.prodname_ghe_server %} appliance. See [AUTOTITLE](/admin/backing-up-and-restoring-your-instance/backup-service-for-github-enterprise-server/configuring-the-backup-service).
1. From the production appliance, run the following command to initiate configuration and display the SSH public key that needs to be added to the remote {% data variables.product.prodname_ghe_server %} appliance:

```bash
ghe-backup-remote-add <hostname-or-ip-of-remote-appliance>
```

This command will print a public SSH key that you need to add to the remote {% data variables.product.prodname_ghe_server %} environment through the management console.
1. After the SSH key has been added to the remote {% data variables.product.prodname_ghe_server %} appliance, run the same command again to complete the configuration:

```bash
ghe-backup-remote-add <hostname-or-ip-of-remote-appliance>
```

It will display "Done: Configured remote backup archive destination host to <hostname-or-ip-of-remote-appliance>." A {% data variables.product.prodname_ghe_server %} configuration `ghe-config backup.remote-archive-destination-host` will be set.
1. After that, any successful invocation of `ghe-backup` will sync the latest backup to this remote archive destination in the background, displaying a message like "Uploading backup data to remote host <hostname-or-ip-of-remote-appliance> in background...".

### Manually sync a snapshot

To push the current snapshot immediately without taking a new backup, you can manually run: `/usr/local/share/github-backup/ghe-backup-remote-archive`.

### Limitations

{% data variables.product.prodname_ghe_server %} remote backup archives are archived via SSH and are limited by your network and I/O. We recommend using disk snapshots whenever your infrastructure allows, instead of remote archives.
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,35 @@ If you're using a dedicated block device as your backup target, you need to init
From {% data variables.product.prodname_ghe_server %} 3.17.4 onward, the script is installed in PATH so you can run it directly using: `ghe-storage-init-backup /dev/YOUR_DEVICE_NAME`.
{% endif %}


#### Detach a backup disk

> [!WARNING]
> Before detaching a backup disk, ensure that no backups or restores are currently in progress. Detaching a disk while it is in use can result in data loss or service interruption.

In case you need to detach backup disk from {% data variables.product.prodname_ghe_server %}, please use following steps

1. List block devices and unmount `/data/backup`.

```bash
sudo lsblk
sudo umount /data/backup
```

1. List logical volumes and deactivate logical volume.

```bash
sudo lvs
sudo lvchange -an <backup_VG>/<backup_LV>
```

1. Detach disk using console or CLI provided by cloud provider or hypervisor.
1. Remove mount point.

```bash
sudo rmdir /data/backup
```

#### Reusing a previously initialized disk

If the device was already initialized using `ghe-storage-init-backup`, you can reuse it without reformatting:
Expand All @@ -110,7 +139,7 @@ If the device was already initialized using `ghe-storage-init-backup`, you can r

### Configuring backup settings

After the backup target is mounted, the Backup Service page will become available in the {% data variables.enterprise.management_console %}. {% ifversion ghes > 3.19 %} If your instance is part of a clustered environment, the system will automatically detect the node that was initialized with `ghe-storage-init-backup` and treat it as the backup server. {% endif %}
After the backup target is mounted, the Backup Service page will become available in the {% data variables.enterprise.management_console %} in the "Backup" section. {% ifversion ghes > 3.19 %} If your instance is part of a clustered environment, the system will automatically detect the node that was initialized with `ghe-storage-init-backup` and treat it as the backup server. {% endif %}

>[!NOTE] The settings page won’t appear until the backup storage is mounted at `/data/backup` by completing the initialization or mount steps above.

Expand All @@ -125,36 +154,30 @@ If you're migrating from {% data variables.product.prodname_enterprise_backup_ut

Use the `--dry-run` flag to preview changes without applying them.

#### Scheduling automated backups

Once the service is configured, you can define a backup schedule.

1. In the {% data variables.enterprise.management_console %}, open the "Backups" tab from the top menu.
1. In the "Backup Schedule" section, choose a predefined schedule (e.g., Daily) or enter a custom cron expression.
1. Click **Save** to apply the changes.

The first run will be a full backup. Future runs will be incremental. If a new backup attempt starts while a previous one is still running, it may be skipped or fail. In that case, adjust the schedule to avoid overlap.

{% ifversion ghes > 3.19 %}
#### Take a backup

### Configuring backups from a replica node
Once the service is configured, you can take a backup manually using the following steps:

For high availability, you can designate a replica node as your backup server. To minimize latency, {% data variables.product.github %} recommends picking a replica node in the same region or datacenter as your primary node.

> [!IMPORTANT]
> Backups from cache replica nodes or active geo replica nodes are not supported.

To configure your backup server, run the following commands, replacing `HOSTNAME` with the hostname of the node:
1. In the {% data variables.enterprise.management_console %}, open the "Backups" tab from the top menu.
1. Click **Backup Now**.

```shell
ghe-config cluster.HOSTNAME.backup-server true
A {% data variables.product.prodname_ghe_server %} backup will be taken, and displayed in a list.

ghe-config-apply
```
{% endif %}

You can now run `ghe-backup` directly on your replica node.
#### Scheduling automated backups

> [!WARNING]
> Due to the latency between primary and replica nodes, you may lose data when backing up from a replica node.
Once the service is configured, you can define a backup schedule.

{% ifversion ghes > 3.19 %}
1. In the {% data variables.enterprise.management_console %}, open the "Settings" tab from the top menu.
1. In the "Backup" section, choose a predefined schedule (e.g., Daily) or enter a custom cron expression.
1. Click **Save settings** to apply the changes.
{% else %}
1. In the {% data variables.enterprise.management_console %}, open the "Backups" tab from the top menu.
1. In the "Backup Schedule" section, choose a predefined schedule (e.g., Daily) or enter a custom cron expression.
1. Click **Save** to apply the changes.
{% endif %}

The first run will be a full backup. Future runs will be incremental. If a new backup attempt starts while a previous one is still running, it may be skipped or fail. In that case, adjust the schedule to avoid overlap.
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ children:
- /configuring-the-backup-service
- /creating-and-monitoring-backups
- /restoring-from-a-backup
- /configuring-remote-archives-for-backups
- /backup-from-replica-in-high-availability
- /backup-in-clustering-mode
- /restoring-with-github-actions-enabled
- /backup-service-settings-reference
- /understanding-the-snapshot-file-structure
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,13 @@ redirect_from:
- /admin/overview/creating-an-enterprise-account
---

<!-- expires 2026-01-30 -->
<!-- expires 2027-01-30 -->

<!-- When this expires, check with the stakeholder for release #4079 on whether or not the content is still needed -->
<!-- If the content is no longer needed, delete this entire article and all links to it. -->
<!-- When this expires, check with the stakeholder for release #4079 on whether or not the content is still needed. See https://github.com/github/releases/issues/4079#issuecomment-3954280272 for context. If the content is no longer needed, delete this entire article and all links to it. -->

{% data reusables.enterprise.single-organizations-enterprise-migration %}

<!-- end expires 2026-01-30 -->
<!-- end expires 2027-01-30 -->

## When should I create an enterprise account?

Expand Down
2 changes: 0 additions & 2 deletions content/billing/concepts/budgets-and-alerts.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,6 @@ Budgets and alerts allow you to track spending on metered products for your ente

By setting a monthly budget, you can monitor your spending and receive notifications by email when your spending exceeds certain preset percentages of your budget threshold. This can help you stay within your budget and avoid overspending.

{% data reusables.billing.migrated-budgets %}

## Stopping usage

For license-based products such as {% data variables.product.prodname_copilot %}, {% data variables.product.prodname_AS %}, {% data variables.product.prodname_team %}, and {% data variables.product.prodname_enterprise %}, setting a budget does not prevent usage over the budget amount but does provide alerts.
Expand Down
2 changes: 0 additions & 2 deletions content/billing/concepts/product-billing/git-lfs.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,8 +125,6 @@ In this example, you would pay for 1.5 GiB of additional storage for the month o

{% data reusables.billing.default-over-quota-behavior %}

{% data reusables.billing.migrated-budgets %}

## Further reading

* [AUTOTITLE](/repositories/working-with-files/managing-large-files/about-git-large-file-storage)
Expand Down
2 changes: 0 additions & 2 deletions content/billing/concepts/product-billing/github-actions.md
Original file line number Diff line number Diff line change
Expand Up @@ -165,8 +165,6 @@ For cached storage, billing charts and reports show only the cost of usage beyon

{% data reusables.billing.default-over-quota-behavior %}

{% data reusables.billing.migrated-budgets %}

## Further reading

* [AUTOTITLE](/actions/get-started/understand-github-actions)
Expand Down
2 changes: 0 additions & 2 deletions content/billing/concepts/product-billing/github-codespaces.md
Original file line number Diff line number Diff line change
Expand Up @@ -136,8 +136,6 @@ A {% data variables.enterprise.prodname_managed_user %} cannot be the billable o

{% data reusables.billing.default-over-quota-behavior %}

{% data reusables.billing.migrated-budgets %}

{% data reusables.codespaces.exporting-changes %}

## Further reading
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,8 +111,6 @@ You can set budgets at the organization, enterprise, or cost center level. If yo

For detailed setup instructions, see [AUTOTITLE](/billing/tutorials/set-up-budgets).

{% data reusables.copilot.zero-budget-changes-link %}

## Monitoring usage

* Track your monthly usage in your IDE, in {% data variables.product.prodname_copilot_short %} settings on {% data variables.product.prodname_dotcom %}, or by downloading a usage report.
Expand Down
2 changes: 0 additions & 2 deletions content/billing/concepts/product-billing/github-models.md
Original file line number Diff line number Diff line change
Expand Up @@ -112,8 +112,6 @@ Enterprises and organizations can opt in to paid usage to access expanded model

Enterprises, organizations and personal accounts may have default budgets to limit spending. Check the budgets for your account to ensure they are appropriate for your usage needs.

{% data reusables.billing.migrated-budgets %}

For more information, see [AUTOTITLE](/billing/managing-your-billing/using-budgets-control-spending).

## Further reading
Expand Down
2 changes: 0 additions & 2 deletions content/billing/concepts/product-billing/github-packages.md
Original file line number Diff line number Diff line change
Expand Up @@ -120,8 +120,6 @@ The projected 1.6 GB of storage usage for the month would not exceed your 2 GB l

{% data reusables.billing.default-over-quota-behavior %}

{% data reusables.billing.migrated-budgets %}

## Further reading

* [AUTOTITLE](/packages/learn-github-packages/introduction-to-github-packages)
Expand Down
1 change: 1 addition & 0 deletions content/billing/get-started/introduction-to-billing.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ redirect_from:
- /billing/using-the-new-billing-platform/about-the-new-billing-platform
- /billing/using-the-new-billing-platform/getting-started-with-the-new-billing-platform
- /billing/managing-your-billing/about-the-new-billing-platform
- /billing/reference/previous-billing-platform-endpoints
topics:
- Billing
- Personal account
Expand Down
1 change: 0 additions & 1 deletion content/billing/reference/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,5 @@ children:
- /product-usage-included
- /roles-for-visual-studio
- /supported-payment-methods
- /previous-billing-platform-endpoints
contentType: reference
---
Loading
Loading