Articles

Cómo ejecutar tu propio servidor Git

Gestiona tu código en tu propio servidor ejecutando un servidor Git básico y desnudo o mediante la herramienta GitLab GUI.

Aprende a configurar tu propio servidor Git en este tutorial de nuestros archivos.

Git es un sistema de versiones desarrollado por Linus Torvalds, que es utilizado por millones de usuarios en todo el mundo. Empresas como GitHub ofrecen servicios de alojamiento de código basados en Git. Según los informes, GitHub, un sitio de alojamiento de código, es el mayor servicio de alojamiento de código del mundo. La empresa afirma que hay 9,2 millones de personas colaborando ahora mismo en 21,8 millones de repositorios en GitHub. Las grandes empresas se están pasando a GitHub. Incluso Google, el gigante de los motores de búsqueda, está cerrando su propio Google Code y pasándose a GitHub.

Ejecuta tu propio servidor Git

GitHub es un gran servicio, sin embargo hay algunas limitaciones y restricciones, especialmente si eres un individuo o un pequeño actor. Una de las limitaciones de GitHub es que el servicio gratuito no permite el alojamiento privado del código. Hay que pagar una cuota mensual de 7 dólares para alojar 5 repositorios privados, y los gastos suben con más repos.

En casos como estos o cuando quieres tener más control, el mejor camino es ejecutar Git en tu propio servidor. No sólo ahorras costes, también tienes más control sobre tu servidor. En la mayoría de los casos la mayoría de los usuarios avanzados de Linux ya tienen sus propios servidores y empujar Git en esos servidores es como ‘gratis como en la cerveza’.

En este tutorial vamos a hablar de dos métodos para gestionar tu código en tu propio servidor. Uno es ejecutar un servidor Git básico y desnudo y el segundo es a través de una herramienta GUI llamada GitLab. Para este tutorial he utilizado un servidor Ubuntu 14.04 LTS totalmente parcheado que se ejecuta en un VPS.

Instala Git en tu servidor

En este tutorial estamos considerando un caso de uso en el que tenemos un servidor remoto y un servidor local y vamos a trabajar entre estas máquinas. Para simplificar los llamaremos servidor remoto y servidor local.

En primer lugar, instala Git en ambas máquinas. Puedes instalar Git desde los paquetes ya disponibles a través de los repos o de tus distros, o puedes hacerlo manualmente. En este artículo utilizaremos el método más sencillo:

sudo apt-get install git-core

A continuación, añade un usuario para Git.

sudo useradd gitpasswd git

Para facilitar el acceso al servidor vamos a configurar un login ssh sin contraseña. Primero crea las claves ssh en tu máquina local:

ssh-keygen -t rsa

Te pedirá que proporciones la ubicación para almacenar la clave, simplemente pulsa Enter para usar la ubicación por defecto. La segunda pregunta será para proporcionarle una frase de paso que será necesaria para acceder al servidor remoto. Genera dos claves: una clave pública y una clave privada. Anota la ubicación de la clave pública que necesitarás en el siguiente paso.

Ahora tienes que copiar estas claves al servidor para que las dos máquinas puedan hablar entre sí. Ejecuta el siguiente comando en tu máquina local:

cat ~/.ssh/id_rsa.pub | ssh git@remote-server "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Ahora haz ssh en el servidor y crea un directorio de proyecto para Git. Puedes utilizar la ruta deseada para el repo.

git@server:~ $ mkdir -p /home/swapnil/project-1.git

A continuación, cambia a este directorio:

cd /home/swapnil/project-1.git

A continuación, crea un repo vacío:

git init --bareInitialized empty Git repository in /home/swapnil/project-1.git

Ahora tenemos que crear un repo Git en la máquina local.

mkdir -p /home/swapnil/git/project

Y cambia a este directorio:

cd /home/swapnil/git/project

Ahora crea los archivos que necesitas para el proyecto en este directorio. Quédate en este directorio e inicia git:

git init Initialized empty Git repository in /home/swapnil/git/project

Ahora añade archivos al repo:

git add .

Ahora cada vez que añadas un archivo o hagas cambios tienes que ejecutar el comando add de arriba. También tienes que escribir un mensaje de confirmación con cada cambio en un archivo. El mensaje de commit básicamente dice qué cambios se hicieron.

git commit -m "message" -a message 2 files changed, 2 insertions(+) create mode 100644 GoT.txt create mode 100644 writing.txt

En este caso tenía un archivo llamado GoT (Game of Thrones review) y realicé algunos cambios, por lo que al ejecutar el comando se especificó que se hicieron cambios en el archivo. En el comando anterior la opción ‘-a’ significa commits para todos los archivos del repo. Si sólo has hecho cambios en uno puedes especificar el nombre de ese archivo en lugar de usar ‘-a’.

Un ejemplo:

git commit -m "message" GoT.txt message 1 file changed, 1 insertion(+)

Hasta ahora hemos estado trabajando en el servidor local. Ahora tenemos que empujar estos cambios al servidor para que el trabajo sea accesible a través de Internet y se pueda colaborar con otros miembros del equipo.

git remote add origin ssh://git@remote-server/repo-<wbr< a="">>path-on-server..git

Ahora puedes empujar o tirar los cambios entre el servidor y la máquina local usando la opción ‘push’ o ‘pull’:

git push origin master

Si hay otros miembros del equipo que quieren trabajar con el proyecto necesitan clonar el repo en el servidor a su máquina local:

git clone git@remote-server:/home/swapnil/project.git

Aquí /home/swapnil/project.git es la ruta del proyecto en el servidor remoto, intercambia los valores para tu propio servidor.

Entonces cambien de directorio en la máquina local (intercambien project con el nombre del proyecto en su servidor):

cd /project

Ahora pueden editar archivos, escribir mensajes de cambio de commit y luego empujarlos al servidor:

git commit -m 'corrections in GoT.txt story' -aAnd then push changes:
git push origin master

Supongo que esto es suficiente para que un nuevo usuario se inicie con Git en sus propios servidores. Si buscas algunas herramientas GUI para gestionar los cambios en las máquinas locales, puedes utilizar herramientas GUI como QGit o GitK para Linux.

QGit

Usando GitLab

Esta era una solución de línea de comandos pura para el propietario y colaborador del proyecto. Ciertamente no es tan fácil como usar GitHub. Desafortunadamente, mientras que GitHub es el servicio de alojamiento de código más grande del mundo; su propio software no está disponible para que otros lo usen. No es de código abierto, así que no puedes coger el código fuente y compilar tu propio GitHub. A diferencia de WordPress o Drupal, no puedes descargar GitHub y ejecutarlo en tus propios servidores.

Como es habitual en el mundo del código abierto, las opciones no tienen fin. GitLab es un proyecto ingenioso que hace exactamente eso. Es un proyecto de código abierto que permite a los usuarios ejecutar un sistema de gestión de proyectos similar a GitHub en sus propios servidores.

Puedes utilizar GitLab para ejecutar un servicio similar a GitHub para los miembros de tu equipo o tu empresa. Puedes usar GitLab para trabajar en proyectos privados antes de liberarlos para contribuciones públicas.

GitLab emplea el modelo de negocio tradicional de código abierto. Tienen dos productos: un software de código abierto gratuito, que los usuarios pueden instalar en sus propios servidores, y un servicio alojado similar a GitHub.

La versión descargable tiene dos ediciones: la edición comunitaria gratuita y la edición empresarial de pago. La edición empresarial se basa en la edición comunitaria, pero viene con características adicionales dirigidas a los clientes empresariales. Es más o menos similar a lo que ofrecen WordPress.org o WordPress.com.

La edición comunitaria es altamente escalable y puede soportar 25.000 usuarios en un único servidor o clúster. Algunas de las características de GitLab incluyen: Gestión de repositorios Git, revisiones de código, seguimiento de problemas, feeds de actividad y wikis. Viene con GitLab CI para la integración y entrega continua.

Muchos proveedores de VPS como Digital Ocean ofrecen droplets de GitLab para los usuarios. Si quieres ejecutarlo en tu propio servidor, puedes instalarlo manualmente. GitLab ofrece un paquete Omnibus para diferentes sistemas operativos. Antes de instalar GitLab, es posible que quieras configurar un servidor de correo electrónico SMTP para que GitLab pueda enviar correos electrónicos cuando sea necesario. Ellos recomiendan Postfix. Así que instala Postfix en tu servidor:

sudo apt-get install postfix

Durante la instalación de Postfix te hará algunas preguntas; no te las saltes. Si te las has saltado siempre puedes volver a configurarlo usando este comando:

sudo dpkg-reconfigure postfix

Cuando ejecutes este comando elige «Sitio de Internet» y proporciona el ID de correo electrónico del dominio que usará Gitlab.

En mi caso lo proporcioné con:

This e-mail address is being protected from spambots. You need JavaScript enabled to view it 

Usa la pestaña y crea un nombre de usuario para postfix. La página siguiente te pedirá que proporciones un destino para el correo.

En el resto de los pasos, utiliza las opciones por defecto. Una vez instalado y configurado Postfix, pasemos a instalar GitLab.

Descarga los paquetes usando wget (sustituye el enlace de descarga por los últimos paquetes desde aquí) :

wget https://downloads-packages.s3.amazonaws.com/ubuntu-14.04/gitlab_7.9.4-omnibus.1-1_amd64.deb

Después instala el paquete:

sudo dpkg -i gitlab_7.9.4-omnibus.1-1_amd64.deb

Ahora es el momento de configurar e iniciar GitLabs.

sudo gitlab-ctl reconfigure

Ahora tienes que configurar el nombre de dominio en el archivo de configuración para poder acceder a GitLab. Abre el archivo.

nano /etc/gitlab/gitlab.rb

En este archivo edita la ‘external_url’ y dale el dominio del servidor. Guarda el archivo y luego abre el sitio GitLab recién creado desde un navegador web.

GitLab 1

Por defecto crea ‘root’ como administrador del sistema y utiliza ‘5iveL!fe’ como contraseña. Entra en el sitio de GitLab y luego cambia la contraseña.

GitLab 2

Una vez cambiada la contraseña, entra en el sitio y empieza a gestionar tu proyecto.

Página de gestión de proyectos de GitLab

GitLab está repleto de funciones y opciones. Voy a tomar prestadas unas líneas populares de la película «The Matrix»: «Por desgracia, no se puede decir todo lo que GitLab puede hacer. Tienes que probarlo por ti mismo»

Deja una respuesta

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