WMarkDown/WMD/es/doc/gitlab.w.md

5.6 KiB
Executable File

GitLab

GitLab es una plataforma HostSelf para Git, bastante pesada pero con muchas propiedades, utilidades y funcionalidades. Ésta será la plataforma de trabajo compartido que se usará.

El Git sólo se mirará para trabajar desde Linux desde la propia VM que gestiona el proyecto. Si se hace uso de otro sistema será mejor Googlear y no seguir esta guía.

Instalación de GitLab

En este caso se usó un Debian puro versión 10.9.0 amd64 en Core con 4GB de RAM y 1 Core virtualizado sobre un i7 4970K con 32GB de RAM Dual Channel 1600 en VirtualBox. Se seleccionaron solo 4GB de RAM y 1 Core por el hecho de no trabajar, previsiblemente más de 50 personas simultáneamente, preveendo más o menos unos 10, el resto de usuarios serán visitantes no autenticados.

La estructura de Red es acceso mediante un Router el cual establece una apertura de puertos mediante iptables contra una máquina que vincula y balancea la carga con Nginx, y ésta será la encargada de gestionar las peticiones contra la máquina que contiene el GitLab.

graph TB
R[Router] --> N[VM Nginx]
G --> N
N --> R
subgraph Servidor
N --> G[VM GitLab]
end

El primer problema al que nos enfrentamos es que GitLab no será quien recoja la petición de forma directa, sino que pasará por un Proxy de entrada el cual redirigirá la petición a la máquina de GitLab. De primeras, ésto no debería de ser un problema pero GitLab posee otro Nginx por detrás que es el que gestiona las peticiones Web del mismo. La dirección DNS no la pilla de la petición, sino de la cabecera X-FORWARDED-FOR, que por lo general es la dirección IP de la que parte la petición, por lo que es necesario implementar, en este caso, una línea en la configuración del sitio Nginx con la dirección DNS para dicha cabecera.

NOTA: No vale poner $server-name, en la definición de cabeceras no funciona, lo que nos obliga a usar una única dirección DNS como sale en el ejemplo siguiente.

server {
    listen XXXXX;
    server_name ~^git\.k3y\.pw$;
    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Host git.k3y.pw;
        proxy_pass https://XXX.XXX.XXX.XXX$request_uri;
    }
}

Sabiendo esto, simplemente hemos de seguir los pasos de la guía de instalación del GitLab Enterprise Edition, pero cambiando en todo momento "gitlab-ee" por "gitlab-ce" desde la guía oficial, la cual dejamos a continuación:

https://about.gitlab.com/install/#debian

En nuestro caso no tenemos instalado "sudo", por lo que hay que adaptar los comandos sobre un entorno "su". En el caso del CURL para el Script Deb se descargó mediante "wget" y se ejecutó sobre "su", por ejemplo.

Establecer Memoria en el Login

Lo primero es instalar el Git en nuestro equipo, donde tendríamos las siguientes opciones más comunes:

Debian Fedora / Red Hat Arch Windows 10
```sh apt install git ``` ```sh yum install git ``` ```sh pacman install git ``` ```bat widget install git ```

La instalación por CMD de Windows 10 depende de tener el paquete del repositorio Widget. Además, no fujncionarán algunos pasos de este manual por falta de comandos así como de recursos, como es el almacenamiento de Keys. Por ello, desaconsejamos el uso, en la medida de lo posible, de Windows 10 para dichas tareas, y hacer uso de conexiones SSH para poder gestionarlas desde la unidad Linux donde se encuentre el proyecto.

A continuación, independientemente del OS en el que se esté, accedemos al Terminal o Comandos y escribimos el siguiente comando:

git clone https://git.k3y.pw/Whalers/WMarkDown.git

No tenemos abierto el puerto SSH ni FTP por seguridad, por lo que la dirección SSH no funcionará.

Ahora que ya tenemos nuestro repositorio accedemos al directorio del mismo y luego a su directorio ".git" donde hallaremos un fichero llamado "config", el cual requeriremos abrir como si fuera un fichero de texto. Dentro de éste encontraremos una línea la cual se llama "url" y se encuentra dentro del bloque '[remove "origin"]', con la URL del repositorio. La copiamos y comentamos una, y la otra le añadimos nuestro nombre de usuario en el servidor Git tal que así:

[core]
	repositoryformatversion = 0
	filemode = true
	bare = false
	logallrefupdates = true
[remote "origin"]
	#url = https://git.k3y.pw/Whalers/WMarkDown.git
	url = https://USUARIO@git.k3y.pw/Whalers/WMarkDown.git
	fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
	remote = origin
	merge = refs/heads/master

Finalmente, establecemos un tiempo de memoria caché para que la contraseña solo nos la pida una vez cada X tiempo que nosotros decidamos mediante el siguiente comando, teniendo en cuenta que el tiempo se establece en segundos.

git config --global credential.helper "cache --timeout TIEMPO"

Los valores de tiempo serían los siguientes:

  • TIEMPO = 7200 => 2 horas.
  • TIEMPO = 3600 => 1 hora.
  • TIEMPO = 84600 => 1 día.

Sobre todas estas operaciones solo nos pedirá la contraseña una vez hasta pasado el tiempo del Timeout de la Caché.