Instalando GitLab en Raspberry Pi 4

banner_PostGitLab_Rpi4.png

En esta entrada, se procede a instalar nuestro propio servidor Git con GitLab en una Raspberry Pi 4 a la que anteriormente se le agregó un HDD de 1Tb que sería destinado para GitLab.

La intención es prescindir de servicios de terceros en la mayor parte de lo posible y poder controlar el acceso a dicha información, ya que la unica forma de acceder a esta, sería estando en la red interna o a través de la VPN que fue instalada en una entrada anterior.



Índice

  1. Introducción
  2. Instalar GitLab
  3. Configurar GitLab
    3.1. Configurar Acceso HTTP
    3.2. Configurar Acceso HTTPS
    3.3 Configurar Ruta de Almacenamiento de Repositorios
  4. Crear Usuario en GitLab
  5. Generar e Importar Claves SSH en GitLab
    5.1. Crear clave SSH en Linux
    5.2. Agregar la Clave SSH a GitLab
  6. Crear Repositorio en GitLab




1. Introducción

GitLab ofrece un portal Web muy parecido al de Github que nos ayuda a gestionar fácilmente nuestro servidor Git.

gitlab_principal.png


Para realizar esta instalación se han utilizado las instrucciones de la página oficial de Gitlab para la RaspberryPi:

2. Instalar GitLab

Para comenzar la instalación de GitLab en la RaspberryPi 4:

  • Iniciamos sesión en Raspberry, ya sea por SSH, VNC, RDP o directamente desde el dispositivo. ssh_rpi.png


  • Instalamos las dependencias necesarias, abrimos un terminal en la Raspberry y ejecutamos:
    sudo apt-get install curl openssh-server ca-certificates apt-transport-https perl
    
    curl https://packages.gitlab.com/gpg.key | sudo tee /etc/apt/trusted.gpg.d/gitlab.asc
    


  • Agregamos el paquete de GitLab a los repositorios e instalamos el paquete.
    sudo curl -sS https://packages.gitlab.com/install/repositories/gitlab/raspberry-pi2/script.deb.sh | sudo bash
    


  • Establecemos la URL por la que queramos y que sea accesible o por la IP y procedemos a instalar.
    sudo EXTERNAL_URL="https://192.168.1.10" apt-get install gitlab-ce
    


Toca esperar pacientemente a que se instale, Mientras nos bebemos una cafetera…





3. Configurar GitLab

Para configurar GitLab, debemos editar su correspondiente fichero de configuración que se encuentra en la ruta “/etc/gitlab/gitlab.rb”, en este, podemos configurar la URL externa, certificados, etc…

  • Para editar el fichero de configuración de GitLab ejecutamos:
    sudo nano /etc/gitlab/gitlab.rb
    


3.1. Configurar Acceso HTTP

Procedemos a establecer la IP o Dominio y Puerto por el que accederemos a GitLab.

  • Buscamos la linea que comienza con “external_url”.

  • En mi caso, como el servicio solo quiero que sea visible dentro de mi red, establezco como URL la “IP Privada de la Raspberry” y el puerto “8888”.

  • Por lo tanto el valor de mi “external_url” sería “http://192.168.1.10:8888. “ external_url.png



3.2. Configurar Acceso HTTPS

En el caso que ya tengamos certificados SSL, procedemos a establecer la IP o Dominio, Puerto y los certificados SSL que se utilizarán para acceder a GitLab:

  • En el archivo “/etc/gitlab/gitlab.rb” localizamos la linea que comienza con “external_url

  • En mi caso, como el servicio solo quiero que sea visible dentro de mi red, establezco como URL la “IP Privada de la Raspberry” y el puerto “8888” pero esta vez empleando “HTTPS”.

  • Por lo tanto el valor de mi “external_url” es “https://192.168.1.10:8888”.

  • Para configurarle los certificados SSL, agregamos debajo de “external_url” las lineas que se adjuntan a continuación.
    Establece la Ruta del certificado que corresponda en tu caso.
    nginx['ssl_certificate'] = "/etc/ssl/certs/gitlab.pem"
    nginx['ssl_certificate_key'] = "/etc/ssl/private/gitlab.key"
    
  • El fichero quedaría de la siguiente manera después de haber realizado los cambios: ec71476a156f69e8b65b5b22adb49dda.png



3.3 Configurar Ruta de Almacenamiento de Repositorios

  • Para configurar una Ruta “customizada” para almacenar los repositorios, incluir estas líneas en el archivo cambiando el valor de “path” por la Ruta que corresponda.
    git_data_dirs({
     "default" => { "path" => "/var/opt/gitlab/git-data" },
     "storage1" => { "path" => "/mnt/storage1/git-data" },
     "storage2" => { "path" => "/mnt/storage2/git-data" }
    })
    



  • Por último, Reconfiguramos GitLab para que se efectúen los cambios:
    sudo gitlab-ctl reconfigure
    

    gitlab_reconfigure.png


  • Si todo ha ido bien, desde un dispositivo conectado a la red, accedemos a la URL:
    • http://IP-Raspberry-Pi:8888


  • Y deberíamos ver la página de Login de GitLab. pagina_login.png


  • La primera vez que accedamos a GitLab, nos logueamos con el Usuario: “root” y la “contraseña autogenerada” que podremos encontrar en el siguiente archivo:
    sudo cat /etc/gitlab/initial_root_password
    


  • Si accedemos por primera vez al portal Web con el usuario “root”, debemos modificar la contraseña que estaba establecida por defecto.

  • Una vez establecida la nueva contraseña, el portal nos redirigirá al panel de Login y debemos acceder empleando la nueva contraseña.





4. Crear Usuario en GitLab

  • Para crear un nuevo usuario de GitLab, Iniciamos sesión con el Usuario “root”.

  • Nos dirigimos a la opción de menú “Admin Area”. admin_config.png


  • Pulsamos en el botón “New User”. new_user_click.png


  • Rellenamos el formulario con los datos que nos solicita. new_user_form.png


  • Si hemos configurado el servidor de correos, el nuevo usuario recibirá un email con las pautas a seguir para acceder a nuestro GitLab.

  • En caso de no haberlo configurado, podemos acceder a los usuarios desde el portal de administración y establecer una contraseña manualmente para su primer inicio de sesión.
    Posteriormente el sistema le solicitará el cambio obligatorio de la contraseña cuando acceda por primera vez.





5. Generar e Importar Claves SSH en GitLab

Para poder trabajar con los repositorios desde local hacia GitLab y viceversa, es necesario configurar las claves SSH para poder conectar con el repositorio.

5.1. Crear clave SSH en Linux

Para generar una clave SSH:

  • En la Raspberry, abrimos un terminal y nos situamos en la carpeta “.ssh” que se encuentra en el “Home”” del usuario.
    cd ~/.ssh
    


  • (En caso de no existir la carpeta, la creamos)
    mkdir ~/.ssh
    


  • Una vez dentro de la carpeta, procedemos a generar la clave SSH necesitamos abrir un terminal y ejecutar:
    ssh-keygen -t rsa
    
  • Nos solicitará un nombre y una contraseña que son opcionales, aunque sería recomendable establecerlos. generating_ssh_key.png


  • Para listar la Clave SSH que hemos generado, desde un terminal ejecutamos:
    El resultado del comando ejecutado es la Clave SSH que debemos Copiar para Agregarla en GitLab.
    cat ~/.ssh/id_rsa.pub
    

    gitlab_rsa.png



  • Por último, Establecer los permisos de la carpeta “ssh” y las “claves SSH” ejecutando los comandos:
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/*
    



5.2. Agregar la Clave SSH a GitLab

  • Iniciamos sesión con el Usuario que queramos trabajar.

  • Nos dirigimos a las Opciones de Usuario y clicamos en “Preferences”. user_preferences.png


  • Aparecerá un menú a la izquierda en el cual debemos clicar en la opción “SSH Keyspreferences_ssh.png


  • Una vez dentro de “SSH Keys”, observaremos el formulario a rellenar para agregar una nueva Clave de SSH.
    • Key”: tenemos que pegar la Clave SSH que generamos anteriormente.

    • Title”: establecemos el nombre de la clave, puede ser algo que nos ayude a identificar el dispositivo que la utiliza.

    • Usage type”: establecemos el tipo de uso para la Clave SSH, es recomendable dejarlo por defecto.

    • Expiration Date” [es opcional]: podemos darle una fecha de expiración a la Clave SSH o indicarle que nunca caduque. add_key_gitlab.png


  • Para finalizar, pulsamos en “Add key”, y la clave quedará agregada. ssh_added.png


Ya podemos comenzar a trabajar con los repositorios de GitLab en nuestro dispositivo.





6. Crear Repositorio en GitLab

Para crear un nuestro primer repositorio en GitLab:

  • Accedemos al “Página principal del Usuario”, y pulsamos el botón “New ProjectnewProject.png


  • GitLab nos ofrece diferentes opciones para crear un nuevo repositorio:
    • Crear proyecto en blanco
    • Crear desde una plantilla
    • Importar proyecto


  • Vamos a crear un proyecto en blanco, por lo que pulsamos en “Create blank project”.
    Se mostrará un formulario donde nos solicitarán varios datos para establecer la información del repositorio y el tipo de visibilidad de este (público, privado, etc..) mi_test_repo.png


  • Al pulsar en “Create project” la herramienta crea el proyecto y nos informa de una serie de instrucciones. repo_created.png


  • Para probar que todo ha ido bien podemos abrir un terminal e intentar hacer un clone del proyecto, bien por HTTP o SSH.

  • Podemos encontrar el comando para copiar en el propio repositorio clicando en el botón “Cloneclone_git.png


  • En mi caso realizaré la clonación del repositorio por SSH, emplearé el comando:
    git clone git@IP_Raspberry_Pi:Usuario/NombreDelRepositorio.git
    

    clonado_repo.png


  • Si todo ha ido bien, encontraremos la carpeta del repositorio clonada en nuestro dispositivo. interior_repo.png


  • Con esto concluimos la instalación de nuestro GitLab.