Cómo instalar Gitlab en Rocky Linux 9
GitLab Server es una versión de código abierto del control de versiones GitLab alojado en la nube que se utiliza para alojar repositorios Git. La ventaja de autoalojar tus repositorios frente al alojamiento en la nube es el control total sobre tu código. Tiene todas las funciones que puedes encontrar en el servicio en la nube, lo que lo convierte en una herramienta útil para tu equipo de desarrollo. También incluye el servicio de chat Mattermost, que permite a tus usuarios hablar entre ellos y compartir revisiones de código.
Esta guía te enseñará a instalar GitLab Server utilizando Docker en un servidor Ubuntu 22.04. GitLab ofrece dos ediciones: la edición gratuita Community y la edición de pago Enterprise. Instalaremos la edición Comunidad. Puedes actualizarla a la edición Enterprise si quieres más funciones.
Requisitos previos
- Un servidor que ejecute Rocky Linux 9 con al menos 4 GB de RAM y 4 núcleos de CPU para soportar hasta 500 usuarios.
- Un usuario no root con privilegios sudo.
- Un nombre de dominio configurado para apuntar al servidor,
gitlab.example.com
. En función de tus necesidades, también utilizaremosmattermost.example.com
, ypages.example.com
. - Todo actualizado.
$ sudo dnf update
- Pocos paquetes que necesite tu sistema.
$ sudo dnf install -y wget nano unzip yum-utils policycoreutils-python-utils
Puede que algunos de estos paquetes ya estén instalados en tu sistema.
Paso 1 – Configurar el cortafuegos
Antes de instalar ningún paquete, el primer paso es configurar el cortafuegos para abrir puertos para HTTP, y HTTPS. Rocky Linux utiliza el cortafuegos Firewalld. Comprueba el estado del cortafuegos.
$ sudo firewall-cmd --state running
El cortafuegos funciona con diferentes zonas, y la zona pública es la que utilizaremos por defecto. Enumera todos los servicios y puertos activos en el cortafuegos.
$ sudo firewall-cmd --zone=public --list-all
Debería mostrar la siguiente salida.
public target: default icmp-block-inversion: no interfaces: enp1s0 sources: services: cockpit dhcpv6-client ssh ports: protocols: forward: yes masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Abre los puertos HTTP y HTTPS en el cortafuegos.
$ sudo firewall-cmd --zone=public --add-service=http $ sudo firewall-cmd --zone=public --add-service=https
Vuelve a comprobar el estado del cortafuegos.
$ sudo firewall-cmd --zone=public --list-all
Deberías ver un resultado similar.
public target: default icmp-block-inversion: no interfaces: enp1s0 sources: services: cockpit dhcpv6-client http https ssh ports: protocols: forward: yes masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Haz que todos los cambios sean permanentes y vuelve a cargar el cortafuegos para activar los cambios.
$ sudo firewall-cmd --runtime-to-permanent $ sudo firewall-cmd --reload
Paso 2 – Instala las dependencias
Antes de instalar GitLab, es importante instalar los paquetes que GitLab necesita para funcionar correctamente. Todos estos paquetes están disponibles en el repositorio de Rocky Linux.
Ejecuta el siguiente comando para instalar las dependencias.
$ sudo dnf install -y curl policycoreutils openssh-server perl
GitLab requiere una solución de correo electrónico que funcione para enviar correos de notificación. Hay dos opciones para ello. Una de ellas es instalar Postfix. Y la segunda es utilizar un servicio SMTP externo. Si quieres optar por Postfix, instálalo con el comando que se indica a continuación.
$ sudo dnf install postfix
Durante la instalación, puede que se te pregunte por el tipo de sitio. Elige Sitio de Internet como opción para proceder y, a continuación, añade el FQDN de tu servidor para mail name
y pulsa Intro para continuar. Si ves alguna pantalla adicional, sigue pulsando la tecla Intro para elegir las opciones por defecto.
Necesitarás mucho más para configurar Postfix como servidor SMTP, cuyas instrucciones están fuera del alcance de este artículo. GitLab tiene un artículo sobre la configuración de Postfix que puedes consultar.
Paso 3 – Instalar GitLab
Descarga y ejecuta el script instalador del repositorio de GitLab.
$ curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash
Ignora la advertencia sobre la falta del paquete pygpgme
, ya que no está disponible en Rocky Linux 9.
GitLab incluye muchos paquetes que facilitan su gestión. Por ejemplo, GitLab incluye el servidor web Nginx y soporte para crear certificados SSL Let’s Encrypt.
Si especificas una URL externa para tu sitio web de GitLab durante la instalación, se configurará automáticamente y se generarán y aplicarán los certificados SSL. También puedes especificar una contraseña de administrador durante la instalación. Si no lo haces, GitLab generará una contraseña temporal que se borrará automáticamente al cabo de un día.
Especificaremos tanto la URL externa como la contraseña de administrador. Ejecuta el siguiente comando para instalar GitLab.
$ sudo GITLAB_ROOT_PASSWORD="<strongpassword>" EXTERNAL_URL="https://gitlab.example.com" dnf install -y gitlab-ee
Elige una contraseña segura para tu instalación. Aquí estamos instalando la edición GitLab Enterprise (gitlab-ee
). Si no compras y solicitas la licencia, funcionará igual que su versión gratuita Community Edition. Pero si instalas la edición Community (gitlab-ce
), entonces tendrás que instalar de nuevo la edición Enterprise para actualizar. Por tanto, te recomendamos que utilices la edición Enterprise aunque no quieras actualizarte.
Una vez finalizada la instalación, deberías obtener un resultado similar.
Notes: Default admin account has been configured with following details: Username: root Password: You didn't opt-in to print initial root password to STDOUT. NOTE: Because these credentials might be present in your log files in plain text, it is highly recommended to reset the password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password. gitlab Reconfigured! *. *. *** *** ***** ***** .****** ******* ******** ******** ,,,,,,,,,***********,,,,,,,,, ,,,,,,,,,,,*********,,,,,,,,,,, .,,,,,,,,,,,*******,,,,,,,,,,,, ,,,,,,,,,*****,,,,,,,,,. ,,,,,,,****,,,,,, .,,,***,,,, ,*,. _______ __ __ __ / ____(_) /_/ / ____ _/ /_ / / __/ / __/ / / __ `/ __ \ / /_/ / / /_/ /___/ /_/ / /_/ / \____/_/\__/_____/\__,_/_.___/ Thank you for installing GitLab! GitLab should be available at https://gitlab.example.com For a comprehensive list of configuration options please see the Omnibus GitLab readme https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md Help us improve the installation experience, let us know how we did with a 1 minute survey: https://gitlab.fra1.qualtrics.com/jfe/form/SV_6kVqZANThUQ1bZb?installation=omnibus&release=16-9 Verifying : gitlab-ee-16.9.1-ee.0.el9.x86_64 1/1 Installed: gitlab-ee-16.9.1-ee.0.el9.x86_64 Complete!
También puedes instalar una versión concreta de GitLab. Primero, comprueba la lista de versiones disponibles de GitLab.
$ sudo dnf --showduplicates list gitlab-ee*
Deberías obtener una salida similar.
Available Packages gitlab-ee.x86_64 16.0.0-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.0.1-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.0.2-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.0.3-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.0.4-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.0.5-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.0.6-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.0.7-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.0.8-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.1.0-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.1.1-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.1.2-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.1.3-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.1.4-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.1.5-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.1.6-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.2.0-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.2.1-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.2.2-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.2.3-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.2.4-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.2.5-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.2.6-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.2.7-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.2.8-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.2.9-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.3.0-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.3.1-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.3.2-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.3.3-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.3.4-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.3.5-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.3.6-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.3.7-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.4.0-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.4.1-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.4.2-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.4.3-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.4.4-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.4.5-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.5.0-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.5.1-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.5.2-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.5.3-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.5.4-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.5.6-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.5.7-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.5.8-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.6.0-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.6.1-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.6.2-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.6.4-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.6.5-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.6.6-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.6.7-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.7.0-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.7.2-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.7.3-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.7.4-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.7.5-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.7.6-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.8.0-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.8.1-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.8.2-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.8.3-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.9.0-ee.0.el9 gitlab_gitlab-ee gitlab-ee.x86_64 16.9.1-ee.0.el9 gitlab_gitlab-ee
Vamos a instalar la versión 16.7.0
.
$ sudo GITLAB_ROOT_PASSWORD="<strongpassword>" EXTERNAL_URL="https://gitlab.example.com" dnf install -y gitlab-ee-16.7.0-ee.0.el9
Comprueba el estado de GitLab y los servicios asociados.
$ sudo gitlab-ctl status
Deberías ver la siguiente salida.
run: alertmanager: (pid 6551) 1013s; run: log: (pid 6306) 1093s run: crond: (pid 6507) 1018s; run: log: (pid 5663) 1251s run: gitaly: (pid 6479) 1020s; run: log: (pid 5297) 1419s run: gitlab-exporter: (pid 6522) 1016s; run: log: (pid 6183) 1118s run: gitlab-kas: (pid 5553) 1400s; run: log: (pid 5566) 1399s run: gitlab-workhorse: (pid 6455) 1021s; run: log: (pid 5766) 1233s run: logrotate: (pid 5181) 1434s; run: log: (pid 5189) 1433s run: nginx: (pid 6470) 1021s; run: log: (pid 5806) 1227s run: node-exporter: (pid 6515) 1017s; run: log: (pid 6150) 1124s run: postgres-exporter: (pid 6563) 1013s; run: log: (pid 6351) 1087s run: postgresql: (pid 5360) 1411s; run: log: (pid 5385) 1408s run: prometheus: (pid 6532) 1016s; run: log: (pid 6268) 1100s run: puma: (pid 5666) 1247s; run: log: (pid 5673) 1246s run: redis: (pid 5227) 1428s; run: log: (pid 5236) 1427s run: redis-exporter: (pid 6524) 1016s; run: log: (pid 6233) 1110s run: registry: (pid 6480) 1020s; run: log: (pid 5956) 1165s run: sidekiq: (pid 5692) 1241s; run: log: (pid 5700) 1240s
Puedes detener e iniciar GitLab utilizando los siguientes comandos.
$ sudo gitlab-ctl stop $ sudo gitlab-ctl start
GitLab debería estar funcionando.
También puedes detener e iniciar un servicio individual utilizando los siguientes comandos.
$ sudo gitlab-ctl stop nginx $ sudo gitlab-ctl start nginx $ sudo gitlab-ctl restart nginx
Puedes acceder a tu instalación de GitLab visitando https://gitlab.example.com
en el navegador. Volveremos a configurar GitLab en pasos posteriores.
Paso 4 – Configurar SSL
GitLab almacena su configuración en el archivo /etc/gitlab/gitlab.rb
. Ábrelo para editarlo.
$ sudo nano /etc/gitlab/gitlab.rb
Localiza la sección Let's Encrypt Integration
y cambia los valores como se muestra a continuación.
letsencrypt['contact_emails'] = ['[email protected]'] # This should be an array of email addresses to add as contacts letsencrypt['auto_renew'] = true letsencrypt['auto_renew_hour'] = "12" letsencrypt['auto_renew_minute'] = "30" letsencrypt['auto_renew_day_of_month'] = "*/7"
Esto habilita Let’s Encrypt, establece el correo electrónico para recibir notificaciones de caducidad de SSL y establece que los certificados se renueven automáticamente cada 7º día del mes y cada 12:30 hora del servidor.
Habilitar Directiva DHParam
Genera un certificado de grupo Diffie-Hellman.
$ sudo openssl dhparam -dsaparam -out /etc/gitlab/ssl/dhparams.pem 4096
Establece la siguiente opción en el archivo.
nginx['ssl_dhparam'] = "/etc/gitlab/ssl/dhparams.pem" # Path to dhparams.pem, eg. /etc/gitlab/ssl/dhparams.pem
Desactivar la Seguridad de Transporte Estricta HTTP (HSTS)
Al activar HTTPS se activa automáticamente el servicio HSTS. A veces puede causar problemas cuando luego no lo necesitas. Para desactivar HSTS configura las siguientes variables.
nginx['hsts_include_subdomains'] = false
Cuando hayas terminado, guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite.
Reconfigura GitLab con la nueva configuración.
$ sudo gitlab-ctl reconfigure
Este proceso puede tardar algún tiempo en finalizar. Una vez terminado, puedes acceder a tu instalación de GitLab visitando https://gitlab.example.com
en el navegador. Aparecerá la siguiente página de acceso.
Paso 5 – Configurar SMTP
GitLab necesita enviar correos electrónicos de notificación y para ello, necesitamos habilitar la configuración SMTP para ello. Si utilizas Postfix, puedes saltarte este paso. De lo contrario, procedamos.
Abre el archivo de configuración de GitLab para editarlo.
$ sudo nano /etc/gitlab/gitlab.rb
Utilizaremos Amazon SES para nuestro tutorial. Busca la sección SMTP en el archivo y establece los valores como se muestra a continuación.
gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "email-smtp.region-1.amazonaws.com" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "IAMmailerKey" gitlab_rails['smtp_password'] = "IAMmailerSecret" gitlab_rails['smtp_domain'] = "example.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true # If your SMTP server does not like the default 'From: gitlab@localhost' you # can change the 'From' with this setting. gitlab_rails['gitlab_email_from'] = '[email protected]' gitlab_rails['gitlab_email_display_name'] = 'Howtoforge GitLab' gitlab_rails['gitlab_email_reply_to'] = '[email protected]'
Puedes activar la agrupación de conexiones SMTP configurando la siguiente opción.
gitlab_rails['smtp_pool'] = true
Esto permite a los trabajadores de Sidekiq reutilizar las conexiones SMTP para múltiples trabajos.
Cuando hayas terminado, guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite.
También puedes cifrar los datos de autenticación SMTP. Ejecuta el siguiente comando.
sudo gitlab-rake gitlab:smtp:secret:edit EDITOR=nano
Introduce el nombre de usuario y la contraseña SMTP en el archivo como se muestra.
user_name: 'smtp user' password: 'smtp password'
Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite.
Elimina las variables gitlab_rails['smtp_user_name'], and gitlab_rails['smtp_password']
del /etc/gitlab/gitlab.rb
.
Una vez que hayas finalizado la configuración SMTP, vuelve a configurar los Ajustes de GitLab.
$ sudo gitlab-ctl reconfigure
Paso 6 – Configurar Nginx
El servidor Nginx incorporado en GitLab puede configurarse ampliamente. Vamos a repasar algunas de las opciones importantes.
Abre el archivo de configuración de GitLab para editarlo.
$ sudo nano /etc/gitlab/gitlab.rb
Redirige HTTP a HTTPS.
Cambia los siguientes valores para redirigir automáticamente los enlaces HTTP a HTTPS.
nginx['redirect_http_to_https'] = true
Configuración de la cabecera Referrer-Policy
Por defecto, GitLab establece la cabecera Referrer-Policy
en strict-origin-when-cross-origin
en todas las respuestas. Configura la siguiente variable para establecer este encabezado a un valor diferente.
nginx['referrer_policy'] = 'same-origin'
Insertar ajustes personalizados de Nginx en el bloque del servidor de GitLab
Utiliza la siguiente variable para insertar ajustes personalizados en el bloque del servidor de GitLab.
# Example: block raw file downloads from a specific repository nginx['custom_gitlab_server_config'] = "location ^~ /foo-namespace/bar-project/raw/ {\n deny all;\n}\n"
Insertar ajustes personalizados en la configuración de Nginx
Utiliza la siguiente configuración para insertar ajustes personalizados.
# Example: include a directory to scan for additional config files nginx['custom_nginx_config'] = "include /etc/gitlab/nginx/sites-enabled/*.conf;"
Crea el directorio /etc/gitlab/nginx/sites-available
.
$ sudo mkdir /etc/gitlab/nginx/sites-available
Crea en él el archivo del bloque.
$ sudo touch /etc/gitlab/nginx/sites-enabled/example.conf
Edítalo y añade tus ajustes.
$ sudo nano /etc/gitlab/nginx/sites-enabled/example.conf
Cuando hayas terminado, vuelve al terminal y ejecuta el siguiente comando para crear el directorio /etc/gitlab/nginx/sites-enabled
.
$ sudo mkdir /etc/gitlab/nginx/sites-enabled
Ejecuta el siguiente comando para crear un enlace simbólico.
sudo ln -s /etc/gitlab/nginx/sites-available/example.conf /etc/gitlab/nginx/sites-enabled/example.conf
Cuando hayas terminado de configurar Nginx, guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite.
Vuelve a configurar los ajustes de GitLab.
$ sudo gitlab-ctl reconfigure
Paso 7 – Habilitar el Registro de Contenedores
El registro de contenedores se habilita automáticamente y está disponible en tu dominio de GitLab, puerto 5050 si utilizas la integración Let’s Encrypt incorporada.
Abre el archivo de configuración de GitLab.
$ sudo nano /etc/gitlab/gitlab.rb
Establece la URL externa para tu registro de contenedores de GitLab.
registry_external_url 'https://gitlab.example.com:5050'
Establece la redirección HTTP a HTTPS añadiendo la siguiente línea debajo de la anterior.
registry_nginx['redirect_http_to_https'] = true
Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite.
Reconfigura la configuración de GitLab.
$ sudo gitlab-ctl reconfigure
Abre el puerto 2425 en el cortafuegos.
$ sudo firewall-cmd --zone=public --add-port=5050/tcp $ sudo firewall-cmd --runtime-to-permanent $ sudo firewall-cmd --reload
Valídalo utilizando el siguiente comando.
$ openssl s_client -showcerts -servername gitlab.example.com -connect gitlab.example.com:5050 > cacert.pem
Deberías poder iniciar sesión en el registro de contenedores desde Docker con tus credenciales de GitLab utilizando el siguiente comando.
$ docker login gitlab.example.com:5050
Puedes utilizar una URL diferente como https://registry.gitlab.example.com
para tu registro de contenedores, lo que requerirá una configuración adicional. También puedes configurar el almacenamiento S3 para los contenedores. Consulta la documentación del Registro de Contenedores de GitLab para ver las instrucciones.
Paso 8 – Habilitar las Páginas de GitLab
Necesitas tener un dominio que no sea un subdominio de la URL de GitLab. Para nuestros propósitos, utilizaremos https://pages.example.com
para alojar las páginas de GitLab. También vamos a suponer que no utilizamos DNS comodín.
Abre el archivo de configuración de GitLab.
$ sudo nano /etc/gitlab/gitlab.rb
Configura las siguientes variables como se muestra.
pages_external_url 'https://pages.example.com' ..... # Experimental - Enable namespace in path gitlab_pages["namespace_in_path"] = true
Configura Nginx para las páginas de GitLab en la sección GitLab Pages NGINX
.
# Below you can find settings that are exclusive to "GitLab Pages NGINX" pages_nginx['enable'] = true pages_nginx['redirect_http_to_https'] = true pages_nginx['ssl_certificate'] = "/etc/letsencrypt/live/pages.example.com/fullchain.pem" pages_nginx['ssl_certificate_key'] = "/etc/letsencrypt/live/pages.example.com/privkey.pem"
Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite.
Vuelve a configurar los ajustes de GitLab.
$ sudo gitlab-ctl reconfigure
Si quieres alojar un dominio basado en DNS Wildcard, consulta la documentación de GitLab Pages.
Paso 9 – Habilitar MatterMost
Mattermost es un servicio de chat online de código abierto con funciones como compartir archivos, emojis, GIFs, soporte para markdown, resaltado de sintaxis y soporte multilingüe. GitLab incluye MatterMost, que puedes habilitar para que los usuarios de la empresa que compartan la instancia de GitLab puedan comunicarse entre sí.
GitLab Mattermost está desactivado por defecto. Para activarlo, abre el archivo de configuración de GitLab.
$ sudo nano /etc/gitlab/gitlab.rb
Añade la URL externa de Mattermost. GitLab generará automáticamente el SSL para la URL utilizando Let’s Encrypt.
mattermost_external_url 'https://mattermost.example.com'
Asegúrate de que el ajuste de configuración HTTP a HTTPS para Mattermost está establecido en true añadiendo la siguiente línea.
mattermost_nginx['redirect_http_to_https'] = true
Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite.
Vuelve a configurar los ajustes de GitLab.
$ sudo gitlab-ctl reconfigure
Deberías poder acceder a Mattermost a través de https://mattermost.example.com
. Deberías ver la siguiente página cuando inicies la URL.
Si tienes instalada la aplicación Mattermost, selecciona el botón Ver en la aplicación de escritorio o elige la opción Ver en el navegador. Asegúrate de marcar la opción Recordar mis preferencias para que no se te vuelva a preguntar. Volveremos a configurar Mattermost en el siguiente paso.
Configurar SMTP para Mattermost
Mattermost almacena su configuración en el archivo /var/opt/gitlab/mattermost/config.json
. Ábrelo para editarlo.
$ sudo nano /var/opt/gitlab/mattermost/config.json
Busca la sección "EmailSettings"
y configúrala como se muestra. Los campos FeedbackEmail
, ReplyToAddress
, EnableSMTPAuth
, SMTPUsername
, SMTPPassword
, SMTPServer
, SMTPPort
, ConnectionSecurity
, y SkipServerCertificateVerification
son los que necesitamos configurar para que funcione.
"EmailSettings": { "EnableSignUpWithEmail": true, "EnableSignInWithEmail": true, "EnableSignInWithUsername": true, "SendEmailNotifications": true, "UseChannelInEmailNotifications": false, "RequireEmailVerification": false, "FeedbackName": "Howtoforge Mattermost", "FeedbackEmail": "[email protected]", "ReplyToAddress": "[email protected]", "FeedbackOrganization": "", "EnableSMTPAuth": true, "SMTPUsername": "AmazonSESUsername", "SMTPPassword": "AmazonSESPassword", "SMTPServer": "email-smtp.us-west-2.amazonaws.com", "SMTPPort": "465", "SMTPServerTimeout": 10, "ConnectionSecurity": "TLS", "SendPushNotifications": true, "PushNotificationServer": "https://push-test.mattermost.com", "PushNotificationContents": "full", "PushNotificationBuffer": 1000, "EnableEmailBatching": false, "EmailBatchingBufferSize": 256, "EmailBatchingInterval": 30, "EnablePreviewModeBanner": false, "SkipServerCertificateVerification": true, "EmailNotificationContentsType": "full", "LoginButtonColor": "#0000", "LoginButtonBorderColor": "#2389D7", "LoginButtonTextColor": "#2389D7" },
Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida.
Paso 10 – Acceder y configurar GitLab Web
Acceder a GitLab
Abre la URL https://gitlab.example.com
en tu navegador y obtendrás la siguiente pantalla de acceso.
Introduce root
como nombre de usuario y la contraseña que has obtenido en el paso anterior para acceder a tu panel de control de GitLab. Al iniciar sesión, accederás a la siguiente pantalla del panel de control.
Como puedes ver, GitLab ya ha creado un proyecto para monitorizar la instancia.
Apagar GitLab para mantenimiento
Si quieres poner tu instancia de GitLab en mantenimiento mientras realizas tareas de servidor, utiliza el siguiente comando.
$ sudo gitlab-ctl deploy-page up cp /opt/gitlab/embedded/service/gitlab-rails/public/deploy.html /opt/gitlab/embedded/service/gitlab-rails/public/index.html
Cuando un usuario visite el sitio web de GitLab, aparecerá la página Deploy in progress
.
Para eliminar la página, ejecuta el siguiente comando.
$ sudo gitlab-ctl deploy-page down
Si quieres que los proyectos sean de sólo lectura, ejecuta el siguiente comando para abrir una consola Rails.
$ sudo gitlab-rails console
Tendrá el siguiente aspecto.
-------------------------------------------------------------------------------- Ruby: ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] GitLab: 16.9.2-ee (0d71d32d321) EE GitLab Shell: 14.33.0 PostgreSQL: 14.10 ------------------------------------------------------------[ booted in 78.60s ] Loading production environment (Rails 7.0.8) irb(main):001:0>
Establece todos los proyectos como de sólo lectura utilizando el siguiente comando.
Project.all.find_each { |project| project.update!(repository_read_only: true) }
Sal de la consola escribiendo exit
. Para revertir los proyectos a un estado normal, utiliza el siguiente comando en la consola.
Project.all.find_each { |project| project.update!(repository_read_only: false) }
Restringir las inscripciones públicas
Por defecto, cualquiera puede crear una cuenta y obtener acceso. Si no lo deseas, puedes desactivarlo. Afortunadamente, la configuración para ello se muestra en forma de pantalla emergente en el panel de control. Haz clic en el botón Desactivar para restringir los registros públicos en tu instancia de GitLab. Al hacerlo, se te redirigirá a la siguiente página de configuración.
Desmarca la opción Registro habilitado para restringirlos. Pulsa el botón Guardar cambios para aplicar la configuración.
En caso de que no veas la ventana emergente en tu panel de control, puedes acceder a la página de configuración pulsando el botón Área de administración en el menú inferior izquierdo.
Una vez dentro del panel de administración, pasa el ratón por encima de la opción Configuración de la barra lateral izquierda y haz clic en el submenú General. Desde ahí podrás acceder al panel de restricciones de registro.
Configurar el perfil de GitLab
Tu perfil por defecto es bastante soso y no tiene nada que mostrar. Para cambiarlo, haz clic en el icono de usuario de la esquina superior izquierda para que aparezca el menú desplegable y selecciona la opción Editar perfil.
Accederás a la página Configuración del perfil, donde podrás añadir tu nombre, correo electrónico y otra información sobre ti. Haz clic en Actualizar configuración del perfil cuando hayas terminado. No vuelvas a la página principal, ya que tenemos algunas cosas más que configurar aquí.
Cambiar la contraseña raíz
Este es uno de los pasos más importantes. Debes cambiar tu contraseña raíz por defecto inmediatamente. En versiones anteriores, GitLab te pedía que la cambiaras como parte de la instalación, pero ahora lo ha hecho opcional. Para cambiar tu contraseña, haz clic en el menú Contraseña de la barra lateral izquierda.
Introduce los datos de tu contraseña y haz clic en Guardar contraseña para realizar el cambio. Saldrás de tu instancia y tendrás que volver a iniciar sesión.
Cambiar el nombre de usuario y activar la autenticación de dos factores
Puedes cambiar tu nombre de usuario predeterminado de GitLab de root
a cualquier otro de tu elección. Para ello, haz clic en el menú Cuenta de la barra lateral izquierda.
Una vez en la página, introduce tu nuevo nombre de usuario y haz clic en el botón Actualizar nombre de usuario para realizar el cambio. Se te volverá a pedir confirmación. Pulsa de nuevo el botón Actualizar nombre de usuario para confirmar el cambio.
También deberías habilitar aquí la autenticación de dos factores para mejorar la seguridad de tu cuenta.
Desactiva las Métricas de Prometheus y mejora la Privacidad
En el paso anterior, hablamos de aumentar el tamaño de la memoria compartida para el droplet y mantenerlo en un mínimo de 256 MB. Se necesita principalmente para almacenar en el disco los datos relacionados con las métricas de Prometheus. Si no la utilizas, debes desactivarla. Sólo puedes hacerlo después de la instalación. Para desactivarla, abre el Panel de Administración desde la barra de menús.
Una vez dentro del Panel de Administración, abre la opción de menú Configuración >> Métricas y perfiles.
En la página Métricas, despliega la sección Métricas – Prometheus y desmarca la opción Habilitar punto final de métricas de salud y rendimiento. Haz clic en el botón Guardar cambios para aplicar el cambio.
GitLab también recopila información de uso de cada instalación. Si valoras la privacidad y no quieres que esto ocurra, despliega la opción Estadísticas de uso en la misma página y desmarca la opción Activar Ping de servicio. Haz clic en el botón Guardar cambios para aplicar el cambio.
Configurar Mattermost
Abre la URL https://mattermost.example.com
y accederás a la siguiente página de inicio de sesión.
Haz clic en el botón GitLab para registrarte. Esto integrará tu cuenta de Mattermost con tu cuenta de GitLab. Accederás a la página de inicio de sesión de GitLab, donde deberás introducir tus credenciales y hacer clic en el botón Iniciar sesión para continuar. Accederás a la página Autorizar que se muestra a continuación.
Haz clic en el botón Autorizar para continuar. Volverás a la aplicación Mattermost, que te pedirá el nombre de tu organización.
Introduce el nombre de tu organización y haz clic en la página Continuar. A continuación, se te preguntará qué herramientas utilizas en tu trabajo.
Haz clic en el icono de GitLab y luego en el botón Continuar para continuar. Siempre puedes añadir otras herramientas más adelante. A continuación, se te pedirá que invites a los miembros de tu equipo y se te proporcionará un enlace de invitación.
Guarda el enlace para más tarde y haz clic en Finalizar la instalación para terminar la instalación de Mattermost. Accederás al panel de control de Mattermost, desde donde podrás empezar a utilizarlo.
Sólo se autoriza el uso de GitLab para iniciar sesión en la instancia de Mattermost. La instancia de Mattermost viene con un plugin de GitLab preinstalado que puede enviar confirmaciones y notificaciones desde tu repositorio a tu instancia de Mattermost. También tenemos que configurarlo.
Visita GitLab >> Página Editar Perfil y selecciona el menú Aplicaciones de la barra lateral izquierda. Deberías ver tu aplicación de inicio de sesión Mattermost existente ya registrada.
Haz clic en el botón Añadir nueva aplicación para crear otra aplicación para el plugin de GitLab.
Dale un nombre al proyecto. Establece https://mattermost.example.com/plugins/com.github.manland.mattermost-plugin-gitlab/oauth/complete
como URI de redirección. Marca las opciones Confidencial, api y read_user. Haz clic en el botón Guardar aplicación en la parte inferior de la página para finalizar.
Accederás a la siguiente página. Copia y guarda el ID de la aplicación y el Secreto de la aplicación, que necesitarás más adelante. El Secreto de Solicitud sólo se mostrará una vez, así que asegúrate de ello.
Haz clic en el botón Continuar para terminar.
Abre tu sitio Mattermost y haz clic en el botón superior izquierdo para que aparezca el siguiente menú emergente.
Haz clic en el botón App Marketplace para abrir la siguiente ventana emergente.
Haz clic en el botón Configurar contra el plugin de GitLab para continuar.
Introduce la URL de GitLab, el ID de cliente OAuth y el secreto de cliente OAuth generados anteriormente, y haz clic en el botón Guardar para finalizar.
Ahora cada usuario debe conectar su cuenta de GitLab en Mattermost. Visita el canal de GitLab en Mattermost y escribe el siguiente comando para iniciar /gitlab connect
y pulsa la tecla intro y obtendrás el siguiente mensaje.
Haz clic en el botón Conectar y accederás a una nueva página en la que se te pedirá que autorices la conexión. Haz clic en Conectar y volverás a la página de Mattermost y deberías ver el siguiente mensaje confirmando la conexión.
Paso 11 – Crear tu primer proyecto
Intentemos crear nuestro primer proyecto y enviar un commit.
Añadir tu clave SSH
Antes de seguir adelante, debemos añadir nuestra clave SSH. Esto nos permite interactuar con nuestra instalación sin utilizar contraseñas. Si tienes una clave SSH, puedes saltarte el siguiente comando. Si no la tienes, puedes crear una utilizando el siguiente comando.
$ ssh-keygen -t ed25519 -C "gitlab.example.com"
Este comando es común a macOS, Linux y Git Bash/WSL en Windows. Acepta los valores predeterminados e introduce una frase de contraseña segura. Vamos a crear las claves SSH en el Terminal Powershell de Windows.
Generating public/private rsa key pair. Generating public/private ed25519 key pair. Enter file in which to save the key (C:\Users\<username>/.ssh/id_ed25519): Enter same passphrase again: Your identification has been saved in C:\Users\<username>/.ssh/id_ed25519. Your public key has been saved in C:\Users\<username>/.ssh/id_ed25519.pub. SHA256:CI3Ja1LSTN+j4LQnDYkAoP+DvZB8SWrD26zDyUBRbUY gitlab.example.com +--[ED25519 256]--+ |* ..+E | |. + / o o | | o = B o . | |. o B = S | |.o X + | | +X.* | | .=B o | +----[SHA256]-----+
Añade la identidad de la clave privada al agente de autenticación SSH. Asegúrate de que se está ejecutando el servicio Agente de autenticación OpenSSH si estás en Windows. Si estás en Linux o macOS, ejecuta el siguiente comando.
$ eval $(ssh-agent -s)
Añade la clave.
$ ssh-add C:\Users\<username>/.ssh/id_ed25519
En Linux y macOS, el comando cambiará a
$ ssh-add ~/.ssh/id_ed25519
Se te pedirá la frase de contraseña. Introdúcela y se añadirá la clave.
A continuación, tenemos que guardar esta configuración en el archivo ~/.ssh/config
. En Windows, será el directorio C:\Users\<username>\.ssh
. Pega el siguiente código al final del archivo.
Host gitlab.example.com PreferredAuthentications publickey IdentityFile ~/.ssh/id_ed25519
En este archivo, el nombre de la ruta seguirá siendo el mismo en todos los sistemas operativos. Guarda el archivo.
A continuación, tenemos que copiar la clave pública en nuestra cuenta de GitLab. Puedes mostrar tu clave pública mediante el siguiente comando. De nuevo, el nombre de la ruta funcionará en todos los sistemas operativos.
$ cat ~/.ssh/id_ed25519.pub
Obtendrás un resultado similar.
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGCEIN84O/9tcvE5wsTswY76xeJyY7TwkMW6uCvYulm1 gitlab.example.com
Abre la configuración de tu perfil en GitLab y selecciona el menú Claves SS H de la barra lateral izquierda.
Pega la clave SSH en la casilla correspondiente y haz clic en Añadir Clave para continuar. Se te dará una fecha de caducidad por defecto. Puedes cambiarla según tus necesidades.
A continuación, tenemos que comprobar si nuestra conexión SSH funciona correctamente. Ejecuta el siguiente comando en el terminal de tu PC.
$ ssh -T [email protected]
Obtendrás una salida similar. En primer lugar, se te pedirá que añadas la clave SSH a la lista de hosts conocidos de tu sistema. Escribe «Sí» para continuar. A continuación, obtendrás un mensaje de éxito confirmando la conexión a tu instancia de GitLab.
The authenticity of host 'gitlab.example.com (178.62.213.105)' can't be established. ECDSA key fingerprint is SHA256:x1647s5G1iL/cnRFoBuE6qzRZF775fVLZzcLJTGaIvQ. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'gitlab.example.com,178.62.213.105' (ECDSA) to the list of known hosts. Welcome to GitLab, @navjot!
Ahora, podemos pasar a crear nuestro primer repositorio y hacer algunas confirmaciones.
Crear un proyecto
Cada repositorio en GitLab pertenece a un proyecto. Un proyecto incluye un repositorio, un gestor de incidencias, solicitudes de fusión, wiki, integración continua, canalizaciones de entrega continua (CI/CD) y muchas otras características.
Para crear tu primer repositorio, haz clic en la sección Crear un proyecto de tu página de inicio.
Accederás a la página Nuevo proyecto, donde se te darán varias opciones sobre cómo crear un nuevo proyecto.
Selecciona la opción Crear proyecto en blanco para continuar. En la página siguiente, introduce el Nombre del proyecto. Selecciona tu nombre de usuario en el menú desplegable de la opción URL del Proyecto en el cuadro Elige un grupo o espacio de nombres. Establece el slug de tu Proyecto si quieres cambiar el que viene por defecto. Cambia el Nivel de Visibilidad del proyecto según tus necesidades. Puedes Inicializar tu repositorio con un archivo README
. Si quieres que GitLab analice tu código en busca de vulnerabilidades de seguridad, marca la opción Activar SAST.
Cuando hayas terminado, haz clic en Crear proyecto para finalizar. Accederás a la página de tu repositorio con un único archivo README.md
en blanco.
Ahora que nuestro repositorio está activo, vamos a intentar añadir un registro de cambios desde la línea de comandos. Introduce los siguientes comandos en tu ordenador para crear un archivo CHANGELOG
y enviarlo a tu repositorio. Asegúrate de que tienes Git instalado en tu ordenador.
El primer paso es clonar el repositorio. Puedes clonar utilizando SSH o HTTPS. Clona utilizando SSH. Se te pedirá la contraseña.
$ git clone [email protected]:user/howtoforge-test.git
Deberías ver una salida similar.
Cloning into 'howtoforge-test'... Enter passphrase for key '/c/Users/navjo/.ssh/id_ed25519': remote: Enumerating objects: 3, done. remote: Counting objects: 100% (3/3), done. remote: Compressing objects: 100% (2/2), done. remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 Receiving objects: 100% (3/3), done.
Introduce el resto de los comandos para crear y enviar el archivo 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" [main d6c7a9c] add Changelog 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 CHANGELOG $ git push -u origin main Enter passphrase for key '/c/Users/navjo/.ssh/id_ed25519': Enumerating objects: 4, done. Counting objects: 100% (4/4), done. Delta compression using up to 4 threads Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 958 bytes | 958.00 KiB/s, done. Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 To gitlab.example.com:navjot/howtoforge-test.git 523db9a..d6c7a9c main -> main branch 'main' set up to track 'origin/main'.
Se te pedirá de nuevo la contraseña durante el comando push.
Vuelve a la página de tu proyecto en GitLab y verás el archivo CHANGELOG
en ella. ¡Enhorabuena! Has creado con éxito tu primer proyecto y le has enviado un archivo.
Con esto terminamos nuestro primer proyecto GitLab.
Paso 12 – Copia de seguridad de GitLab
GitLab proporciona una interfaz de línea de comandos para hacer copias de seguridad de toda tu instancia, incluyendo la base de datos, los archivos adjuntos, los datos del repositorio, los artefactos de los trabajos de CI/CD, los registros de salida de los trabajos de CI/CD, los objetos LFS, los estados de Terraform, las imágenes del registro de Contenedores, el contenido de las Páginas de GitLab, los paquetes, los fragmentos, las wikis de grupo, los diffs de las solicitudes de fusión y los archivos seguros a nivel de proyecto.
Las copias de seguridad no incluyen los datos de Mattermost, los datos de Redis, los trabajos de Sidekiq y el almacenamiento de objetos.
Ejecuta el siguiente comando para realizar la copia de seguridad.
$ sudo gitlab-backup create STRATEGY=copy
La opción STRATEGY=copy
es para evitar errores en caso de que los datos cambien rápidamente. Esto copia los datos en una ubicación temporal y evita posibles errores.
Deberías ver una salida similar.
2024-03-07 11:48:37 UTC -- Dumping database ... Dumping PostgreSQL database gitlabhq_production ... [DONE] 2024-03-07 11:48:45 UTC -- Dumping database ... done 2024-03-07 11:48:45 UTC -- Dumping repositories ... {"command":"create","gl_project_path":"navjot/howtoforge-test","level":"info","msg":"started create","pid":107325,"relative_path":"@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.git","storage_name":"default","time":"2024-03-07T11:48:45.720Z"} {"command":"create","gl_project_path":"navjot/howtoforge-test","level":"info","msg":"completed create","pid":107325,"relative_path":"@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.git","storage_name":"default","time":"2024-03-07T11:48:45.772Z"} {"command":"create","gl_project_path":"navjot/howtoforge-test.wiki","level":"info","msg":"started create","pid":107325,"relative_path":"@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.wiki.git","storage_name":"default","time":"2024-03-07T11:48:45.874Z"} {"command":"create","gl_project_path":"navjot/howtoforge-test.wiki","level":"info","msg":"completed create","pid":107325,"relative_path":"@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.wiki.git","storage_name":"default","time":"2024-03-07T11:48:45.894Z"} 2024-03-07 11:48:45 UTC -- Dumping repositories ... done 2024-03-07 11:48:45 UTC -- Dumping uploads ... 2024-03-07 11:48:46 UTC -- Dumping uploads ... done 2024-03-07 11:48:46 UTC -- Dumping builds ... 2024-03-07 11:48:46 UTC -- Dumping builds ... done 2024-03-07 11:48:46 UTC -- Dumping artifacts ... 2024-03-07 11:48:46 UTC -- Dumping artifacts ... done 2024-03-07 11:48:46 UTC -- Dumping pages ... 2024-03-07 11:48:46 UTC -- Dumping pages ... done 2024-03-07 11:48:46 UTC -- Dumping lfs objects ... 2024-03-07 11:48:46 UTC -- Dumping lfs objects ... done 2024-03-07 11:48:46 UTC -- Dumping terraform states ... 2024-03-07 11:48:46 UTC -- Dumping terraform states ... done 2024-03-07 11:48:46 UTC -- Dumping container registry images ... 2024-03-07 11:48:46 UTC -- Dumping container registry images ... done 2024-03-07 11:48:46 UTC -- Dumping packages ... 2024-03-07 11:48:46 UTC -- Dumping packages ... done 2024-03-07 11:48:46 UTC -- Dumping ci secure files ... 2024-03-07 11:48:46 UTC -- Dumping ci secure files ... done 2024-03-07 11:48:46 UTC -- Creating backup archive: 1709812117_2024_03_07_16.9.1-ee_gitlab_backup.tar ... 2024-03-07 11:48:46 UTC -- Creating backup archive: 1709812117_2024_03_07_16.9.1-ee_gitlab_backup.tar ... done 2024-03-07 11:48:46 UTC -- Uploading backup archive to remote storage ... [SKIPPED] 2024-03-07 11:48:46 UTC -- Deleting old backups ... [SKIPPED] 2024-03-07 11:48:46 UTC -- Deleting tar staging files ... 2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/backup_information.yml 2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/db 2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/repositories 2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/uploads.tar.gz 2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/builds.tar.gz 2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/artifacts.tar.gz 2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/pages.tar.gz 2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/lfs.tar.gz 2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/terraform_state.tar.gz 2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/registry.tar.gz 2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/packages.tar.gz 2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/ci_secure_files.tar.gz 2024-03-07 11:48:46 UTC -- Deleting tar staging files ... done 2024-03-07 11:48:46 UTC -- Deleting backups/tmp ... 2024-03-07 11:48:46 UTC -- Deleting backups/tmp ... done 2024-03-07 11:48:46 UTC -- Warning: Your gitlab.rb and gitlab-secrets.json files contain sensitive data and are not included in this backup. You will need these files to restore a backup. Please back them up manually. 2024-03-07 11:48:46 UTC -- Backup 1709812117_2024_03_07_16.9.1-ee is done. 2024-03-07 11:48:46 UTC -- Deleting backup and restore PID file ... done
Tu archivo de copia de seguridad se almacena en el directorio /var/opt/gitlab/backups
.
$ sudo ls /var/opt/gitlab/backups 1709812117_2024_03_07_16.9.1-ee_gitlab_backup.tar
Como se menciona en la salida, tu configuración y secretos de GitLab no se incluyen en la copia de seguridad. Copia estos archivos manualmente en una ubicación segura para su restauración.
Cópialos.
$ sudo cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab-secrets.json /var/opt/gitlab/backups
Puedes configurar cron para que realice copias de seguridad diarias.
Abre el crontab para el usuario root
.
$ sudo su - $ EDITOR = nano crontab -e
Añádele la siguiente línea.
0 2 * * * /opt/gitlab/bin/gitlab-backup create CRON=1
Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite.
La opción CRON=1
sirve para ocultar toda la salida si no hay errores. Esto ayuda a limitar el spam del cron. Sin embargo, si estás depurando, sustituye CRON=1
por --trace
para hacer un registro más detallado.
Puedes consultar la documentación oficial sobre copias de seguridad de GitLab para ver más opciones y cómo asegurarte de que tus copias de seguridad se copian automáticamente a un servicio compatible con S3.
Paso 13 – Restaurar GitLab
Antes de restaurar GitLab, asegúrate de que cumples los siguientes requisitos.
- La versión y edición de GitLab debe coincidir con aquella de la que se tomó la copia de seguridad.
- Has ejecutado el comando
sudo gitlab-ctl reconfigure
al menos una vez. - GitLab debe estar en ejecución.
- Los secretos de GitLab y la configuración deben estar restaurados.
$ sudo cp gitlab.rb gitlab-secrets.json /etc/gitlab
Copia el archivo de copia de seguridad en el directorio /var/opt/gitlab/backups
.
$ sudo cp 1709812117_2024_03_07_16.9.1-ee_gitlab_backup.tar /var/opt/gitlab/backups/
Establece los permisos correctos.
$ sudo chown git:git /var/opt/gitlab/backups/1709812117_2024_03_07_16.9.1-ee_gitlab_backup.tar
Detén los procesos que estén conectados a la base de datos. Puedes dejar el resto de GitLab funcionando como de costumbre.
$ sudo gitlab-ctl stop puma $ sudo gitlab-ctl stop sidekiq
Verifica los procesos.
$ sudo gitlab-ctl status run: alertmanager: (pid 68055) 76797s; run: log: (pid 66127) 78476s run: crond: (pid 68045) 76798s; run: log: (pid 65624) 78566s run: gitaly: (pid 66424) 78414s; run: log: (pid 65273) 78710s run: gitlab-exporter: (pid 66466) 78411s; run: log: (pid 66002) 78497s run: gitlab-kas: (pid 65535) 78691s; run: log: (pid 65547) 78690s run: gitlab-pages: (pid 68003) 76801s; run: log: (pid 67700) 76996s run: gitlab-workhorse: (pid 66392) 78415s; run: log: (pid 65727) 78550s run: logrotate: (pid 106163) 3124s; run: log: (pid 65169) 78724s run: mattermost: (pid 68027) 76799s; run: log: (pid 67820) 76890s run: nginx: (pid 72647) 75588s; run: log: (pid 65781) 78544s run: node-exporter: (pid 66458) 78411s; run: log: (pid 65968) 78505s run: postgres-exporter: (pid 66505) 78407s; run: log: (pid 66162) 78470s run: postgresql: (pid 65341) 78702s; run: log: (pid 65362) 78699s run: prometheus: (pid 66476) 78410s; run: log: (pid 66070) 78483s down: puma: 14s, normally up; run: log: (pid 65649) 78562s run: redis: (pid 65207) 78719s; run: log: (pid 65216) 78718s run: redis-exporter: (pid 66468) 78410s; run: log: (pid 66034) 78490s run: registry: (pid 66414) 78414s; run: log: (pid 65864) 78528s down: sidekiq: 5s, normally up; run: log: (pid 65681) 78554s
Restaura la copia de seguridad. Asegúrate de lo que estás haciendo, ya que sobrescribirá tu base de datos. No necesitas dar el nombre completo del archivo en el comando. Sólo la parte anterior a -ee_gitlab_backup.tar
del nombre del archivo.
$ sudo gitlab-backup restore BACKUP=1709812117_2024_03_07_16.9.1-ee
Esto debería restaurar tu instalación de GitLab correctamente.
Paso 14 – Actualizar GitLab
Crea una copia de seguridad antes de actualizar GitLab. Actualizar GitLab es tan sencillo como ejecutar el comando sudo dnf update
.
$ sudo dnf update
Es seguro realizar actualizaciones menores de esta forma.
DigitalOcean Agent 40 kB/s | 3.3 kB 00:00 DigitalOcean Droplet Agent 44 kB/s | 3.3 kB 00:00 gitlab_gitlab-ee 1.4 kB/s | 1.0 kB 00:00 gitlab_gitlab-ee-source 1.2 kB/s | 951 B 00:00 Dependencies resolved. ======================================================================================================================== Package Architecture Version Repository Size ======================================================================================================================== Upgrading: gitlab-ee x86_64 16.9.2-ee.0.el9 gitlab_gitlab-ee 1.1 G Transaction Summary ======================================================================================================================== Upgrade 1 Package Total download size: 1.1 G Is this ok [y/N]: y
Escribe y
y pulsa Enter
para iniciar la actualización. En el caso de las versiones mayores, antes de realizar la actualización debes comprobar si se han producido cambios de última hora.
El sitio dejará de estar disponible mientras se realiza la actualización o aparecerá un mensaje Deploy in progress
en el navegador.
Una vez completada la actualización, realiza la siguiente comprobación posterior a la actualización para asegurarte de que todo funciona correctamente.
- Comprueba la configuración general.
$ sudo gitlab-rake gitlab:check
- Confirma que los valores encriptados de la base de datos pueden desencriptarse.
$ sudo gitlab-rake gitlab:doctor:secrets
- Comprueba si los usuarios pueden iniciar sesión, si la lista de proyectos es visible, si se puede acceder a las incidencias del proyecto y a las solicitudes de fusión, si los usuarios pueden clonar repositorios y si pueden enviar confirmaciones a GitLab en la interfaz de usuario de GitLab.
- Para GitLab CI/CD, comprueba que los ejecutores pueden recoger trabajos y que el registro Docker funciona.
Conclusión
Con esto concluye nuestro tutorial, en el que has aprendido a instalar y configurar GitLab en un servidor Rocky Linux 9. También has creado tu primer proyecto y le has confirmado un archivo desde tu PC. Si tienes alguna pregunta, publícala en los comentarios a continuación.