I had so much difficulty installing a GitHub Enterprise Server instance on Azure, that I decided to write how to do it in the EASIEST way. This article was written in tears and blood, using the official GitHub guide, and a lot of resources on the internet.
This article does not aim to give all aspects of the GitHub Enterprise Server installation, but only to give the minimum to get started.
⚠️ Do not follow the Azure procedure from the marketplace, I don't know if they changed anything or if it's my fault, but it didn't work for me.
If you already have a resource group, you can skip this step. If you don't, please follow the official Azure documentation.
If you want to dive into all the requirements, you can find them in the official GitHub documentation. I will only give the minimum to get started.
According to my test, even if you're only a team of 5, you will need at least Standard_E4_v3
for the VM size. I wasted a lot of time trying to install something less powerful. At first, it worked, but you won't be able to open some administration panels (which was the most frustrating part of this whole adventure).
Type $ az vm image list --all -f GitHub-Enterprise | grep '"urn":' | sort -V
, and wait ...
Choose the GES image you want to install, and copy it. For example, I chose GitHub:GitHub-Enterprise:GitHub-Enterprise:3.8.3
.
⚠️ Do not forget to create a dedicated resource group in Azure first. My resource group for this article is called "ResourceGroup1".
GitHub now tells us to type the following command and to fill in all the variables:
$ az vm create -n VM_NAME -g RESOURCE_GROUP --size VM_SIZE -l REGION --image APPLIANCE_IMAGE_NAME --storage-sku Premium_LRS
Which did not work for me that easily. I had to add the --admin-username
variable and to remove the --storage-sku
variable. This is what it looked like (gitHubenterpriseservertest
is the name of my virtual machine):
az vm create -n gitHubenterpriseservertest -g ResourceGroup1 --size Standard_E4_v3 -l eastus --image GitHub:GitHub-Enterprise:GitHub-Enterprise:3.8.3 --admin-username arthurcoudouy
Don't try to outsmart the procedure and follow methodically each port you need. If you don't open the required ports, you will face unknown errors in the future, and god, you don't want that.
As I did not want to implement any kind of security, I opened all the ports. I know, it's not the best practice, but I did not want to show you all my security skills here, I just wanted to install a GitHub Enterprise Server instance.
In theory, it looked like this:
$ az vm open-port -n VM_NAME -g RESOURCE_GROUP --port PORT_NUMBER
In practice, Azure asks you to establish some priority starting at 100. Again, as I did not want to dive into these settings, I just added 1 in priority for each port.
My list of commands looked like this (type each one of them in your terminal):
az vm open-port -n gitHubenterpriseservertest -g ResourceGroup1 --port 22 --priority 100
az vm open-port -n gitHubenterpriseservertest -g ResourceGroup1 --port 25 --priority 101
...
az vm open-port -n gitHubenterpriseservertest -g ResourceGroup1 --port 80 --priority 109
As before, the theory gives us this:
$ az vm disk attach --vm-name VM_NAME -g RESOURCE_GROUP --sku Premium_LRS --new -z SIZE_IN_GB --name ghe-data.vhd --caching ReadWrite
And the --sku Premium_LRS
did not work for me as well. My command looked like this:
az vm disk attach --vm-name gitHubenterpriseservertest -g ResourceGroup1 --new -z 150 --name ghe-data.vhd --caching ReadWrite
Check that your virtual machine is ready
We now need to wait that your virtual machine is ready through a specific command. This time the given command worked: az vm list -d -g RESOURCE_GROUP -o table
Which was for me:
az vm list -d -g ResourceGroup1 -o table
⚠️ If you don't see anything in your explorer, did you really open all the required ports?
Upload your license file and set a management console password
Set up your GitHub instance setting
Your GitHub instance will restart and you are now ready to go! Contact me if you have any questions.
Also published here.