Table of Contents
- Step 1: Perform basic tasks for hosting GitLab CE
- Step 2: Install required dependencies
- Step 3: Setup the GitLab APT repo and then install GitLab CE
- Step 4: Enable HTTPS access by integrating a Let’s Encrypt SSL certificate
If you are using a different system, please check our other tutorials.
How to Install GitLab Community Edition (CE) 11.x on CentOS 7
How to Install GitLab Community Edition (CE) 11.x on Debian 9
Since GitHub was acquired by Microsoft, quite a few developers have planned to migrate their own code repositories from github.com to an alternative self-hosted solution. GitLab Community Edition (CE) is the most common choice.
As a sophisticated and flexible solution, GitLab CE can be deployed using various methods, but only the officially recommended method, the Omnibus package installation, will be covered herein.
- A fresh IT Web Services Ubuntu 18.04 LTS x64 server instance with at least 4GB of memory. 8GB or more is recommended for serving up to 100 users. Say its IPv4 address is
- A sudo user.
- A domain
gitlab.example.combeing pointed towards the instance mentioned above.
Note: When deploying on your own server instance, be sure to replace all example values with actual ones.
Step 1: Perform basic tasks for hosting GitLab CE
Fire up an SSH terminal, and log in to your Ubuntu 18.04 LTS x64 server instance as a sudo user.
Add a swap partition and tweak the swappiness setting
When deploying GitLab CE 11.x on a machine with 4GB of memory, it’s required to setup a 4GB swap partition for smooth running:
sudo dd if=/dev/zero of=/swapfile count=4096 bs=1M sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab free -m
Note: If you are using a different server size, the size of the swap partition may vary.
For system performance purposes, it is recommended to configure the kernel’s swappiness setting to a low value like
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf sudo sysctl -p cat /proc/sys/vm/swappiness
The output of the
cat command will be
Setup the machine’s hostname and fully qualified domain name (FQDN)
Use the following commands to setup a hostname,
gitlab, and an FQDN,
gitlab.example.com, for the machine:
sudo hostnamectl set-hostname gitlab sudo sed -i "1 i203.0.113.1 gitlab.example.com gitlab" /etc/hosts
You can confirm the results:
hostname hostname -f
Modify firewall rules
Allow inbound SSH, HTTP and HTTPS traffic
sudo ufw allow OpenSSH sudo ufw allow http sudo ufw allow https sudo ufw enable
Update the system
sudo apt update sudo apt upgrade -y && sudo shutdown -r now
During the upgrade, you may be informed that the currently installed version of the grub configuration file has been modified locally. Since we are actually not responsible for the modification, use the UP arrow to highlight the
install the package maintainer's version option, and then press ENTER.
When the system is up and running again, log back in as the same sudo user to move on.
Step 2: Install required dependencies
Before installing GitLab CE, you need to install required dependencies:
sudo apt install -y curl openssh-server ca-certificates
Also, if you want to use Postfix to send notification messages, you need to install Postfix:
sudo apt install -y postfix
During the installation, a configuration screen may appear:
- Press TAB to highlight the
<OK>button on the first screen, and then press ENTER.
Internet Siteand press ENTER.
- For the
mail namefield, input your server’s FQDN
gitlab.example.comand press ENTER.
- If other screens appear, press ENTER to accept the default settings.
Start and enable the Postfix service:
sudo systemctl enable postfix.service sudo systemctl start postfix.service
Modify firewall rules for Postfix:
sudo ufw allow Postfix sudo ufw allow 'Postfix SMTPS' sudo ufw allow 'Postfix Submission'
Having Postfix installed, you need to configure Postfix by editing its main config file
/etc/postfix/main.cf in accordance with your actual server settings.
Note: In addition to the above instructions, you need to submit a support ticket to cancel IT Web Services’s default block on SMTP port 25.
Alternatively, if you want to use another messaging solution, just skip installing Postfix and choose to use an external SMTP server after GitLab CE has been installed.
Step 3: Setup the GitLab APT repo and then install GitLab CE
Setup the GitLab CE APT repository on your system:
cd curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
Next, install GitLab CE 11.x:
sudo EXTERNAL_URL="http://gitlab.example.com" apt install -y gitlab-ce
The installation may take a while.
Finally, point your favorite web browser to
http://gitlab.example.com, and then submit a new password as prompted to finish the installation.
From now on, use the following credentials to log in as the administrator:
Step 4: Enable HTTPS access by integrating a Let’s Encrypt SSL certificate
For now, you have successfully installed GitLab CE 11.x on your server instance, and users can already visit the site using the HTTP protocol. For security purposes, its recommended to enable HTTPS access to your GitLab server by integrating a Let’s Encrypt SSL certificate.
vi editor to open the GitLab CE config file:
sudo vi /etc/gitlab/gitlab.rb
Find the following two lines:
external_url 'http://gitlab.example.com' # letsencrypt['contact_emails'] =  # This should be an array of email addresses to add as contacts
Replace them accordingly:
external_url 'https://gitlab.example.com' letsencrypt['contact_emails'] = ['firstname.lastname@example.org']
Save and quit:
Reconfigure GitLab CE using updated settings:
sudo gitlab-ctl reconfigure
The reconfiguration may take a while.
After the reconfiguration is done, all users will be forced to use the HTTPS protocol when accessing the GitLab site.
Note: After switching from HTTP to HTTPS, legacy cookies may cause a GitLab 422 error. Clearing cookies fixes this issue.
Do you need help setting up this on your own service?
Please contact us and we’ll provide you the best possible quote!