To install GitHub Enterprise on Google Cloud Platform, you must deploy onto a supported machine type and use a persistent standard disk or a persistent SSD.

Requirements

Before installing GitHub Enterprise on Google Cloud Platform, ensure you meet these software and hardware requirements.

Software

  • You must have a Google Cloud Platform account capable of launching Google Compute Engine (GCE) VM instances.
  • You must have a GitHub Enterprise license file. To download an existing license file or request a trial license, visit enterprise.github.com.

See these articles in the Google Cloud Platform documentation for additional information:

Most actions needed to launch your instance may be performed using either the Google Cloud Platform Console or the gcloud compute command-line tool.

Hardware

Based on your seat count, we recommend this hardware configuration:

Seats vCPUs Memory Attached Storage Root Storage
10-500 2 16 GB 100 GB 200 GB
500-3000 4 32 GB 250 GB 200 GB
3000-5000 8 64 GB 500 GB 200 GB
5000-8000 12 72 GB 750 GB 200 GB
8000-10000+ 16 128 GB 1000 GB 200 GB

These are minimum recommendations. More resources may be required depending on your usage, such as user activity and selected integrations.

Note: The root disk cannot be resized without building a new appliance. For more information, see "Increasing the root partition size."

Warning: We recommend you use webhooks to fetch repository changes for continuous integration (CI) or similar systems. Regular automatic checks, or polling, will significantly reduce the scalability of your instance.

Determining the machine type

Before launching your GitHub Enterprise instance on Google Cloud Platform, you'll need to determine the machine type that best fits the needs of your organization.

Supported Machine Types

GitHub Enterprise is supported on the following GCE machine types:

  • n1-standard-4
  • n1-standard-8
  • n1-standard-16
  • n1-standard-32
  • n1-highmem-4
  • n1-highmem-8
  • n1-highmem-16
  • n1-highmem-32
  • n1-highcpu-4
  • n1-highcpu-8
  • n1-highcpu-16
  • n1-highcpu-32

For more information, see the Google Cloud Platform machine types article.

Recommended machine types

Based on your seat count, we recommend these machine types:

Seat Range Recommended Type
10 - 500 n1-standard-4
500 - 3000 n1-standard-8
3000 - 5000 n1-highmem-8
5000 - 8000 n1-highmem-16
8000 - 10000+ n1-highmem-32

Note: You can always scale up your CPU or memory by resizing your instance. However, because resizing your CPU or memory requires downtime for your users, we recommend over-provisioning resources to account for scale.

Selecting the GitHub Enterprise image

Using the gcloud compute command-line tool, list the public GitHub Enterprise images.

gcloud compute images list --project github-enterprise-public --no-standard-images

Take note of the image name for the latest GCE image of GitHub Enterprise.

Configuring the firewall

GCE virtual machines are created as a member of a network, which has a firewall. You must configure the firewall for the network associated with the GitHub Enterprise VM to allow these ports:

Port Service Description
22 SSH Git over SSH access. Clone, fetch, and push operations to public/private repositories supported.
25 SMTP SMTP with encryption (STARTTLS) support.
80 HTTP Web application access. Note that all requests are redirected to the HTTPS port when SSL is enabled.
122 SSH Instance shell access. Note that the default SSH port (22) is dedicated to application git+ssh network traffic.
161/UDP SNMP Required for network monitoring protocol operation.
443 HTTPS Web application and Git over HTTPS access.
1194/UDP VPN Secure replication network tunnel in High Availability configuration.
8080 HTTP Plain-text web based Management Console. Not required unless SSL is disabled manually
8443 HTTPS Secure web based Management Console. Required for basic installation and configuration.
9418 Git Simple Git protocol port. Clone and fetch operations to public repositories only. Unencrypted network communication.

To create a network with firewall rules to allow these ports using gcloud compute command-line tool, run these commands:

gcloud compute networks create NETWORK-NAME --mode auto
gcloud compute firewall-rules create RULE-NAME \
--network NETWORK-NAME \
--allow tcp:22,tcp:25,tcp:80,tcp:122,udp:161,tcp:443,udp:1194,tcp:8080,tcp:8443,tcp:9418,icmp

Allocating a static IP and assigning it to the VM

If this is a production appliance, we strongly recommend reserving a static external IP address and assigning it to the GitHub Enterprise VM. Otherwise, the public IP address of the VM will not be retained after restarts.

Both primary and replica appliances should be assigned separate static IP addresses in production High Availability configurations.

Creating a GCE instance

GitHub Enterprise requires a persistent data disk separate from the root disk. Use the gcloud compute command-line tool to create a data disk, and then create an instance with that disk attached.

This example creates a 250GB persistent SSD for data and a n1-standard-8 GCE instance with that disk attached in the specified zone:

gcloud compute disks create DATA-DISK-NAME --size 250GB --type pd-ssd --zone ZONE
gcloud compute instances create INSTANCE-NAME \
--machine-type n1-standard-8 \
--image GITHUB-ENTERPRISE-IMAGE-NAME \
--disk name=DATA-DISK-NAME \
--metadata serial-port-enable=1 \
--zone ZONE \
--network NETWORK-NAME \
--image-project github-enterprise-public

Starting the appliance

  1. Once your appliance is running, copy the VM's public DNS name and paste it into a web browser.
  2. Configure the GitHub Enterprise appliance.