This version of GitHub Enterprise was discontinued on 2021-09-23. No patch releases will be made, even for critical security issues. For better performance, improved security, and new features, upgrade to the latest version of GitHub Enterprise. For help with the upgrade, contact GitHub Enterprise support.

System overview

GitHub Enterprise Server is your organization's private copy of GitHub contained within a virtual appliance, hosted on premises or in the cloud, that you configure and control.

Storage architecture

GitHub Enterprise Server requires two storage volumes, one mounted to the root filesystem path (/) and the other to the user filesystem path (/data/user). This architecture simplifies the upgrade, rollback, and recovery procedures by separating the running software environment from persistent application data.

The root filesystem is included in the distributed machine image. It contains the base operating system and the GitHub Enterprise Server application environment. The root filesystem should be treated as ephemeral. Any data on the root filesystem will be replaced when upgrading to future GitHub Enterprise Server releases.

The root storage volume is split into two equally-sized partitions. One of the partitions will be mounted as the root filesystem (/). The other partition is only mounted during upgrades and rollbacks of upgrades as /mnt/upgrade, to facilitate easier rollbacks if necessary. For example, if a 200GB root volume is allocated, there will be 100GB allocated to the root filesystem and 100GB reserved for the upgrades and rollbacks.

The root filesystem contains:

  • Custom certificate authority (CA) certificates (in /usr/local/share/ca-certificates)
  • Custom networking configurations
  • Custom firewall configurations
  • The replication state

The user filesystem contains user configuration and data, such as:

  • Git repositories
  • Databases
  • Search indexes
  • Content published on GitHub Pages sites
  • Large files from Git Large File Storage
  • Pre-receive hook environments

Deployment options

You can deploy GitHub Enterprise Server as a single virtual appliance, or in a high availability configuration. For more information, see "Configuring GitHub Enterprise Server for High Availability."

Some organizations with tens of thousands of developers may also benefit from GitHub Enterprise Server Clustering. For more information, see "About clustering."

Data retention and datacenter redundancy

Before using GitHub Enterprise Server in a production environment, we strongly recommend you set up backups and a disaster recovery plan. For more information, see "Configuring backups on your appliance."

GitHub Enterprise Server includes support for online and incremental backups with the GitHub Enterprise Server Backup Utilities. You can take incremental snapshots over a secure network link (the SSH administrative port) over long distances for off-site or geographically dispersed storage. You can restore snapshots over the network into a newly provisioned appliance at time of recovery in case of disaster at the primary datacenter.

In addition to network backups, both AWS (EBS) and VMware disk snapshots of the user storage volumes are supported while the appliance is offline or in maintenance mode. Regular volume snapshots can be used as a low-cost, low-complexity alternative to network backups with GitHub Enterprise Server Backup Utilities if your service level requirements allow for regular offline maintenance.

For more information, see "Configuring backups on your appliance."

Security

GitHub Enterprise Server is a virtual appliance that runs on your infrastructure and is governed by your existing information security controls, such as firewalls, IAM, monitoring, and VPNs. Using GitHub Enterprise Server can help you avoid regulatory compliance issues that arise from cloud-based solutions.

GitHub Enterprise Server also includes additional security features.