in git gogs debian ~ read.

Gogs.io - Hosting de Repositorios Git

Tengo que reconocer que no soy un experto en git, no controlo la herramienta tan bien como me gustaría y al final me paso horas mirando en foros para hacer esto o lo otro y conseguir que git haga lo que deseo. Pero no me rindo, y poco a poco voy descubriendo cosas que me convencen de que git ha llegado a mis manos para quedarse.

Si, lo admito, desconocía que era git asta que me encontré con GitHub, pero gracias a esa web he visto una manera de organizar y almacenar mis proyectos de manera ordenada. Y todo esto totalmente gratuito y en una web con muy buen gusto, todo sea dicho.

Pero como a mi me gusta ir un poco mas allá, me pregunte ¿podría montar yo mi propio GitHub en casa? Pues después de mirar y mirar por la red, me encontré con Gogs, que haciendo uso de pocos recursos nos da la opción de montar nuestro propio GitHub, a groso modo.

Gogs logo

Gogs nos brinda la opción de servir nuestro propio hosting de repositorios git al estilo Github. Esta programado en Go y lo podemos encontrar en distintos sabores: Windows, Linux, Mac OS X, e incluso para distribuciones GNU/Linux compiladas en arquitectura ARM. Alguien dijo Raspberry Pi?

Sin pensármelo dos veces y después de haber leído la documentación necesaria, me puse manos a la obra y monte Gogs para trastear un poco y ver que me ofrecía. Te preguntaras para que tomarse el trabajo si ya de por si Github te da todo lo que necesitas. Pues hay algo que si me da Gogs y no GitHub, "Repositorios Privados gratuitos". GitHub se gana el sustento gracias a los repositorios privados entre otros servicios, por una módica subscripción inicial mensual de 7€.

Mi uso de GitHub normalmente suele ser para compartir aquellos scripts que voy creando. Antes de publicarlos en Github, si es que se le puede llamar pulbicar a eso, suelo ir programando en ratos sueltos y para ello siempre tengo que acarrear con los archivos de un lado para otro. Ya se que GitHub es la solución perfecta para estos casos, pero no me gusta dejar las cosas a medias de desarrollar vista al publico. Por eso gracias a Gogs puedo tener mis propios repositorios privados hospedados en mi servidor domestico y así acceder a ellos de manera remota desde cualquier sito las 24 horas del día.

Viendo los lo pros y los contras de GitHub y Gogs, he decidido desarrollar aquellas ideas que me surjan en Gogs con repositorios privados, y si en algún momento toman forma y merecen ser publicadas, compartirlas mediante GitHub.

Instalación de Gogs

He montado todo esto sobre Debian 8 Jessie pero creo que no habra problemas en hacerlo en otras plataformas. Si os da por leer la documentación en la pagina oficial, veréis que hay distintas maneras de instalar Gogs: ya sea compilando desde el código, mediante binarios pre-compilados o paquetes preparados específicamente para nuestro sistema operativo. Antes de nada es recomendable echar un vistazo a los requisitos, e instalar aquellos programas que necesitemos:

  • Git: sin tener esto instalado en nuestro sistema no vamos a ningún lado. Así que no te olvides en instalarlo.
  • MySQL, PostgreSQL, SQLite o TiDB: Para almacenar y gestionar todo lo relacionado con la parte web, es necesario tener una base de datos, así que necesitaremos alguno de estos gestores soportados.

La primera opción y la mas lógica para gestionar las bases de datos, podría ser MySQL, pero cada vez soy mas reacio a montar algo tan pesado para dar servicio a algo tan liviano como puede llegar a ser Gogs. Por lo que me decantado por SQLite, mas simple y ligero, igual no tan rápido como MySQL, pero como no creo que la base de datos tome un tamaño ingente, prefiero elegir SQLite.

Una vez decidido el gestor de base de datos instalamos los paquetes requeridos:

sudo aptitude install  

Ahora estamos preparados para descargar Gogs. En el siguiente enlace encontraremos pre-compilados binarios para todo tipo de sistemas operativo y arquitecturas. Nuestro caso al ser para Linux y 64 Bits, descargaremos la versión Linux amd64. Podréis descargarlo desde vuestro navegador y descomprimirlo donde deseéis. En mi caso suelo hacer uso de wget para descargarlo y unp para descomprimirlo:

wget https://dl.Gogs.io/Gogs_v0.7.6_linux_amd64.tar.gz  
unp Gogs_v0.7.6_linux_amd64.tar.gz  

-Puede que el link varie según la version-

Una vez descomprimido nos encontraremos con una carpeta llamada gogs que contendrá un ejecutable junto a varias carpetas:

  • templates
  • scripts
  • public
  • gogs
  • README_ZH.md
  • README.md
  • LICENSE

-Puede que los nombres varíen según la version-

El siguiente paso es copiar esta carpeta a /opt y cambiar los permisos para que sea root el único usuario que pueda editar su contenido:

sudo cp Gogs/ /opt  
sudo chown -R root:root /opt/gogs  

El siguiente paso es configurar el script que hará que Gogs arranque en cada inicio del sistema. Si miramos en la carpeta /opt/gogs/scripts/init/systemd encontraremos un archivo llamado gogs.service, si lo abrimos con nuestro editor favorito nos encontraremos con el siguiente texto

[Unit]
Description=gogs (Go Git Service)  
After=syslog.target  
After=network.target  
#After=mysqld.service
#After=postgresql.service
#After=memcached.service
#After=redis.service

[Service]
Type=simple  
User=git  
Group=git  
WorkingDirectory=/home/git/Gogs  
ExecStart=/home/git/gogs/gogs web  
Restart=always  
Environment=USER=git HOME=/home/git

[Install]
WantedBy=multi-user.target  

Deberemos editar varios campos dejándolos de esta manera:

.....
User=root  
Group=root  
WorkingDirectory=/opt/gogs  
ExecStart=/opt/gogs/gogs web  
Restart=always  
Environment=USER=root HOME=/root  
.....

Guardamos los cambios y copiamos este archivo a /etc/systemd/system:

cp /opt/Gogs/scripts/init/systemd/gogs.service /etc/systemd/system/  

Por ultimo habilitamos el script y lo ejecutamos para poner en marcha Gogs:

sudo systemctl enable gogs.service  
sudo service gogs start  

Ahora ya tenemos en marcha Gogs a la espera de que terminemos de configurarlo. Para ello abrimos nuestro navegador web y accedemos a http://localhost:3000 encontrándonos con un formulario que deberemos rellenar:

configracion 1 Gogs

  • Tipo de base de datos: deberemos seleccionar la opción SQLite3 y dejar como la Ruta como esta.

configracion 2 Gogs

En este apartado los campos a rellenar son bastante intuitivos de por si, así que si los dejamos como están, todo funcionara sin problemas, pero prefiero personalizar algunos campos.

  • Nombre de la Aplicación: Es el nombre que tendrá la web por lo que podéis poner lo que queráis.
  • Ruta del repositorio de Raíz (Root): Este es el lugar donde se guardaran los repositorios que vayamos creando. He preferido poner la carpeta donde esta el propio Gogs (/opt/gogs/gogs-repositories) y así tener todo en una misma carpeta.
  • Ejecutar como Usuario: Es importante que el usuario que pongamos tenga acceso a la carpeta de Gogs, es decir, /opt/gogs/. Por lo que la opción mas sensata seria poner root ya que antes le hemos dado permisos en la carpeta.
  • Puerto HTTP: es el puerto por el que estará a la escucha la web con la que intercalaremos con Gogs.
  • URL de la aplicación: en caso de que tengáis un dominio este seria el lugar donde ponerlo junto al puerto que hemos puesto antes, si no, dejarlo como esta.

configracion 3 Gogs

  • Configuración de Servidor y Otros Servicios: Como veis en la imagen superior he seleccionado Desactivar el servicio Gravatar para poder subir una imagen a nuestro gusto como avatar. Y Desactivar Auto-Registro ya que al ser yo el único usuario del servicio, nadie pueda registrarse. Es posible crear mas usuarios, pero de manera manual.
  • Configuración de la Cuenta de Administrador: Aquí podemos crear directamente el usuario que sera administrador y con el que normalmente trabajaremos.

Por ultimo le damos al botón azul Instalar Gogs.

Uso de Gogs

Una vez finalizada la instalación y configuración, nos solicitara que metamos las credenciales que hemos puesto antes para iniciar sesión:

configracion 4 Gogs

Una vez iniciado sesión en la parte derecha ya podremos empezar a crear nuestros repositorios dandole al signo + verde.

configracion 5 Gogs

Yo por ejemplo ya tengo un par de ellos como podréis ver en la siguiente imagen.

configracion 6 Gogs

No todo termina aquí...

Esto es solo el principio, es posible personalizarlo aun más, tanto estéticamente como en su funcionamiento. Recomiendo que os paséis por la documentación de la web oficial y que os empapéis de todo lo que pone y así poder personalizarlo mas todavía.

comments powered by Disqus