Cómo instalar GitLab con Docker en Ubuntu 20.04 LTS

GitLab es un gestor de repositorios de código abierto basado en Rails desarrollado por GitLab Inc. Es un gestor de repositorios git basado en web que permite a tu equipo colaborar en la codificación, prueba y despliegue de aplicaciones. GitLab proporciona varias funciones, como wikis, seguimiento de incidencias, revisiones de código y feeds de actividad.

En este tutorial, te mostraremos cómo instalar GitLab utilizando Docker y Docker Compose. Además, utilizaremos Ubuntu 20.04 como sistema operativo principal, e instalaremos Docker desde el repositorio oficial de Ubuntu FocalFossa.

Requisitos previos

  • Servidor Ubuntu 20.04
  • Mínimo 4GB de RAM
  • Privilegios de root

¿Qué vamos a hacer?

  • Instalar Docker y Docker Compose
  • Configura el Proyecto GitLab Docker
  • Construye un Contenedor GitLab
  • Postinstalación de GitLab

Paso 1 – Instalar Docker y Docker Compose

En primer lugar, instalaremos los paquetes docker y docker-compose en nuestro sistema Ubuntu 20.04. Y utilizaremos los paquetes docker proporcionados por el repositorio oficial de Ubuntu FocalFossa.

Actualiza todos los repositorios a la última versión e instala docker y docker-compose utilizando el siguiente comando apt.

sudo apt update
sudo apt install docker.io containerd docker-compose

Una vez completada la instalación, inicia el servicio docker y añádelo al arranque del sistema.

systemctl start docker
systemctl enable docker

A continuación, comprueba el servicio docker utilizando el siguiente comando systemctl.

systemctl status docker

Como resultado, el servicio docker está en funcionamiento en Ubuntu 20.04 Server.

Instalar Docker en Ubuntu 20.04

Para verificar la instalación de docker, ejecuta el comando docker «hello-world» que aparece a continuación.

docker run hello-world

Ahora recibirás el mensaje «hola-mundo» de docker como se indica a continuación.

Docker ejecutar hola mundo

Ahora estamos listos para instalar GitLab utilizando docker container y docker-compose.

Paso 2 – Configurar el directorio de GitLab

En este paso, configuraremos el directorio de nuestro proyecto para la instalación de GitLab.

Crea un nuevo directorio llamado «gitlab» y entra en él.

mkdir -p gitlab; cd gitlab/

El directorio «gitlab» se utilizará para almacenar todos los scripts docker y la configuración de GitLab.

Crear un directorio de datos de GitLab y un archivo .env

En esta sección, crearemos un nuevo directorio para almacenar todos nuestros datos de GitLab y crearemos un nuevo archivo «.env» que será utilizado por docker.

Crea un nuevo directorio de datos de GitLab «/srv/gitlab» utilizando el comando mkdir que aparece a continuación.

mkdir -p /srv/gitlab/{config/ssl,logs,data}

A continuación, en el directorio del proyecto «gitlab», crea un nuevo archivo «.env» utilizando el editor vim.

vim .env

Define la variable de entorno «GITLAB_HOME» con el valor directorio de datos de GitLab «/srv/gitlab» como se indica a continuación.

GITLAB_HOME=/srv/gitlab

Guarda y cierra.

El script docker-compose.yml utilizará la variable de entorno para los volúmenes de Gitlab.

Crear el script docker-compose.yml

A continuación, crearemos un nuevo «docker-compose.yml» que se utilizará para construir nuestro contenedor GitLab.

Crea el nuevo archivo «docker-compose.yml» utilizando el comando vim que aparece a continuación.

vim docker-compose.yml

Define el servicio llamado «web» con la imagen de «gitlab-ce» última versión, y cambia el «hostname» por tu nombre de dominio de GitLab.

web:
  image: 'gitlab/gitlab-ce:latest'
  restart: always
  hostname: 'gitlab.hakase-labs.io'

Configura el entorno para tu instalación de Gitlab como se indica a continuación. Y asegúrate de cambiar «external_url» por el protocolo seguro HTTPS, y cambia «gitlab_rails[‘gitlab_shell_ssh_port’]» por tu puerto SSH alternativo para el contenedor.

  environment:
    GITLAB_OMNIBUS_CONFIG: |
      # Add any other gitlab.rb configuration here, each on its own line
      external_url 'https://gitlab.hakase-labs.io'
      gitlab_rails['gitlab_shell_ssh_port'] = 2224
      nginx['redirect_http_to_https'] = true
      nginx['ssl_certificate'] = "/etc/gitlab/ssl/fullchain.pem"
      nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/privkey.pem"
      nginx['ssl_dhparam'] = "/etc/gitlab/ssl/dhparams.pem"

A continuación, define los puertos para el contenedor GitLab como se indica a continuación. Y asegúrate de cambiar el puerto SSH «2224» por tu puerto personalizado y que coincida con el puerto «gitlab_shell_ssh_port» de arriba.

  ports:
    - '80:80'
    - '443:443'
    - '2224:22'

Después, define el volumen o tus directorios de datos de GitLab. Todos los directorios de datos de GitLab están disponibles en el directorio «GITLAB_HOME», que se establece como variable de entorno en el archivo «.env» de la parte superior.

  volumes:
    - '${GITLAB_HOME}/config:/etc/gitlab'
    - '${GITLAB_HOME}/logs:/var/log/gitlab'
    - '${GITLAB_HOME}/data:/var/opt/gitlab'
    - '${GITLAB_HOME}/config/ssl:/etc/gitlab/ssl'

Guarda y cierra.

A continuación se muestra la configuración completa.

web:
  image: 'gitlab/gitlab-ce:latest'
  restart: always
  hostname: 'gitlab.hakase-labs.io'
environment:
GITLAB_OMNIBUS_CONFIG: |
# Add any other gitlab.rb configuration here, each on its own line
external_url 'https://gitlab.hakase-labs.io'
gitlab_rails['gitlab_shell_ssh_port'] = 2224
nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/etc/gitlab/ssl/fullchain.pem"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/privkey.pem"
nginx['ssl_dhparam'] = "/etc/gitlab/ssl/dhparams.pem"

ports:
- '80:80'
- '443:443'
- '2224:22'

volumes:
- '${GITLAB_HOME}/config:/etc/gitlab'
- '${GITLAB_HOME}/logs:/var/log/gitlab'
- '${GITLAB_HOME}/data:/var/opt/gitlab'
- '${GITLAB_HOME}/config/ssl:/etc/gitlab/ssl'

Como resultado, se ha creado el script «docker-compose.yml» para la instalación del proyecto GitLab.

Generar certificados SSL y DHAPARAM

En esta etapa, generaremos el certificado SSL Letsencrypt para nuestra instalación de GitLab.

En tu servidor, instala la herramienta certbot utilizando el comando apt que aparece a continuación.

sudo apt install certbot

Después, genera el certificado SSL para GitLab utilizando el siguiente comando certbot.

certbot certonly --rsa-key-size 2048 --standalone --agree-tos --no-eff-email --email [email protected] -d gitlab.hakase-labs.io

Una vez completado todo, tus certificados estarán disponibles en el directorio «/etc/letsencrypt/live/gitlab.yourdomain».

Ahora copia el archivo de certificados «fullchain.pem» y «privkey.pem» en el directorio «/srv/gitlab/config/ssl/».

cp /etc/letsencrypt/live/gitlab.hakase-labs.io/fullchain.pem /srv/gitlab/config/ssl/
cp /etc/letsencrypt/live/gitlab.hakase-labs.io/privkey.pem /srv/gitlab/config/ssl/

Y ya está listo el SSL Letsencrypt para GitLab.

A continuación, genera el certificado DHPARAM «dhparam.pem» utilizando el siguiente comando openssl.

sudo openssl dhparam -out /srv/gitlab/config/ssl/dhparams.pem 2048

Y todos los certificados para la instalación de GitLab han sido generados, y estamos listos para construir el contenedor de GitLab.

Configurar SSL para GitLab

Paso 3 – Construir el contenedor de GitLab

En este paso, construiremos nuestro contenedor GitLab utilizando toda la configuración que hemos creado anteriormente, y utilizando el comando docker-compose.

Antes de continuar, puedes comprobar todos los archivos disponibles en el directorio del proyecto «gitlab» y la estructura de directorios del directorio de Datos de GitLab.

ls -lah ~/gitlab/
tree /srv/gitlab

A continuación se muestra el resultado que obtendrás.

Configura todos los archivos para el Contenedor GitLab

A continuación, ve al directorio del proyecto «~/gitlab» y construye el contenedor de GitLab utilizando el comando «docker-compose» que aparece a continuación.

cd ~/gitlab
docker-compose up -d

Una vez completado todo, obtendrás el resultado que se muestra a continuación.

Construye un contenedor Docker para GitLab

Ahora comprueba el contenedor en ejecución y los puertos «LISTEN» en tu sistema Ubuntu utilizando el siguiente comando.

docker-compose ps
ss -plnt

Y obtendrás que el contenedor«gitlab_web_1» está en funcionamiento, y tienes los puertos HTTP, HTTPS y SSH «2224» utilizados por el contenedor GitLab.

Comprobación del contenedor GitLab

Como puedes ver, el contenedor de GitLab está en funcionamiento, y estamos listos para configurar nuestra instalación de GitLab.

Paso 4 – Postinstalación de GitLab

Abre tu navegador web y escribe la URL de tu instalación de GitLab en la barra de direcciones.

https://gitlab.hakase-labs.io/

Y aparecerá la página de restablecimiento de contraseña de GitLab.

GitLab Cambiar contraseña

Escribe tu nueva contraseña para el usuario por defecto «root» y pulsa el botón «Cambiar contraseña».

Ahora aparecerá la página de inicio de sesión de GitLab que se muestra a continuación.

Página de inicio de sesión en Gitlab como usuario root por defecto

Inicia sesión con el usuario por defecto «root» y tu nueva contraseña, y haz clic en «Iniciar sesión».

Y obtendrás el Panel de Control de GitLab como se muestra a continuación.

Panel de control de GitLab

Como puedes ver, la instalación de GitLab utilizando docker y docker-compose se ha completado.

Paso 5 – Configuración Básica del Contenedor GitLab

Después de la instalación de GitLab, puedes añadir alguna configuración adicional al contenedor GitLab sin destruir el contenedor GitLab. En este paso, te mostraremos la forma básica de gestionar el contenedor GitLab.

Antes de continuar, ve al directorio del proyecto «~/gitlab» y comprueba el estado del contenedor utilizando el siguiente comando.

cd ~/gitlab
docker-compose ps

Obtendrás que el contenedor GitLab está en funcionamiento.

Comprobar el estado de los servicios de GitLab dentro del contenedor

Para comprobar todos los servicios de GitLab dentro del contenedor de Gitlab, utiliza el comando «docker exec» como se indica a continuación.

sudo docker exec -it gitlab_web_1 gitlab-ctl status

A continuación se muestra el resultado que obtendrás.

El contenedor Gitlab comprueba el estado de los servicios

Como puedes ver, todos los componentes del servicio GitLab están en funcionamiento.

Acceder al Contenedor GitLab

Para acceder por SSH al contenedor de GitLab, utiliza el comando «docker exec» con el intérprete de comandos «bash» dentro del contenedor, como se indica a continuación.

sudo docker exec -it gitlab_web_1 /bin/bash

Ahora comprueba la versión por defecto de Ubuntu del contenedor GitLab.

cat /etc/lsb-release

Obtendrás que el contenedor GitLab está basado en un Ubuntu 16.04 Xenial.

Iniciar sesión en GitLab Container

Ahora escribe«exit» para salir del contenedor GitLab.

Edita la configuración de GitLab gitlab.rb

A continuación, para cambiar la configuración de GitLab dentro del contenedor, puedes utilizar el «editor» por defecto del propio contenedor Docker.

Edita la configuración «/etc/gitlab/gitlab.rb» dentro del contenedor utilizando el siguiente comando docker.

sudo docker exec -it gitlab_web_1 editor /etc/gitlab/gitlab.rb

Ahora aparecerá en pantalla el editor por defecto «nano», con el archivo de configuración «gitlab.rb».

Escribe tu configuración, guárdala y sal.

A continuación, para aplicar los nuevos cambios a GitLab, reinicia el servicio de contenedores de Gitlab utilizando el comando que aparece a continuación.

sudo docker restart gitlab_web_1

Ahora asegúrate de que no hay ningún error, comprueba el estado del contenedor de GitLab utilizando el siguiente comando.

sudo docker-compose ps

Ahora asegúrate de que el contenedor GitLab está en estado«Up (sano)«.

Configurar el contenedor GitLab

Como resultado, se ha aplicado la nueva configuración para GitLab.

Y finalmente, la instalación de GitLab utilizando docker y docker-compose se ha completado con éxito.

También te podría gustar...