GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo instalar el servidor Gitlab con Docker en Ubuntu 18.04 LTS

Gitlab CE o Community Edition es una aplicación de código abierto que se utiliza para alojar sus repositorios Git. El autohospedaje de sus repositorios Git le brinda un control total sobre sus datos al tiempo que proporciona una interfaz fácil de usar para usted y los miembros de su equipo.

En esta guía, cubriremos cómo instalar su repositorio de Git usando la oferta gratuita de Gitlab, Community Edition. Si desea funciones avanzadas como aprobaciones de fusión, hojas de ruta, administración de cartera, recuperación ante desastres, escaneo de contenedores, etc., puede optar por actualizar a Enterprise Edition.

Requisitos

  • Un servidor basado en Ubuntu 18.04 con un usuario sudo no root.
  • Necesita un VPS con un mínimo de 2 núcleos de CPU y 8 GB de RAM de acuerdo con los requisitos de hardware especificados para Gitlab CE que admitirá 100 usuarios. Aunque puede sustituir el espacio de intercambio por RAM, no se recomienda ya que la aplicación se ejecutará más lentamente.

Paso 1:instalación de dependencias

Antes de instalar Gitlab, debemos asegurarnos de que nuestro servidor tenga cierto software que Gitlab necesitará para ejecutarse correctamente. Ejecute los siguientes comandos para instalar las dependencias.

$ sudo apt update
$ sudo apt install ca-certificates curl openssh-server ufw apt-transport-https -y

Parte del software anterior puede estar preinstalado para usted.

Paso 2:cambie el puerto SSH de su sistema

Gitlab usará el puerto 22 para enviar repositorios a través de SSH. El SSH de su servidor también se está ejecutando en él, lo que generará un conflicto. Hay dos maneras de hacerlo. Puede cambiar el puerto SSH que usa para conectarse a su sistema o puede cambiar el puerto que usará Gitlab para SSH. En este tutorial, vamos a cambiar el puerto SSH del propio servidor.

Para hacer esto, necesitamos editar el archivo /etc/ssh/sshd_config. Abra el archivo en el editor de texto nano.

$ sudo nano /etc/ssh/sshd_config

Busque la siguiente línea y cambie 22 a 6622 y elimine el # delante de él. Puede elegir cualquier puerto que desee.

# Port 22

Presione Ctrl + X para cerrar su archivo y presione Y para guardar los cambios.

Reinicie el servicio SSH.

$ sudo systemctl restart sshd

Cierra tu sesión SSH actual y crea una nueva con el puerto 6622 y vuelve a conectarte a tu servidor.

$ ssh [email protected] -p 6622

Paso 3:configuración del cortafuegos

En nuestro paso anterior, instalamos ufw (cortafuegos sin complicaciones). Antes de que podamos proceder a instalar Gitlab, debemos configurarlo.

Habilite SSH y el puerto que acabamos de crear para que no nos bloqueen.

$ sudo ufw allow OpenSSH
$ sudo ufw allow 6622

Habilite el cortafuegos ufw.

$ sudo ufw enable

También necesitamos habilitar http y https para que funcione Gitlab.

$ sudo ufw allow http
$ sudo ufw allow https

Compruebe el estado del cortafuegos.

$ sudo ufw status

Debería ver un resultado como el siguiente.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
6622                       ALLOW       Anywhere                  
80/tcp                     ALLOW       Anywhere                  
443/tcp                    ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
6622 (v6)                  ALLOW       Anywhere (v6)      
80/tcp (v6)                ALLOW       Anywhere (v6)             
443/tcp (v6)               ALLOW       Anywhere (v6)             

Paso 4:instalar Docker

Agregue la clave GPG de Docker a su sistema.

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Verifique la huella digital de la clave descargada.

$ sudo apt-key fingerprint 0EBFCD88

Debería ver un resultado como el siguiente.

pub   rsa4096 2017-02-22 [SCEA]
      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid           [ unknown] Docker Release (CE deb) <[email protected]>
sub   rsa4096 2017-02-22 [S]

Agregue el repositorio de Docker.

$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

Actualice su base de datos de paquetes.

$ sudo apt update

Instale Docker-CE. CE es la edición comunitaria de Docker.

$ sudo apt install docker-ce -y

Docker debería estar instalado ahora. Comprueba que se está ejecutando.

$ sudo systemctl status docker

El resultado debe ser similar al siguiente.

? docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2019-10-11 21:10:31 UTC; 32s ago
     Docs: https://docs.docker.com
 Main PID: 19128 (dockerd)
    Tasks: 12
   CGroup: /system.slice/docker.service
           ??19128 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Presione q para salir.

Agregue su cuenta de usuario limitada de Linux al grupo docker para que pueda ejecutar docker sin sudo.

sudo usermod -aG docker $USER

$USUARIO La variable seleccionará y agregará el usuario que ha iniciado sesión actualmente al grupo de Docker. Reemplazar $USUARIO con el nombre de usuario real si actualmente no ha iniciado sesión con ese usuario.

Cambia al usuario que acabamos de agregar. Aunque ya haya iniciado sesión, deberá volver a cambiar a él para volver a cargar los permisos.

$ su - ${USER}

Verifique que todo esté funcionando bien ejecutando el programa integrado "Hello World".

$ docker run hello-world

Debería ver el siguiente resultado que indicará que Docker está instalado y funcionando correctamente.

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete 
Digest: sha256:c3b4ada4687bbaa170745b3e4dd8ac3f194ca95b2d0518b417fb47e5879d9b5f
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

Paso 5:instalar Docker Compose

Es posible omitir este paso y continuar, pero tener Docker Compose instalado hará que ejecutar Gitlab sea mucho más fácil, especialmente si desea hacerlo en más de un servidor.

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Al momento de escribir este tutorial, 1.24.1 es la versión estable actual de Docker Compose. Puede verificar la última versión de lanzamiento desde su página de Github.

Aplique permisos ejecutables al archivo binario de composición de docker.

$ sudo chmod +x /usr/local/bin/docker-compose

Agregar finalización de comando a Docker Compose.

$ sudo curl -L https://raw.githubusercontent.com/docker/compose/1.24.1/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose

Verifique si su instalación fue exitosa.

$ docker-compose --version

Imprimirá el siguiente resultado.

docker-compose version 1.24.1, build 4667896b

Paso 6:instalar Gitlab

Descargue la imagen de Docker de Gitlab desde Dockerhub. Esta imagen contiene todo lo que necesita para ejecutar Docker:nginx, PostgreSQL, Redis, etc. Ejecute el siguiente comando para descargar la imagen.

$ docker pull gitlab/gitlab-ee:latest

Aunque este tutorial trata sobre la instalación de Community Edition, tomaremos la imagen Enterprise Edition de Gitlab. Esto se debe a que la edición Enterprise se comporta exactamente como la Community Edition, a menos que la actualice ingresando su licencia. Actualizar una instalación de Community Edition a Enterprise Edition presenta más complicaciones.

Tomará un poco de tiempo descargar la imagen completa. Cuando finalice el trabajo, puede ejecutar el siguiente comando para verificar todas las imágenes actualmente en su sistema.

$ docker images

El resultado debe ser similar al siguiente.

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
gitlab/gitlab-ee    latest              4bacb2356d28        4 days ago          1.87GB
hello-world         latest              fce289e99eb9        9 months ago        1.84kB

Paso 7:ejecutar Gitlab

Podemos ejecutar el contenedor Gitlab de inmediato en este punto al proporcionar todas las opciones en un solo comando, pero eso significaría que cada vez que necesite ejecutar el contenedor, debe proporcionar estas variables. Docker Compose facilita este proceso, ya que le permitirá guardar la configuración en un archivo .yml que luego se usará para ejecutar e iniciar el contenedor.

Cree un docker-compose.yml.

$ nano docker-compose.yml

Pegue el siguiente código.

web:
  image: 'gitlab/gitlab-ee:latest'
  container_name: 'gitlab-howtoforge-tutorial'
  restart: always
  hostname: 'gitlab.example.com'
  environment:
    GITLAB_OMNIBUS_CONFIG: |
      external_url 'https://gitlab.example.com'
      gitlab_rails['smtp_enable'] = true
	  gitlab_rails['smtp_address'] = "smtp.gmail.com"
      gitlab_rails['smtp_port'] = 587
      gitlab_rails['smtp_user_name'] = "[email protected]"
      gitlab_rails['smtp_password'] = "app-password"
      gitlab_rails['smtp_domain'] = "smtp.gmail.com"
      gitlab_rails['smtp_authentication'] = "login"
      gitlab_rails['smtp_enable_starttls_auto'] = true
      gitlab_rails['smtp_tls'] = false
      gitlab_rails['smtp_openssl_verify_mode'] = 'peer'
      # Add any other gitlab.rb configuration here, each on its own line
  ports:
    - '80:80'
    - '443:443'
    - '22:22'
    - '587:587'
  volumes:
    - '/srv/gitlab/config:/etc/gitlab'
    - '/srv/gitlab/logs:/var/log/gitlab'
    - '/srv/gitlab/data:/var/opt/gitlab'

Veamos qué significa cada una de las opciones anteriores.

  • imagen hace referencia a la ubicación de la imagen Docker de Gitlab en Dockerhub.
  • nombre_contenedor le permite aplicar una etiqueta a su contenedor docker, para usar cuando se hace referencia al contenedor dentro de una red Docker.
  • nombre de host define el nombre de host interno del contenedor o, en nuestro caso, la URL donde se instalará su Gitlab.
  • reiniciar especifica una política de reinicio para el contenedor. Lo hemos configurado para siempre lo que significa que si se sale de un contenedor, se reiniciará automáticamente.
  • medio ambiente suministra la variable GITLAB_OMNIBUS_CONFIG que le permite ingresar cualquier ajuste de configuración de Gitlab. En este caso, proporcionamos la URL externa que se supone que debe usar Gitlab.
  • volumen define los directorios montados en el servidor para almacenar datos persistentes. Los tres volúmenes/directorios almacenan datos de aplicaciones, archivos de registro y archivos de configuración. El valor a la izquierda del punto y coma es el directorio local en el servidor y el valor a la derecha es el directorio dentro del contenedor.
  • publicar le dice al contenedor que publique puertos o un rango de puertos para el host. Dado que Gitlab necesita los puertos 22 (SSH), 80 (HTTP), 443 (HTTPS) y 587 (SMPT - MSA), los hemos especificado aquí. Si desea que Gitlab use un puerto no estándar en su servidor (probablemente porque no está disponible), primero debe proporcionar el puerto del host y luego el puerto del contenedor. Por ejemplo, dado que su servidor ya está usando el puerto SSH (22), puede decirle a Gitlab que use SSH a través de un puerto diferente, digamos 3333. Entonces cambiaría 22:22 en el archivo anterior a 3333:22 . También deberá agregar la línea gitlab_rails['gitlab_shell_ssh_port'] =3333 debajo de GITLAB_OMNIBUS_CONFIG arriba.
  • url_externa se refiere al dominio donde se instalará su Gitlab. Hemos elegido https, que instalará automáticamente el certificado SSL de Let's Encrypt.
  • También agregamos una configuración adicional para configurar Gitlab para usar Gmail para enviar correos. Puede utilizar cualquier servicio de correo SMTP de terceros. Los documentos de Gitlab han mantenido una guía detallada sobre cómo configurar varios servicios SMTP con él.

Asegúrese de estar en el mismo directorio que docker-compose.yml. Ejecute el siguiente comando para iniciar Gitlab.

$ docker-compose up -d

Verá algo como lo siguiente.

Creating gitlab-howtoforge-tutorial ... done

Pasarán varios minutos más antes de que pueda acceder a Gitlab a través del navegador. Puede obtener más información sobre el proceso de inicio mediante el siguiente comando.

$ docker logs -f gitlab-howtoforge-tutorial

Para salir del proceso de monitoreo de registros, presione Ctrl + C.

Cargue el sitio de Gitlab en su navegador. Si intenta cargarlo demasiado poco después de iniciar el contenedor, obtendrá el error 502. Si eso sucede, espere unos minutos más y vuelva a intentarlo.

Si todo está bien, verá la siguiente página en su navegador.

Paso 8:Configurar Gitlab

Proporcione una contraseña para la contraseña de administrador de Gitlab. Se le llevará a la siguiente pantalla de inicio de sesión. Usar raíz como el nombre de usuario y la contraseña que acaba de elegir para iniciar sesión.

Configurar SMTP

Tendremos que habilitar la configuración de SMTP antes de

Configurar perfil de Gitlab

Haga clic en el ícono de usuario en la esquina superior derecha para que aparezca el menú desplegable y seleccione la configuración.

Accederá a la página de configuración de su perfil. Agregue su nombre y correo electrónico aquí. Deberá confirmar su dirección de correo electrónico para que se actualice. También puede agregar más información aquí sobre usted si lo desea.

Haz clic en Actualizar configuración de perfil. cuando termines.

Cambiar nombre de usuario

A continuación, debemos cambiar nuestro nombre de usuario de root a algo más como root es un nombre de usuario adivinable bastante común. Haga clic en Cuenta en la barra lateral izquierda.

Cambie el usuario a cualquier nombre de usuario que desee conservar. Haga clic en Actualizar nombre de usuario para terminar. También debe habilitar la autenticación de dos factores aquí para mayor seguridad.

Restringir registros públicos

De forma predeterminada, las instalaciones de Gitlab permiten que cualquier persona se registre. Si no quieres eso, deberías deshabilitarlo. Haga clic en el icono con forma de llave inglesa en la barra superior para acceder al área de Administración.

Para ajustar la configuración, haga clic en Configuración en la barra lateral izquierda.

Aquí, desplácese hacia abajo hasta Restricciones de registro y haga clic en Expandir botón. Desmarque Registro habilitado y haga clic en Guardar cambios cuando haya terminado.

Aún podrá agregar nuevos usuarios a través de la interfaz de administración.

Añadir clave SSH

El último paso es agregar nuestra clave SSH. Si tiene una clave SSH, puede omitir el siguiente comando. Si no tiene uno, puede crear uno usando el siguiente comando.

$ ssh-keygen

Este comando es común para Mac OS, Linux y Git Bash/WSL en Windows. Acepte los valores predeterminados y deje el campo de contraseña en blanco.

Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): /home/user/.ssh/gitlab
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in gitlab.
Your public key has been saved in gitlab.pub.
The key fingerprint is:
SHA256:6dNGAPyd8JAkHAikYOW2PsFjGlzBBpwy4XQ9RQgVwK8 [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|+*OB=*O=..       |
|B+o+o+oo+        |
|oo.+. ...= .     |
|. + ..  .o+      |
| o *.   S .      |
|  =Eo  . o       |
| . o    o o      |
|    .    o       |
|                 |
+----[SHA256]-----+

Puede mostrar su clave pública mediante el siguiente comando

$ cat ~/.ssh/gitlab.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDUf64YH7uJimFWVJSy/mgYiLRqBxVB6JJMTxZZ96DwExoINhWVRhQAgMgExBWGpUCpWXhLcNuIM+EfFRtCq+YYyLC+GlHsNdnLgecGgop72p8BEi8UckgCiCSuMrWCMAOFh5NKs2YHpF7bOUjXQRVvGujLuV1UBof7SXQ/za7e3aybNiH3KpA6oWSSmpqnOt8rZT54IjLnVFUSLx7ZxWDVW1bO29mI8NjWwzZGLAtNIkJQEOqVo8nhVkroFHvBTrZnUsmr5oFOWG++LPqED9EUSPTpO8PNnogYT3xsVncBMMAEt0pPE7ATmstQc161SEtqAUa98Qb0RRKqCKcKStOp [email protected]

Vuelva al área de Configuración de su perfil y acceda a las claves SSH desde la barra lateral.

Pegue la clave SSH en el cuadro provisto y haga clic en Agregar clave para proceder.

Ahora puede crear y comprometerse con sus repositorios sin tener que proporcionar sus credenciales de Gitlab.

Paso 9:crea tu primer proyecto

Cada repositorio en Gitlab pertenece a un proyecto. Un proyecto incluye un repositorio, un rastreador de problemas, solicitudes de combinación, wiki, canalizaciones de integración continua y entrega continua (CI/CD), y muchas otras funciones.

Para crear su primer repositorio, haga clic en Crear un proyecto .

Accederá a la página Nuevo proyecto. Introduzca el nombre del proyecto. Puede cambiar el slug del proyecto a algo diferente. Ingrese una descripción del proyecto si lo desea y cambie la visibilidad del proyecto como desee. Puede inicializar su repositorio con un archivo README. Una vez que haya terminado, haga clic en Crear proyecto .

Accederá a la página de su repositorio con un único archivo README.md en blanco.

Ahora que nuestro repositorio está activo, intentemos agregar un registro de cambios desde la línea de comandos.

Ingrese los siguientes comandos en su computadora para crear un archivo CHANGELOG y devolverlo a su repositorio. Asegúrate de tener Git instalado en tu computadora.

Clonar el repositorio. Puede clonar mediante SSH o HTTPS.

Clonar usando SSH.

$ git clone [email protected]:user/howtoforge-test.git

o Clonar usando HTTPS.

$ git clone https://gitlab.example.com/user/howtoforge-test.git

Ingrese el resto de los comandos para crear y presione CHANGELOG.

$ cd howtoforge-test
$ touch CHANGELOG  # Or create the file in your editor and enter a project description
$ git add CHANGELOG
$ git commit -m "add Changelog"
$ git push -u origin master

Paso 10:administrar el contenedor de Gitlab

Para ver todos los contenedores en ejecución, ejecute el siguiente comando.

$ docker-ps

Para detener su contenedor de Gitlab, ejecute el siguiente comando.

$ docker stop gitlab-howtoforge-tutorial

Para iniciar su contenedor nuevamente, use el siguiente comando.

$ docker start gitlab-howtoforge-tutorial

En caso de que desee eliminar su contenedor, puede hacerlo con el siguiente comando.

$ docker container rm gitlab-howtoforge-tutorial

Paso 11:Actualizar Gitlab

Si desea actualizar Gitlab a la versión más reciente, debe detener y eliminar el contenedor existente, extraer la última imagen y luego volver a crear el contenedor.

$ docker stop gitlab-howtoforge-tutorial
$ docker rm gitlab-howtoforge-tutorial
$ docker pull gitlab/gitlab-ee:latest
$ docker-compose up -d

Y antes de preguntar, sus datos estarán seguros incluso si retira el contenedor.

Esto concluye nuestro tutorial sobre cómo configurar Gitlab en el servidor Ubuntu 18.04 usando Docker. Si tiene alguna pregunta, publíquela en los comentarios a continuación.


Ubuntu
  1. Cómo instalar Docker en Ubuntu 16.04

  2. Cómo instalar el servidor RabbitMQ en Ubuntu 18.04 y 16.04 LTS

  3. Cómo instalar el servidor Gitlab en Ubuntu 18.04 y 16.04 LTS

  4. Cómo instalar el servidor Xrdp en Ubuntu 20.04 LTS

  5. Cómo instalar Docker en Ubuntu 20.04 LTS

Cómo instalar Docker en el servidor Ubuntu 18.04 LTS

Cómo instalar Gitlab en Ubuntu 20.04 LTS

Cómo instalar WordPress con Docker en Ubuntu 16.04 LTS

Cómo instalar Docker en Ubuntu 20.04 LTS

Cómo instalar un servidor FTP en Ubuntu 20.04 LTS

Cómo instalar Wiki.js en Ubuntu 20.04 LTS