GitLab Installation and Configuration Guide

GitLab is an open-source application primarily used to host Git repositories, with additional development-related features like issue tracking. It is designed to be hosted using your own infrastructure, and provides flexibility in deploying as an internal repository store for your development team, a public way to interface with users, or a means for contributors to host their own projects.

Prerequisites

If you are using Ubuntu version 16.04 or below, we recommend you upgrade to a more latest version since Ubuntu no longer provides support for these versions. This collection of guides will help you in upgrading your Ubuntu version.

To follow along with this tutorial, you will need:

  • A server running Ubuntu, along with a non-root user with sudo privileges and an active firewall.
  • The published GitLab hardware requirements recommend using a server with a minimum of:
    • 4 cores for your CPU
    • 4GB of RAM for memory

    Although you may be able to get by with substituting some swap space for RAM, it is not recommended.

  • A domain name pointed at your server.

Step 1 — Installing the Dependencies

Before installing GitLab, it is important to install the software that it leverages during installation and on an ongoing basis. The required software can be installed from Ubuntu’s default package repositories.

First, refresh the local package index:

Then install the dependencies by entering this command:

sudo apt install ca-certificates curl openssh-server postfix tzdata perl

You will likely have some of this software installed already. For the postfix installation, select Internet Site when prompted. On the next screen, enter your server’s domain name to configure how the system will send mail.

Step 2 — Installing GitLab

With the dependencies in place, you can install GitLab. This process leverages an installation script to configure your system with the GitLab repositories.

First, move into the /tmp directory:

Then download the installation script:

curl -LO https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh

Feel free to examine the downloaded script to ensure that you are comfortable with the actions it will take:

Once you are satisfied with the safety of the script, run the installer:

sudo bash /tmp/script.deb.sh

The script sets up your server to use the GitLab-maintained repositories. Once this is complete, install the GitLab application with apt:

sudo apt install gitlab-ce

Step 3 — Adjusting the Firewall Rules

Before you configure GitLab, ensure your firewall rules are permissive enough to allow web traffic.

View the current status of your active firewall by running:

Output:

Status: active

To ensure access for web services, allow HTTP and HTTPS traffic:

sudo ufw allow http
sudo ufw allow https
sudo ufw allow OpenSSH

Check the firewall status again:

Step 4 — Editing the GitLab Configuration File

Before using the application, update the configuration file and run a reconfiguration command. Open GitLab’s configuration file:

sudo nano /etc/gitlab/gitlab.rb

Find the external_url line and update it with your domain:

external_url 'https://your_domain'

Step 5 — Performing Initial Configuration Through the Web Interface

With GitLab running, you can perform an initial configuration of the application through the web interface.

Visit the domain name of your GitLab server in your web browser:

https://your_domain

On your first visit, you’ll be greeted with a login page. Sign in as root.

GitLab generates an initial secure password for you, stored in a file accessible as an administrative sudo user:

sudo nano /etc/gitlab/initial_root_password

Use the generated password to log in. After logging in, you’ll be taken to the GitLab dashboard.

One of the first tasks you should perform is updating your password. To do this:

  • Click on the user icon in the upper-right corner and select Edit Profile.
  • Navigate to Password in the left navigation bar.
  • Update your password and click Save password.

After saving, you’ll be logged out and prompted to log back in with your new password.

Step 6 — Restricting or Disabling Public Sign-ups

By default, anyone can sign up for an account on your GitLab instance. To adjust these settings:

  • Navigate to the Admin section by clicking the hamburger menu in the top navigation bar.
  • Click on Settings in the left navigation bar.

Disabling Sign-ups

If you wish to disable sign-ups completely, go to the Sign-up Restrictions section and deselect the Sign-up enabled checkbox. Click Save changes.

Restricting Sign-ups by Domain

If your organization provides email addresses associated with a domain, you can restrict sign-ups to those domains:

  • Select the Send confirmation email on sign-up checkbox.
  • Add your domain(s) to the Whitelisted domains for sign-ups box, one per line. Use a wildcard (*) if needed.

Click Save changes when done.

Restricting Project Creation

By default, new users can create up to 10 projects. To restrict this:

  • Go to Account and Limit Settings.
  • Set the Default projects limit to 0 to prevent new users from creating projects.

Click Save changes after updating.

Renewing Let’s Encrypt Certificates

By default, GitLab renews Let’s Encrypt certificates after midnight every fourth day. To modify this schedule:

    1. Open the GitLab configuration file:

sudo nano /etc/gitlab/gitlab.rb

    1. Find and uncomment the following lines, then set your preferred renewal schedule:

letsencrypt['auto_renew'] = true
letsencrypt['auto_renew_hour'] = "12"
letsencrypt['auto_renew_minute'] = "30"
letsencrypt['auto_renew_day_of_month'] = "*/7"

  1. Save and close the file. Changes will take effect during the next renewal cycle.

To disable auto-renewal, set letsencrypt['auto_renew'] to false.

Conclusion

You now have a working GitLab instance hosted on your own server. You can begin to import or create new projects and configure the appropriate level of access for your team. GitLab regularly adds features and updates their platform, so be sure to check their project’s homepage for improvements and notices.

Create a Free Account

Register now and get access to our Cloud Services.

Posts you might be interested in:

centron Managed Cloud Hosting in Deutschland

Dimension Reduction – IsoMap

Python
Dimension Reduction – IsoMap Content1 Introduction2 Prerequisites for Dimension Reduction3 Why Geodesic Distances Are Better for Dimension Reduction4 Dimension Reduction: Steps of the IsoMap Algorithm5 Landmark Isomap6 Drawbacks of Isomap7…
centron Managed Cloud Hosting in Deutschland

What Every ML/AI Developer Should Know About ONNX

Python
What Every ML/AI Developer Should Know About ONNX Content1 Introduction2 ONNX Overview3 Prerequisites for ML/AI Developer4 ONNX in Practice for ML/AI Developer5 Conclusion for What Every ML/AI Developer Should Know…