Hometutorials
configuring gitlab scaleway elements database

Jump toUpdate content

Setting up GitLab on Cost-Optimized Instances with a Managed Database for PostgreSQL

Published on 08 November 2019
  • GitLab
  • PostgreSQL-database
  • -
  • storage
  • -
  • managed-databases
  • -
  • postgresql-and-mysql
  • -
  • develop-and-test

GitLab is an open-core Git repository manager that provides a wiki, issue tracking and CI/CD pipeline features. Open-core means that the core functionalities of the software are released under an open-source license with additional optional modules. Many large technology companies use this tool to manage their software development life cycle. It was initially developed in Ruby and currently also uses Go and Vue.js as part of its technology stack. Scaleway Cost-Optimized Instances provide a reliabale and performant solution to host your GitLab Instance with a Managed Database for PostgreSQL.

Tip:

We recommend you follow this tutorial using a Cost-Optimized Instance.

Security & Identity (IAM):

You may need certain IAM permissions to carry out some actions described on this page. This means:

  • you are the Owner of the Scaleway Organization in which the actions will be carried out, or
  • you are an IAM user of the Organization, with a policy granting you the necessary permission sets
Requirements:
  • You have an account and are logged into the Scaleway console
  • You have configured your SSH Key
  • You have an Instance running Ubuntu Jammy Jellyfish (22.04 LTS)
  • You have a domain or subdomain configured to point to the IP address of your Instance
  • You have enabled the SMTP ports to send emails from your Instance

Installing GitLab

  1. Connect to your Instance using SSH

    ssh root@<your_instance_ip>
  2. Update the apt packet cache and upgrade the software already installed on the instance:

    apt update && apt upgrade -y
  3. Install the following packages using apt:

    apt install -y curl ca-certificates postfix
  4. Add the GitLab package repository and prepare the installation of GitLab Community Edition by running the script:

    curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | bash
  5. Set your domain name in the EXTERNAL_URL variable, then install GitLab using apt:

    EXTERNAL_URL="https://gitlab.example.com" apt install -y gitlab-ce
    Important:

    GitLab will automatically request a Let’s Encrypt certifcate for your domain name. Make sure you have pointed the A-Record of your domain to your Instances IP address to be able to obtain a valid certificate.

Creating a Database

  1. Create a Managed PostgreSQL Database Instance from the Scaleway console. We name our database gitlab_production. You are taken to your Database’s Overview page.
  2. Click the Users tab, then on Add User.
  3. Enter the username (gitlab) and a secure password. In the permission tab, give ALL permissions for the user on the rdb database.
  4. Retrieve the Database Instance Endpoint from the Overview tab, as it is required for the following steps. The first part, before the colon, is the IP address, and the second part is the port.

Configuring the GitLab Database

For the following steps, you should be connected to the Ubuntu Bionic Beaver Instance on which you installed GitLab.

  1. Open the file /etc/gitlab/gitlab.rb in your favourite text editor (For example nano or vim).

  2. Add the following parameters to the GitLab configuration file:

    # Disable the built-in Postgres server
    postgresql['enable'] = false
    # Connection details of the Scaleway Database
    gitlab_rails['db_adapter'] = 'postgresql'
    gitlab_rails['db_encoding'] = 'utf8'
    gitlab_rails['db_database'] = '<SCALEWAY_DATABASE_NAME>'
    gitlab_rails['db_host'] = '<SCALEWAY_DATABASE_IP>'
    gitlab_rails['db_port'] = '<SCALEWAY_DATABASE_PORT>'
    gitlab_rails['db_username'] = '<SCALEWAY_DATABASE_USERNAME>'
    gitlab_rails['db_password'] = '<SCALEWAY_DATABASE_PASSWORD>'

    Replace the following values in the configuration:

    • <SCALEWAY_DATABASE_BASE>: The name of your Scaleway Database. In our example, this is rdb
    • <SCALEWAY_DATABASE_IP>: The IP address of your Scaleway Database Instance
    • <SCALEWAY_DATABASE_PORT>: The port of your Scaleway Database Instance
    • <SCALEWAY_DATABASE_USERNAME>: Your Scaleway Database user
    • <SCALEWAY_DATABASE_PASSWORD>: Password of your Scaleway Database user
  3. Once modified save the file and exit the text editor.

  4. Reconfigure GitLab:

    gitlab-ctl reconfigure
  5. Seed the GitLab database:

    Important:

    This command overwrites your GitLab database. Be careful when using it. You will lose any previous data stored in the database.

    DISABLE_DATABASE_ENVIRONMENT_CHECK=1 gitlab-rake gitlab:setup
  6. Confirm the database seed by typing yes when prompted.

Logging into GitLab

  1. Set the password for your root user with the following command:

    gitlab:password:reset[root]

    Enter and confirm the password when prompted.

  2. Open your web browser and go to the URL you configured for GitLab (for example: https://gitlab.example.com)

  3. Log in using the user root and the password you defined in step 1.

    The GitLab dashboard displays. You can now configure your GitLab installation, add additional users and repositories. All data is stored securely on your Scaleway Database Instance:

For more information on how to configure GitLab, refer to the official documentation.