Cómo instalar y configurar GitLab en Ubuntu 20.04

GitLab es una herramienta del ciclo de vida de DevOps de código abierto que se utiliza para alojar y gestionar repositorios Git. Está escrito en Ruby y ofrece un montón de funciones, como wiki, gestión de incidencias, revisión de código, monitorización e integración y despliegue continuos. Puedes alojarlo en tu propia infraestructura y desplegar un repositorio interno para tu equipo de desarrollo. GitLab está disponible en tres ediciones, Community Edition (CE), Enterprise Edition (EE) y una versión alojada en GitLab.

En este tutorial, te mostraremos cómo instalar GitLab CE en un servidor Ubuntu 20.04.

Requisitos previos

  • Un servidor con Ubuntu 20.04.
  • Un nombre de dominio válido apuntado con tu VPS.
  • Una contraseña de root configurada en tu servidor.

Cómo empezar

En primer lugar, tendrás que actualizar los paquetes de tu sistema a la última versión. Puedes actualizarlos con el siguiente comando:

apt-get update -y
apt-get upgrade -y

Una vez que tu sistema esté actualizado, instala otros paquetes necesarios con el siguiente comando:

apt-get install apt-transport-https gnupg2 curl -y

Una vez instalados todos los paquetes necesarios, puedes pasar al siguiente paso.

Instalar GitLab CE

Por defecto, GitLab no está disponible en el repositorio por defecto de Ubuntu 20.04. Así que tendrás que añadir el repositorio oficial de GitLab en tu sistema.

Primero, descarga y añade la clave GPG de GitLab con el siguiente comando:

curl -sL https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey | apt-key add -

A continuación, añade el repositorio de GitLab en APT con el siguiente comando:

nano /etc/apt/sources.list.d/gitlab.list

Añade las siguientes líneas:

deb https://packages.gitlab.com/gitlab/gitlab-ce/ubuntu/ bionic main
deb-src https://packages.gitlab.com/gitlab/gitlab-ce/ubuntu/ bionic main

Guarda y cierra el archivo cuando hayas terminado. A continuación, actualiza el repositorio e instala GitLab CE con el siguiente comando

apt-get update -y
apt-get install gitlab-ce -y

Una vez que GitLab se haya instalado correctamente, deberías obtener la siguiente salida:

It looks like GitLab has not been configured yet; skipping the upgrade script.

       *.                  *.
      ***                 ***
     *****               *****
    .******             *******
    ********            ********
   ,,,,,,,,,***********,,,,,,,,,
  ,,,,,,,,,,,*********,,,,,,,,,,,
  .,,,,,,,,,,,*******,,,,,,,,,,,,
      ,,,,,,,,,*****,,,,,,,,,.
         ,,,,,,,****,,,,,,
            .,,,***,,,,
                ,*,.
  


     _______ __  __          __
    / ____(_) /_/ /   ____ _/ /_
   / / __/ / __/ /   / __ `/ __ \
  / /_/ / / /_/ /___/ /_/ / /_/ /
  \____/_/\__/_____/\__,_/_.___/
  

Thank you for installing GitLab!
GitLab was unable to detect a valid hostname for your instance.
Please configure a URL for your GitLab instance by setting `external_url`
configuration in /etc/gitlab/gitlab.rb file.
Then, you can start your GitLab instance by running the following command:
  sudo gitlab-ctl reconfigure

For a comprehensive list of configuration options please see the Omnibus GitLab readme
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md

En este punto, GitLab está instalado en tu sistema. Ahora puedes pasar al siguiente paso.

Configurar GitLab

A continuación, tendrás que definir la URL de GitLab. Puedes definirla dentro del archivo /etc/gitlab/gitlab.rb.

nano /etc/gitlab/gitlab.rb

Cambia la siguiente línea con tu nombre de host o dominio válido:

external_url 'http://gitlab.linuxbuz.com'

Guarda y cierra el archivo. A continuación, reconfigura el GitLab ejecutando el siguiente comando:

gitlab-ctl reconfigure

Una vez que el GitLab esté configurado correctamente, deberías obtener la siguiente salida:

Recipe: gitlab::puma
  * runit_service[puma] action restart (up to date)
  * runit_service[puma] action restart (up to date)
Recipe: gitlab::sidekiq-cluster
  * runit_service[sidekiq] action restart (up to date)
Recipe: gitlab::gitlab-rails
  * execute[clear the gitlab-rails cache] action run
    - execute /opt/gitlab/bin/gitlab-rake cache:clear
Recipe: nginx::enable
  * runit_service[nginx] action restart (up to date)
Recipe: monitoring::grafana
  * runit_service[grafana] action restart (up to date)

Running handlers:
Running handlers complete
Chef Client finished, 12/767 resources updated in 01 minutes 20 seconds
gitlab Reconfigured!

Ahora puedes comprobar el estado de GitLab con el siguiente comando:

gitlab-ctl status

Deberías obtener la siguiente salida:

down: alertmanager: 1s, normally up, want up; run: log: (pid 12973) 142s
run: gitaly: (pid 14216) 17s; run: log: (pid 12352) 286s
run: gitlab-exporter: (pid 14165) 19s; run: log: (pid 12885) 161s
run: gitlab-workhorse: (pid 14152) 19s; run: log: (pid 12767) 185s
run: grafana: (pid 14252) 15s; run: log: (pid 13855) 54s
run: logrotate: (pid 12818) 174s; run: log: (pid 12826) 173s
run: nginx: (pid 12798) 180s; run: log: (pid 12807) 179s
run: node-exporter: (pid 14160) 19s; run: log: (pid 12867) 167s
run: postgres-exporter: (pid 14246) 15s; run: log: (pid 13082) 130s
run: postgresql: (pid 12515) 280s; run: log: (pid 12532) 277s
run: prometheus: (pid 14183) 18s; run: log: (pid 12931) 149s
run: puma: (pid 12718) 199s; run: log: (pid 12727) 196s
run: redis: (pid 12309) 293s; run: log: (pid 12318) 292s
run: redis-exporter: (pid 14176) 18s; run: log: (pid 12908) 154s
run: sidekiq: (pid 12737) 193s; run: log: (pid 12749) 190s

Asegura GitLab con Let’s Encrypt

En este punto, GitLab está instalado y configurado. A continuación, se recomienda asegurar tu instancia de GitLab con Let’s Encrypt SSL.

Primero, instala la herramienta cliente Let’s Encrypt con el siguiente comando:

apt-get install letsencrypt -y

Una vez instalada, edita el archivo /etc/gitlab/gitlab.rb y activa Let’s Encrypt.

nano /etc/gitlab/gitlab.rb

Cambia las siguientes líneas:

external_url 'https://gitlab.linuxbuz.com'
letsencrypt['enable'] = true
letsencrypt['contact_emails'] = ['[email protected]']
letsencrypt['auto_renew'] = true

Guarda y cierra el archivo cuando hayas terminado. A continuación, reconfigura GitLab con el siguiente comando:

gitlab-ctl reconfigure

Una vez que hayas terminado. Puedes pasar al siguiente paso.

Accede a la interfaz de GitLab

En este punto, GitLab está asegurado con Let’s Encrypt SSL gratuito. Ahora, abre tu navegador web y escribe la URL https://gitlab.linuxbuz.com. Serás redirigido a la siguiente página:

Ahora, establece tu nueva contraseña y haz clic en el botón Cambiar tu contraseña. Deberías ver la siguiente pantalla:

Ahora, proporciona tu nombre de usuario y contraseña de root, y haz clic en el botón Iniciar sesión. Deberías ver la siguiente pantalla:

Desactivar el registro público

Por defecto, GitLab permite que cualquiera se registre en una cuenta utilizando la URL de GitLab. Esta configuración es útil si quieres alojar un proyecto público. Sin embargo, si quieres utilizar GitLab para tu proyecto interno, se recomienda desactivar el Registro Público.

En el panel de control de GitLab, haz clic en el icono del área de administración. Deberías ver la siguiente pantalla:

Ahora, haz clic en la Configuración en el panel izquierdo. Deberías ver la siguiente pantalla:

A continuación, desplázate hasta las restricciones de Registro y haz clic en el botón Expandir. Desmarca la casilla Registro habilitado y haz clic en Guardar cambios cuando termines.

Ahora, cierra la sesión de GitLab y accede de nuevo a GitLab. Deberías ver la siguiente pantalla con el registro público deshabilitado:

Verificar la funcionalidad de GitLab

En este punto, GitLab está instalado y configurado. A continuación, crea un nuevo proyecto desde el panel de control de GitLab.

En el panel de control de GitLab, haz clic en el botón de proyecto. Deberías ver la siguiente pantalla:

Ahora, haz clic en el botón Crear un proyecto. Deberías ver la siguiente pantalla:

Proporciona el nombre de tu proyecto, la URL, la descripción, el nivel de visibilidad y haz clic en el botón Crear proyecto. Deberías ver la siguiente pantalla:

A continuación, ve al sistema remoto y configura el Git con el siguiente comando:

git config --global user.name "Hitesh Jethva"
git config --global user.email "[email protected]"

A continuación, clona el repositorio de tu proyecto con el siguiente comando:

git clone https://gitlab.linuxbuz.com/root/project1.git

Se te pedirá que proporciones tu nombre de usuario y contraseña de GitLab como se muestra a continuación:

Cloning into 'project1'...
Username for 'https://gitlab.linuxbuz.com': root
Password for 'https://[email protected]': 
warning: You appear to have cloned an empty repository.
Checking connectivity... done.

A continuación, cambia el directorio a tu proyecto y crea un archivo README.md:

cd project1
echo "This is my first file" > README.md

A continuación, añade el archivo README.md a tu repositorio y confirma los cambios con el siguiente comando:

git add README.md
git commit -m "add README"

Deberías ver la siguiente salida:

[master (root-commit) ae4d108] add README
 1 file changed, 1 insertion(+)
 create mode 100644 README.md

A continuación, envía tu archivo al repositorio remoto con el siguiente comando:

git push -u origin master

Proporciona tu nombre de usuario y contraseña de GitLab para enviar el archivo al repositorio remoto:

Username for 'https://gitlab.linuxbuz.com': root
Password for 'https://[email protected]': 
Counting objects: 3, done.
Writing objects: 100% (3/3), 237 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://gitlab.linuxbuz.com/root/project1.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.

Ahora, abre tu panel de control de GitLab y haz clic en el botón de proyecto. Deberías ver tu archivo README.md en la siguiente pantalla:

Conclusión

En la guía anterior, has aprendido a instalar GitLab y asegurarlo con Let’s Encrypt SSL en Ubuntu 20.04. También has aprendido a realizar operaciones básicas de Git con GitLab. Espero que ahora puedas desplegar GitLab en tu entorno de desarrollo. No dudes en preguntarme si tienes alguna duda.

También te podría gustar...