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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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)«.
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.