GitLab es una aplicación gratuita y de código abierto que se utiliza para alojar repositorios de Git. Es un administrador de repositorios basado en la web y una plataforma con todas las funciones para el desarrollo de software acelerado. Viene con muchas herramientas integradas que te ayudan a ubicar cada tarea en el flujo de trabajo de desarrollo. GitLab está disponible en tres ediciones, GitLab Community Edition, Enterprise Edition y una versión alojada en GitLab. Viene con una interfaz web fácil de usar que permite a tu equipo colaborar en la codificación, prueba e implementación de aplicaciones.
En este tutorial, te mostramos cómo instalar GitLab CE con Docker en un servidor cloud Ubuntu 20.04.
Requisitos
- Un servidor vps cloud corriendo con Ubuntu 20.04 con 4GB RAM.
- Un nombre de dominio válido apuntando a la IP del servidor. En este tutorial usaremos https://linuxbuz.com domain.
- Una contraseña de root establecida en tu servidor.
Empezamos
Antes de comenzar, actualiza los paquetes de tu sistema a la última versión con el siguiente comando:
# apt update && apt upgrade -y
A continuación, instala algunas dependencias necesarias ejecutando el siguiente comando:
# apt install apt-transport-https ca-certificates curl software-properties-common -y
Una vez instalados todos los paquetes, puedes proceder a instalar Docker CE.
Instala Docker y Docker Compose
Por defecto, la última versión de Docker no está disponible en el repositorio predeterminado de Ubuntu. Por lo tanto, deberás agregar el repositorio de Docker en su sistema. Puedes hacerlo con el siguiente comando:
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
# add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
Una vez que se agregue el repositorio, instala Docker y Docker Compose con el siguiente comando:
# apt install docker-ce docker-compose -y
Una vez que Docker se ha instalado, puedes verificar la versión instalada con el siguiente comando:
# docker info
Deberías obtener el siguiente resultado:
Client:
Debug Mode: false
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 19.03.12
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 7ad184331fa3e55e52b890ea95e65ba581ae3429
runc version: dc9208a3303feef5b3839f4323d9beb36df0a9dd
init version: fec3683
Security Options:
apparmor
seccomp
Profile: default
Kernel Version: 5.4.0-29-generic
Operating System: Ubuntu 20.04 LTS
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 3.844GiB
Name: ubuntu2004
ID: BVY4:ELUS:PEOF:UMYR:NBNY:YYNL:OYDN:M5XW:H4Y7:CFLK:ZOUX:AIEE
Docker Root Dir: /var/lib/docker
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
Configura la estructura de directorios de GitLab
Primero necesitarás configurar una estructura de directorio para GitLab.
Puedes crear los directorios necesarios con el siguiente comando:
# mkdir ~/gitlab
# mkdir -p /mnt/gitlab/{config/ssl,logs,data}
A continuación cambia el directorio a ~ / gitlab y crea un archivo de entorno para definir el directorio de inicio de GitLab:
# cd ~/gitlab
# nano .env
Añade la siguiente línea:
GITLAB_HOME=/mnt/gitlab
Después, crea un archivo yml para GitLab:
# nano docker-compose.yml
Añade las siguientes líneas:
web:
image: 'gitlab/gitlab-ce:latest'
restart: always
hostname: 'gitlab.linuxbuz.com'
environment:
GITLAB_OMNIBUS_CONFIG: |
# Add any other gitlab.rb configuration here, each on its own line
external_url 'https://gitlab.linuxbuz.com'
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'
Guarda y cierra el archivo cuando hayas terminado.
Genera Let's Encrypt SSL
A continuación deberás generar el certificado de Let's Encrypt SSL para proteger tu instancia de GitLab. Primero, instala el cliente Certbot con el siguiente comando:
# apt install certbot -y
Después, genera el certificado Let's Encrypt SSL con el siguiente comando:
# certbot certonly --rsa-key-size 2048 --standalone --agree-tos --no-eff-email --email mi@correo.com -d gitlab.linuxbuz.com
Una vez que se ha generado el certificado, deberías obtener el siguiente resultado:
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for gitlab.linuxbuz.com
Waiting for verification...
Cleaning up challenges
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/gitlab.linuxbuz.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/gitlab.linuxbuz.com/privkey.pem
Your cert will expire on 2020-12-15. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
"certbot renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
A continuación, copia el certificado generado en el directorio de GitLab con el siguiente resultado:
# cp /etc/letsencrypt/live/gitlab.linuxbuz.com/fullchain.pem /mnt/gitlab/config/ssl/
# cp /etc/letsencrypt/live/gitlab.linuxbuz.com/privkey.pem /mnt/gitlab/config/ssl/
A continuación, genera el certificado DHPARAM con el siguiente comando:
# openssl dhparam -out /mnt/gitlab/config/ssl/dhparams.pem 2048
Crea un Contenedor GitLab
A continuación, deberás extraer la imagen de GitLab CE y compilar el contenedor.
Primero, cambia el directorio a ~ / gitlab y compilea el contenedor con el siguiente comando:
# cd ~/gitlab
# docker-compose up -d
You should get the following output:
Pulling web (gitlab/gitlab-ce:latest)...
latest: Pulling from gitlab/gitlab-ce
8e097b52bfb8: Pull complete
a613a9b4553c: Pull complete
acc000f01536: Pull complete
73eef93b7466: Pull complete
dbbf6a69d17d: Pull complete
8926eb0425bd: Pull complete
132637f1cbe1: Pull complete
d343616ff790: Pull complete
819cb051898b: Pull complete
d434b0b6371c: Pull complete
Digest: sha256:d8147f73fafdf5bef6359483a046f3d947f532a6c015dc197bbd4de9d6e61a33
Status: Downloaded newer image for gitlab/gitlab-ce:latest
Creating gitlab_web_1 ... done
Después, verifica el contenedor GitLab con el siguiente comando:
# docker-compose ps
Deberías ver el siguiente resultado:
Name Command State Ports
-----------------------------------------------------------------------------------------------------------------------
gitlab_web_1 /assets/wrapper Up (health: starting) 0.0.0.0:2224->22/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp
Accede a la Interfaz Web de GitLab
Ahora are tu navegador web y accede a la interfaz web de GitLab con la URL https://gitlab.linuxbuz.com. Deberías ver la siguiente pantalla:
Establece tu contraseña de admin y haz clic en la pestaña de "Cambiar tu contraseña". Deberías ver la siguiente pantalla:
Ahora proporciona el nombre de usuario como root y la contraseña que has establecido en el paso anterior, y haz clic en el botón "Iniciar sesión". Deberías ver el panel de GitLab CE en la siguiente pantalla:
Conclusión
¡Felicidades! Has instalado con éxito GitLab CE con Docker en el servidor Ubuntu 20.04.
Ahora puedes explorar GitLab CE y crear tu primer proyecto desde la interfaz basada en la web.
Nota
Recuerda que deberás esperar unos minutos a que Docker se despliegue.