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.