---
title: "Cloud server with GitLab"
sidebar_label: "GitLab"
sidebar_position: 2
toc_max_heading_level: 3
description: "How to create a cloud server to work with the GitLab platform and store project repositories"
---

import EditIcon from 'docs-kit/icons/edit'
import CheckIcon from 'docs-kit/icons/check'
import Tabs from '@theme/Tabs'
import TabItem from '@theme/TabItem'
import {TabItemLabel} from 'docs-kit/components'
import {CustomTable} from 'docs-kit/components'
import Formbricks from '@theme/MDXComponents/Formbricks'
import CopyIcon from 'docs-kit/icons/copy'
import CreateServer from '@site/i18n/en/docusaurus-plugin-content-docs/current/_partials/cloud-servers/applications/create-server-for-apps.mdx'

# GitLab

GitLab is an open-source platform for storing project repositories and automating CI/CD using built-in pipelines and an issue tracking system. GitLab supports the full CI/CD cycle — continuous integration, building, testing, and code deployment.

You can [create a cloud server with a pre-installed GitLab application](#create-cloud-server-with-gitlab). In Russia, the application runs on a cloud server with the configured operating system [SelectOS 1 64-bit](https://selectos.selectel.ru/news/mega/). In other [countries](/infrastructure/locations.mdx#country) — Ubuntu 22.04.

Before creating a cloud server with an application, please review the [software license agreements](https://423.selcdn.ru/kb/license-agreements-for-application-images-LANG.pdf) included in the image.

## Minimum resource requirements \{#minimum-requirements}

<CustomTable>
  <table>
    <thead>
      <th />

      <th>Up to 500 users</th><th>From 500 users</th>
    </thead>

    <tbody>
      <tr>
        <th>vCPU count</th><td>4</td><td>8</td>
      </tr>

      <tr>
        <th>RAM</th><td>8 GB</td><td>16 GB</td>
      </tr>

      <tr>
        <th>Boot volume</th><td>20 GB</td><td>40 GB</td>
      </tr>
    </tbody>
  </table>
</CustomTable>

## Create a cloud server with GitLab \{#create-cloud-server-with-gitlab}

:::info

The cloud server with GitLab will be accessible via SSH on port 22022.

:::

For GitLab to work, the cloud server must be accessible from the internet. To do this, when creating a server, you need to create a private subnet and attach a public floating IP address. To configure GitLab, you must specify application parameters when creating the server. In the parameters, you can configure GitLab:

* with automatic creation of a PostgreSQL database on the server;
* with connection of the created [PostgreSQL Managed Database](/managed-databases/postgresql/).

After creating the server with GitLab, a free [TLS certificate from Let’s Encrypt®](/certificates-manager/certificates/lets-encrypt.mdx) will be automatically issued for the domain you specify. To issue the certificate, you need to add an A record for the domain and specify the server's public floating IP address in the record value. You can add the domain to [Selectel DNS Hosting (actual](/dns-hosting/)).

1. [Create a public floating IP address](#create-floating-ip).

2. [Add an A record for the domain](#add-a-record).

3. [Create a cloud server with GitLab](#create-gitlab-server).

### 1. Create a public floating IP address \{#create-floating-ip}

Create a public floating IP address so that the GitLab cloud server is accessible from the internet.

Use the [Create a public floating IP address](/cloud-servers/cloud-networks/public-floating-ip-addresses.mdx#create-public-floating-ip) section of the [Public floating IP addresses](/cloud-servers/cloud-networks/public-floating-ip-addresses.mdx) guide.

### 2. Add an A record for the domain⁠ \{#add-a-record}

[Add a resource record](/dns-hosting/records/add-record.mdx) to access GitLab by domain.

Specify:

* [resource record type](/dns-hosting/records/add-record.mdx#record-types) in the group — A;
* the record value — the public floating IP address that you [created in step 1](#create-floating-ip).

### 3. Create a cloud server with GitLab \{#create-gitlab-server}

<CreateServer AppNameInPanel="Cloud GitLab" MinConfig="4 vCPU, RAM starting from 8 GB and a boot disk size starting from 20 GB for GitLab instances with up to 500 users" OptionalVolumes="Add an additional" VolumesDescription=". An additional disk is required to run GitLab and is used to store primary data, such as databases or repositories." VolumeSize="Specify the size of the network disk starting from 30 GB" PublicIp="публичный IP-адрес, который вы создали ранее">
  4. Fill in the application parameters:

     4.1. In the **GitLab Domain** field, enter the domain for accessing GitLab that you [added in step 2](#add-a-record).

     4.2. Enter the email address of the GitLab administrator. The email will be used to issue SSL certificates.

     4.3. Enter the administrator password for logging into GitLab.

     4.4. Enter the user name for the PostgreSQL database. If you are going to use an external database, enter the user name for that database. The user name can be viewed in the [control panel](https://my.selectel.ru/vpc/default/dbaas/): in the top menu, click **Products** → **Managed Databases** → cluster page → **Databases** tab → database card → **Database owner**.

     4.5. Enter the user password for the PostgreSQL database. If you are going to use an external database, enter the password for that database user. The password is not stored in the control panel — if you have lost it, [change the password](/managed-databases/postgresql/manage-users.mdx#change-user-password).

     4.6. Optional: if you need to use a different email for the Let's Encrypt® certificate, open the **Additional application parameters** block and enter it in the **Let's Encrypt email** field.

     4.7. Optional: enable an existing database; to do this, open the **Additional application parameters** block and select the **Use external database (DBaaS)** checkbox. In the **External database host** field, specify the DNS address of the PostgreSQL Managed Database. The DNS address can be viewed in the [control panel](https://my.selectel.ru/vpc/default/dbaas/): in the top menu, click **Products** → **Managed Databases** → cluster page → **Settings** tab → **Node addresses and statuses** block → **DNS addresses**.

     4.8. Optional: specify the SSL certificate verification mode; to do this, open the **Additional application parameters** block and enter the value in the **External database SSL mode** field.

     4.9. Optional: specify the external database port; to do this, open the **Additional application parameters** block and enter the port in the **External database port** field. The default port is `5432`.
</CreateServer>

<Formbricks />
