Configurar servidor GIT en red local

Aclaro que he usado GIT como usuario de GitHub para hacer envíos, pero no había configurado un servidor git antes, por lo que el manual puede contener fallas o formas mejores de hacer las cosas, las cuales agradecería que incluyeran en sus comentarios.

0. Debemos tener previamente instalados: git y openssh.

Open SSH se puede intstalar así:

sudo apt-get install openssh-server

1. Crearemos un usuario para dedicarlo exclusivamente como servidor de git

Por consola:

sudo adduser git

También pueden usar el gestor de usuarios y grupos si prefieren, o usar otro nombre (no necesariamente git).

Si dejaran su PC como servidor, pero no lo usaran para hacer push, pueden usar su propio usuario. En mi caso, sirvió para hacer las pruebas con mi usuario usual, y hacer push al servidor git que crearé.

2. Usamos el terminal como el usuario creado

su git

3. Vamos a la carpeta de usuario

cd

4. Creamos la carpeta que albergará las llaves

mkdir .ssh

4.1. Creamos nuestra llave SSH

No estoy seguro si esto es necesario en este paso para el usuario git que será el servidor, pero servirá también para los equipos que se conectaran al servidor, pues se requiere que tengan una llave SSH.

Vamos a la carpeta

cd ~/.ssh

Ejecutamos el comando

ssh-keygen

Nos solicita algunos datos, el primero debemos llenarlo, el segundo (passphrase) será un password que se puede omitir si se quiere, los demás podemos dejarlos en blanco.

Se nos habrán generado dos archivos, una llave privada con el nombre id_rsa (o el que hayamos asignado luego de ejecutar el comando anterior), y una llave pública id_rsa.pub (con el mismo nombre del anterior).

El contenido de id_rsa.pub (que se puede visualzar con cualquier editor de texto plano) será que usaremos el el siguiente paso (de los equipos que se conectaran).

5. Creamos el archivo authorized_keys dentro de .ssh

Dentro del archivo incluiremos el contenido de las llaves públicas (.pub) de las personas que colaboraran.

Son algo así:

ssh-rsa AQEAB6NzaD1yc2PAAAADAQABAACVUYTLDooBD5sM7pG1zBa7uZiApXxJB41v7gFX2iJZiz3DigMu1xWAcnbfKqMDxCGw2YB0Gv1Hr2s6nqPlxvxAVJVlcfHtA3L42JFi1iXFkRupAQLetoYFX7EwNfzHwiGBcs3U4iFH1yqvWMzklahbrw3ytFYp0MUYfdG9Bq6/gaU9ukiYtDBq8sYBMjUGCnDiGaY+/IalNzF4/gB/DUxW7Jt0BZRTsLRqmFiOCr6Q4h0R9ZE7WBg0rAX9A0t7yujKDqs6pybqMupIbNKN3UxCywmvZWoWzgfX1CwbJM8/yUQrghcXpNHjXMFwBpA6d8uILt8C9DfFjeCqyF/NaeUHCTvZz usuario@usuario_red

6. Vamos a la carpeta dónde crearemos el repositorio en el servidor

Por ejemplo, yo usé una carpeta en el directorio de usuario:

cd /home/git/carpetadedesarrollo/

7. Creamos el repositorio (es una carpeta sencillamente) y entramos en el

mkdir nombredemirepositorio.git

cd nombredemirepositorio.git

8. Inicializamos el repositorio

git –bare init

9. Ahora ya podremos crear y modificar los primeros archivos en el repositorio.

Desde el usuario que usaremos para contribuir al proyecto, o desde el equipo de las otras personas que contribuirán.

cd micarpetaparaelproyecto

git init

Creamos y modificamos los archivos iniciales.

git add .

git commit -m «Primer commit»‘

git remote add origin git@localhost:/home/git/carpetadedesarrollo/nombredemirepositorio.git

git push origin master

Si estamos en el mismo computador (por ejemplo yo creé el usuario git para poder hacer commits desde mi cuenta de usuario), podemos usar localhost, de lo contrario, debemos reemplazarlo por la IP del equipo dónde configuramos el servidor. Así mismo, naturalmente, debemos cambiar aquellos nombres en los que dejé nombres eplicativos (por ejemplo: nombredemirepositorio.git).

10. Ya podemos contribuir y desarrollar colaborativamente en nuestra red local.

¿Por que querría hacer esto?

  • Evitar dejar público el código en GitHub o no pagar para tenerlo privado.
  • Trabajar a mayor velocidad en una red local.

Yo lo hice para desarrollar colaborativamente en la red de la empresa que nos encontramos creando, así, evitamos dejar público el código en GitHub cuando no lo deseamos.

¿Para qué lo harías tú?

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *