System overview
GitHub Enterprise Server is your organization's private copy of GitHub contained within a virtual appliance, hosted on premise or in the cloud, that you configure and control.
In this article:
- Storage architecture
- Deployment options
- Data retention and datacenter redundancy
- Open source dependencies for GitHub Enterprise Server
Storage architecture
The GitHub Enterprise Server virtual appliance 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 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 "Clustering overview."
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 GitHub Enterprise Server virtual 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."
Open source dependencies for GitHub Enterprise Server
You can see a complete list of dependencies in your appliance's version of GitHub Enterprise Server, as well as each project's license, at http(s)://HOSTNAME/site/credits
.
Tarballs with a full list of dependencies and associated metadata are available on your appliance:
- For dependencies common to all platforms, at
/usr/local/share/enterprise/dependencies-<GHE version>-base.tar.gz
- For dependencies specific to a platform, at
/usr/local/share/enterprise/dependencies-<GHE version>-<platform>.tar.gz
Tarballs are also available, with a full list of dependencies and metadata, at https://enterprise.github.com/releases/<version>/download.html
.