Instalar Gitea en Raspberry Pi 3 con Docker

Nómadas seguro que conocéis Github.com una comunidad para almacenar y compartir el código que vamos programando. Seguro que también conoceréis sus limitaciones para cuentas gratuitas. La más importante es el no poder tener proyectos privados. ¿Y si os digo que hay una alternativa de código abierto?

¿Qué es Gitea?

Gitea es una aplicación que permite desplegar un servicio Git del estilo de Github en tu propio servidor. Gitea está programado en Go y por lo tanto ejecutaremos un único binario, junto a éste utilizaremos un archivo de configuración para lanzar Gitea en nuestro servidor.

Docker image con Gitea

Nosotros vamos a utilizar Docker para instalar Gitea. Al utilizar este método podéis seguir los siguientes pasos para instalar Gitea en una gran variedad de dispositivos. En este caso, desde Cibernómadas vamos a centrarnos en la arquitectura ARM de Raspberry Pi, pues no hay imagen oficial de Gitea para ARM y nos dará más juego para mostrar como interactuar con Docker.

La mejor forma de instalar Gitea con Docker es mediante Docker Compose. Docker compose es una aplicación adicional a Docker que permite abstraerse de los comandos propios de Docker. De este modo es posible definir en un fichero, en formato YAML, como queremos desplegar nuestros contenedores. La sintaxis es muy sencilla, se parece bastante a los comandos de Docker.

Como hemos comentado antes la imagen oficial de gitea lleva el binario para una arquitectura distinta a ARM, por lo tanto, vamos a tener que crear primero una imagen y así utilizarla en Docker compose.

Clonando Gitea

Gitea tiene alojado el código fuente en un repositorio privado utilizando Gitea. Vamos que Gitea hospeda a Gitea. Pero además, también se utiliza un repositorio público en Github. Desde el repositorio público realizaremos un clon en nuestra Raspberry Pi, por ejemplo, en el directorio home.

git clone https://github.com/go-gitea/gitea.git

Este comando nos creara un directorio llamado gitea donde tendremos todo el código fuente de Gitea.

Dockerfile

Dentro del directorio que acabamos de crear tenemos un fichero llamado Dockerfile. En él se especifica como se construye la imagen de Gitea. El inconveniente de usar el Dockerfile que viene por defecto en Gitea es que utiliza unas imágenes base incompatibles con nuestra Raspberry Pi.

Te puede interesar  Puesta en marcha de Odoo en Debian - Parte 3

Vamos a utilizar pues las imágenes de Resin. Tienen un buen conjunto de imágenes base para utilizar en nuestra Raspberry Pi. Nostros utilizaremos dos, resin/raspberrypi3-alpine y resin/raspberrypi3-alpine-golang. Estas imágenes son para la Raspberry Pi 3, si tenéis otra versión de Raspberry Pi debéis usar las imágenes adecuadas a vuestra Raspberry Pi. Si no tienes Docker instalado en la Raspberry Pi puedes seguir este post donde lo explicamos.

En el fichero Dockerfile solo debemos cambiar dos líneas. Las líneas en concreto son las que indican a Docker cual es la imagen base para construir la nueva imagen.

Cambiamos la línea:

Por:

Y también cambiamos la línea:

Por:

Cambiando estas dos líneas haremos que la generación de imágenes sea compatible con nuestra Raspberry Pi 3.

Generar imagen

Ahora solo queda lo más sencillo, dejar que Docker haga su magia. El comando que debemos ejecutar es: docker build -t cibernomadas/gitea . Nosotros hemos utilizado el nombre cibernomadas/gitea, pero se puede utilizar el que más os convenga. El proceso de generar una imagen nueva tardará unos minutos (aprox. 15min.). Cuando Docker termine de construir la nueva imagen la tendremos disponible en nuestra Raspberry Pi.

Imágenes Docker

En la imagen superior se puede ver claramente un resumen de lo que ha sucedido. Por un lado, tenemos la imagen cibernomadas/gitea y también disponemos de las dos imágenes que hemos utilizado para construir la imagen de Gitea, las imágenes de resin. Además, si os fijáis hay una imagen que no tiene nombre, esta es una imagen temporal que se ha utilizado durante la construcción de nuestra imagen de Gitea. La imagen temporal la podemos borrar para liberar espacio en nuestra Raspberry Pi. El comando sería: docker image rm 60f5980de587 (el número es el identificador de la imagen IMAGE ID).

Docker Compose

Ahora ya tenemos la imagen construida y lista para usar, podemos ejecutarla mediante docker con el comando run, pero lo cierto es que de esta manera perdemos cierta usabilidad.

Para mejorar el uso del contenedor vamos a utilizar docker-compose, que además es el método recomendado por la gente de Gitea. Desde Cibernómadas vamos a hacer un mix con las opciones que hay en la web de Gitea.

Te puede interesar  Puesta en marcha de Odoo en Debian 9 - Parte 1

Nosotros hemos creado un directorio donde guardar el fichero docker-compose.yml. El directorio lo situamos en el home, ~/docker/gitea con el siguiente contenido:

Brevemente el contenido de este fichero se divide en tres partes. La primera indica cual es la configuración de la red. En este caso, se indica que la red se debe crear de forma interna y no usar ninguna red existente con ese nombre. La segunda parte es donde se definen los volúmenes. Éstos nos ayudan a compartir ficheros y directorios entre el contenedor Docker y el host o lo que viene siendo nuestro ordenador (os lo explicamos al final del post). La tercera y última parte, es donde se definen los servicios, para el caso que nos atiende solo hay un servicio, nuestra imagen de Gitea con el nombre server. En este tercer punto cabe destacar las entradas network, volumes y ports. Network y volumes hacen referencia a los puntos primero y segundo explicados al inicio del párrafo. Ports define cuales son los puertos por los que se podrá acceder a Gitea. El 3000 hace referencia a la web de Gitea y el 2222 hace referencia al protocolo SSH.

Ejecutando Gitea con docker-compose

Para ejecutar nuestro Gitea ejecutamos docker-compose up, en seguida veremos los logs por pantalla. Lo más importante es la penúltima línea, Listen http://0.0.0.0:3000, esto significa que si introducimos la IP de nuestra Raspberry Pi en el navegador y añadimos el puerto 3000 accederemos a Gitea. En nuestro caso http://192.168.0.101:3000 y veremos una web como esta:

Web de Gitea

Ahora nos queda la parte final, completar la instalación/configuración de Gitea.

Docker compose puede ejecutar los contenedores en foreground o background. En foreground podremos ejecutar Control + C para cancelar la ejecución, en background deberemos ejecutar docker-compose stop.

Instalar Gitea

Gitea permite un montón de opciones en la configuración y aquí cada uno tiene sus necesidades. En cibernómadas vamos a comentar la configuración básica y a partir de este punto cada uno ya decide como seguir.

Lo primero que nos solicita Gitea es el almacenamiento, éste puede ser en SQLite3, MySQL, PostgreSQL o MSSQL. Aquí hay que pensar un poco. Si instalamos Gitea en una Raspberry Pi es porque no haremos un uso extremadamente intenso de Gitea. Por otra parte, utilizar MySQL o PostgreSQL, que nos darían un mejor rendimiento, menguaría los recursos de la Raspberry Pi, así que todo parece indicar que la opción lógica es instalar Gitea sobre SQLite3 que es la opción que consume menos recursos.

Te puede interesar  DNSmasq en Debian 8

La ruta la dejamos por defecto, luego explicamos como acceder a esos datos.

El título, bien, es el titulo de las páginas web. Nosotros hemos elegido: Gitea: El repositorio de Cibernómadas.

Cambiamos dominio del servidor SSH y ponemos la IP de la Raspberry Pi. El puerto del servicio SSH lo configuramos para escuchar las peticiones en el puerto 2222, recordad que añadimos ese puerto en el fichero docker-compose.yml.

El puerto HTTP lo dejamos tal cual, recordar que indicamos el 3000. Por otro lado, cambiamos la URL para que se ajuste a la IP de nuestra Raspberry Pi, básicamente es cambiar la palabra localhost por la IP de la Raspberry Pi.

La última configuración es la parte de administrador (es el último desplegable). Donde configuraremos el nombre del usuario administrador su contraseña.

El resto de las configuraciones no son tan importantes y las dejamos para que, vosotros Nómadas, investiguéis un poco qué son y como configurarlas.

Y después de esto ya tenemos nuestro servidor Gitea configurado y listo para usar.

Página principal de un usuario registrado en gitea

Comandos útiles

  • Si queremos ejecutar contenedores en backgound debemos ejecutar docker-compose up -d
  • Para parar contenedores en ejecución debemos ejecutar docker-compose stop <nombre del servicio>, en nuestro caso docker-compose stop server.
  • Para ver donde se guardan los datos compartidos entre el host y el contenedor debemos ejecutar el comando: docker volume inspect $(docker volume ls | grep gitea | awk ‘{print $NF}’) | grep Mountpoint. Accediendo en la ruta como administrador o root podremos ver a todos los datos de Gitea e incluso podremos cambiar la configuración en el fichero app.ini. Un comando que puede ser utilizado como alias sería: docker volume inspect $(docker volume ls | grep gitea | awk ‘{print $NF}’) | grep Mountpoint | awk ‘{print $NF}’ | tr -d \”,. El cual nos muestra la ruta exacta y lista para utilizar.

Esto es todo por el momento. Pronto veremos como automatizar ciertas acciones en nuestros proyectos.

¡Un saludo Nómada!

 

Instalar Gitea en Raspberry Pi 3 con Docker
Etiquetado en:                                 

Deja un comentario

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