RSSOwl: Cliente Win lector RSS con GitLab

Estoy probando lectores de feeds RSS para monitorear la actividad de GitLab. Las extensiones para Chrome son bastante rígidas y rudimentarias (las gratuitas).  RSSOwl es una aplicación de escritorio gratuita (ver licencia en GitHub) disponible para MS Win, requiere Java funcionar.

Primer feed de un proyecto en GitLab

Para empezar voy a usar un proyecto público (gitbook) de GitLab como ejemplo.

En las opciones de proyecto en la sección “Actividad” podemos obtener el enlace para diferentes tipos de feed del proyecto, yo escojo leer todos.

En RSSowl en la barra lateral horizontal de la izquierda creo una estructura de carpetas para que me resulte más sencillo ordenar todo.  Añado mi primer feed (https://gitlab.com/soka/gitbook.atom?rss_token=LpiiekDZBwNUzTakrwLt).

Cuando pinchamos sobre un feed nos lleva al origen de la información en GitLab en el navegador Web.

GitLab también nos da la posibilidad de leer los feeds de un grupo.

Funcionalidades RSSOwl:

  • Ordenamiento de feeds en estructura de carpetas y subcarpetas.
  • Creación de etiquetas personalizables por colores para clasificar los feeds (un feed puede tener más de un label asignados)
  • Opciones de búsqueda avanzadas (por etiquetas, título, …)
  • Podemos compartir un feed en redes sociales y otros medios.
  • Funciona con repositorios privados de GitLab.
Anuncios

Demo GitLab Pages con GitBook

Introducción

Demo GitBook: Ver el proyecto en GitLab 

He abierto una cuenta de pago en GitLab para alojar mis proyectos públicos y algunos trabajos profesionales privados.  En GitLab al igual que en GitHub Pages podemos no sólo guardar repositorios de código fuente sino que también permite crear Webs estáticas muy fáciles de mantener, por ejemplo para guardar manuales o documentación de un proyecto o cualquier otro propósito que se nos ocurra (nuestra página de presentación personal por ejemplo).

GitLab ofrece en su Web ejemplos de algunas páginas de ejemplo:

Yo voy a partir del ejemplo realizado con GitBook para clonarlo en mi cuenta de GitLab y estudiar como funciona.

GitBook

GitBook (docs oficial) es un plataforma para generar documentación con un formato sencillo centrado en los contenidos.  Antes de empezar debemos instalar algunas dependencias para poder generar nuestra Web partiendo de los contenidos en archivos escritos con sintaxis MarkDown.

GitBook se distribuie como páquete npm JS. Para MS Win7 descargamos e instalamos Node.js:

Desde el command prompt de Node.js en consola instalamos GitBook:

npm install gitbook-cli -g

Creación de proyecto en GitLab

Ahora vamos a crear un nuevo proyecto en GitLab llamado “gitbook” y vamos a clonar el repositorio de ejemplo GitLab pages de GitBook https://gitlab.com/pages/gitbook.git.

Cuando lo tengamos en nuestro repositorio podemos clonarlo a nuestro ordenador local para poder modificar los documentos y la Web resultante.

En mi caso:

git clone https://gitlab.com/soka/gitbook.git

Usando npm y el paquete GitBook podemos editar en local y visualizar los cambios sin necesidad de hacer un commit al servidor GitLab.

gitbook build

Para generar el HTML partiendo de los archivos MD. O la opción serve para arrancar un servidor Web local donde visualizar los cambios (http://localhost:4000) sin necesidad de subirlos a GitLab.

gitbook serve

Generar la página en GitLab

Este punto me ha resultado un poco confuso en un primer momento ya que el funcionamiento no es exactamente igual a GitHub Pages.

El archivo “.gitlab-ci.yml” del repositorio es un fichero YAML que contiene las instrucciones para generar la página.

El archivo YAML se puede usar en la computadora local con GitLab CI (integración continua), GitLab Runner es una aplicación para automatizar la compilación y tests de los proyectos fuente , aún no he tenido tiempo de investigar mucho como se configura (Nota: Investigar compilación automatizada de proyectos con VS2012 .NET C# usando MSBuild).

Por el momento he dado con una forma mucho más sencilla compilando el proyecto en el propio GitLab. En las opciones de proyecto en el apartado CI/CD en Pipelines lanzamos la ejecución, hace lo mismo que si ejecutasemos el runner en nuestro ordenador local pero en el propio GitLab, muestra la salida de consola con la ejecución:

Al finalizar la ejecución YAML si todo ha ido correctamente podemos en Settings > Pages la ruta de la Web recién creada (https://soka.gitlab.io/gitbook):

Ahora ya podemos ver como queda:

Páginas en GitBook

GitBook Usa el archivo SUMMARY.md para definir la estructura de la documentación. Podemos crear una nueva página añadiendo la ruta del fichero MD.

Cuando hagamos el commit GitLab automáticamente compila el YAML en el pipeline y genera la nueva Web con los últimos cambios.

Enlaces

 

 

GitLab: Un oasis para los desarrolladores con integración DevOps

GitLab es una aplicación de gestión de proyectos software, permite de forma colaborativa llevar a cabo cada etapa del ciclo de vida de un proyecto, desde el plan inicial donde definimos las funcionalidades que debe cumplir hasta testear y liberar nuevas versiones de forma continua y automatizada.

A pesar de contar con muchas funcionalidades añadidas el elemento central de GitLab es sin duda un sistema DVCS (Distributed version control System) para gestionar el código fuente de nuestros desarrollos basado en Git, merece la pena detenerse un poco en comentar que es Git, creado por Linus Torvalds y distribuido con licencia libre GPL permite mantener repositorios de código fuente donde poder sincronizar los cambios realizados por un equipo de desarrolladores, por ejemplo el kernel de Linux se mantiene en Git, una de las aplicaciones más populares que usa Git como elemento central es GitHub.

La forma más común de trabajo en Git es partir de un proyecto nuevo en nuestro PC local o sincronizar uno existente en el repositorio central (‘git clone’) y comenzar a trabajar en local, de forma periódica querremos integrar nuestros cambios en el repositorio central (por HTTP, FTP, rsync o mediante un protocolo nativo), para ello usamos varios comandos encadenados (‘git add’, ‘git commit’,’git push’) y acompañamos los cambios con comentarios, normalmente para evitar recordar todos estos comandos existen clientes gráficos de escritorio para casi todos los sistemas operativos, para Windows normalmente utilizo GitHub Desktop, un desarrollo muy interesante programado en Electron (framework JS, HTML y CSS para crear aplicaciones de escritorio). En Debian directamente utilizo el terminal para trabajar con Git y no perder así lo que conozco sin depender de ninguna aplicación.

Primer paso: Crear una cuenta en GitLab.com (SaaS)

A pesar de que vamos a probar GitLab en una instalación propia recomiendo que os registréis en la Web de GitLab, una vez registrados contareis con un espacio para proyectos en su servidor. Una de las características que más me ha llamado la atención es que ofrece proyectos privados con la versión gratuita y está abierto a colaboradores, esto no es así en GitHub (sólo con el plan de pago) por ejemplo, me parece enormemente útil si desarrollamos proyectos para un cliente o formamos parte de un equipo de desarrolladores de una empresa.

Incluso los 4 dolares mensuales por usuario son muy asequibles con todas las funcionalidades que ofrecen y comparado con los precios de GitHub, BitBucket o VSTS (Visual Studio Team Services de MS) me ha parecido el más económico, creo que merece la pena pagar si se va a dar algún tipo de uso profesional.

Yo me he creado un pequeño proyecto público de prueba en https://gitlab.com/ikernaix/MyTestPrj.

El interfaz del proyecto luce impecable y además del repositorio Git tenemos un montón de opciones para controlar la actividad del proyecto, Issues o peticiones de cambios (se pueden asignar a usuarios, definir una fecha límite, etiquetas y otros atributos), las peticiones se pueden ordenar en una especie de tablero Kanban visual con columnas personalizables. Podemos relacionar unas peticiones con otras y introducir comentarios e información de los avances y compartirlos con el equipo.

Ofrece una Wiki para cada proyecto donde podemos crear manuales y documentación del proyecto en diferentes páginas (sintaxis MarkDown). Para desarrollar integraciones con otras aplicaciones ofrece una API (WebHooks para recibir eventos y notificaciones del proyecto). Parece que entre las integraciones con otras aplicaciones están las más populares, entre ellas Slack o Bugzilla que me gustan mucho. También me he informado un poco y parece que Trello tiene un plugin o power-up para comunicarse con GitLab (todo sería probarlo, también servicios de automatización de flujos de trabajo como Zapier ofrecen alguna cosa).  Otra de las características a destacar de GitHub son los grupos, aún no he tenido mucho tiempo para investigarlo a fondo pero parece muy útil, los grupos pueden hacer referencia a uno o varios proyectos, esto cobra mucho sentido cuando trabajamos con proyectos grandes formados por varias aplicaciones software y incluso diferentes tecnologías.

Otros servicios y funcionalidades a destacar en la versión gratuita SaaS (listado completo en la Web oficial):

  • Time tracking (parece un poco básico, yo uso Plus For Trello en Trello por ejemplo con un propósito similar).
  • Webs estáticas con GitLab Pages (equivalente a GitHub Pages que me encanta para hacer manuales por ejemplo).
  • CI/CD: Servicios de integración y desarrollo continuo. Simplemente genial, permite automatizar la compilación o ejecución de tests. GitLab Runner es una aplicación independiente para manejar los proyectos en la máquina local y automatizar estas tareas, se comunica con la API de GitLab CI/CD (multiplataforma escrito en Go), los ficheros de configuración con las ordenes me recuerdan los Makefile para proyectos C con los que trabajaba antaño, en este enlace una introducción rápida a CI/CD.
  • LFS: Para enlazar ficheros pesados que es mejor no subir al repositorio (Git LFS client) y se guardan en repositorios externos. Se basa en una serie de extensiones de ficheros que definimos como muy grandes (iso por ejemplo).

Las opciones de las versiones de pago son muchas más y llevaría un buen rato mencionarlas todas, además si la versión gratuita ofrece todo lo que promete (a veces pueden existir limitaciones que no se mencionan como el espacio de alojamiento) podemos empezar probándola de modo profesional y al de un tiempo pasar a planes de pago.

Comenzar a trabajar con GitLab

GitLab se distribuye bajo doble licencia, EE (Edición Empresarial) y CE (Edición Comunitaria)GitLab Community Edition is free and open sourced”, tiene diferentes planes y precios (ver en este enlace), permite que lo instalemos en nuestro propio servidor o que sea alojado en su “nube” (tal vez lo más recomendable para uso profesional). El desarrollo CE soportado por la comunidad es suficiente para pequeños o medianos grupos de trabajo. A pesar de que la forma de instalación recomendada para Debian es usando el gestor de paquetes (por desgracia solo existen para x64) existe una forma aún más rápida que es descargar una máquina virtual Debian con GitLab instalado y funcionando. La imagen para VBox (creada con Debian 9 y formato OVA) se puede descargar de Bitnami en este enlace “GitLab CE Virtual Machines“.

 

En pocos minutos ya esta arrancada la máquina virtual y puedo acceder a GitLab usando un navegador desde el SO anfitrión que ejecuta VBox.

La máquina virtual no tiene interfaz gráfico, pues mejor la verdad. Consultando la dirección IP asignada por NAT en VBox podremos acceder ya a la Web desde otra máquina en la red (el usuario es root y la clave creada por BitNami en el arranque de la máquina virtual, en mi caso “qBEm684xTleJ”) .

A simple vista todo es muy similar al interface Web cuando he abierto la cuenta en GitLam.com. En estos casos cuando trabajamos con una VM el problema suele ser la integración con el correo electrónico para recibir notificaciones y otros mensajes, pero si el resto funciona no me parece imprescindible (efectivamente he tratado de cambiar la clave de Admin y el correo de confirmación no ha llegado).

Las preferencias de administración tienen un montón de opciones que ahora no voy a comentar, tokens de seguridad, llaves SSH, GPG, notificaciones de correo electrónico globales y por proyecto…

Desde el área de Admin podemos gestionar los proyectos, grupos y cuentas de usuarios y otro montón de opciones.

Proyectos en GitLab

Con GitLab los repositorios Git se convierten en auténticos centros de gestión de proyectos en toda su amplitud. He creado un proyecto de prueba para comenzar: https://192.168.221.106/root/my-test-project/.

Conclusiones

  • Los planes de pago SaaS son bastante económicos en comparación con otras soluciones similares, me estoy planteando contratar uno para mi uso personal.
  • Edición comunitaria (CE) de código abierto y empresarial (EE) para uso profesional.
  • Podemos instalarlo en nuestro propio servidor (el problema probablemente seguramente será mantenerlo después). Que el propio código fuente de la edición CE este mantenida en GitLab dice mucho.
  • Licencia MIT de código abierto.
  • Para sacarle el máximo provecho lo podemos combinar con Trello o con alguna plataforma de mensajería como Gitter (tiene muy buena pinta) o Slack.

Enlaces

 

 

 

 

 

 

 

 

 

Debian 9: Control remoto usando vnc4server

Para poder controlar de forma remota mi equipo de sobremesa de casa con Debian 9 Xfce siempre instalo un servidor VNC. A continuación los pasos básicos para ponerlo en marcha.

Instalar servidor VNC

Usamos el gestor de paquetes como root para instalar el servidor VNC

 # apt install vnc4server

Establecer una clave

Debemos establecer una clave para  la conexión del cliente, con el prompt de la sesión de usuario local (‘# su usuario‘):

$ vncpasswd
Password:
Verify:
Would you like to enter a view-only password (y/n)? n

Crear script de arranque xstartup

Ahora debemos crear un script para arrancar el gestor de ventanas en ‘~/.vnc/xstartup’. Dependiendo de la distribución GNU/Linux el gestor de ventanas gráficas puede variar el contenido del script.

popu@pc-popu:~$ nano .vnc/xstartup 
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &

Arrancar la sesión VNC

# vncserver -localhost no -geometry 800x600 -depth 24

Podemos comprobar las sesiones activas con el siguiente comando:

$ vncserver -list

Parar la sesión:

# vncserver -kill :2

Cliente

Instalamos el cliente VNC:

# apt install xvnc4viewer

Nos conectamos al servidor con la IP y detallando el número de sesión activa:

$ xvncviewer 10.1.1.124:1

 

 

 

Debian 9: Conectar cliente correo Thunderbird a MS Exhange OWA usando DavMail

Introducción

Mozilla Thunderbird es un cliente de correo maduro y gratuito, instalarlo en muy fácil en Debian 9 usando el gestor de paquetes:

# apt-get install thunderbird

Configurarlo para que funcione contra un servidor MS Exchange requiere algunos pasos extra, como siempre el software libre y el privativo no se entienden muy bien.

DavMail POP/IMAP/SMTP/Caldav/Carddav/LDAP Exchange Gateway

Voy a usar la aplicación DavMail (implementado en Java) como gateway o pasarela entre ambas aplicaciones, DavMail se comunica con el cliente Web OWA (Outlook Web Access).

La instalación de DavMail es muy sencilla con el gestor de paquetes:

# apt-get install davmail

Correo entrante y saliente

Cuando lo abrimos se ejecuta de fondo minimizado, lo primero es configurar la conexión, es realmente sencillo, prácticamente solo hay que definir la URL de OWA y el protocolo EWS.

A continuación debemos configurar nuestra cuenta de correo en Thunberbird el correo entrante y salientes se conectaran a puertos locales de DavMail que funciona como gateway:

  • Correo entrante: IMAP conectado a puerto local 1143 con credenciales acceso dominio\usuario. Seguridad de conexión ninguna.
  • Correo saliente: SMTP servidor local en el puerto 1025 sin seguridad de conexión yacceso dominio\usuario.

En el primer arranque tal vez tengamos problemas con DavMail asociando los puertos locales:

“Unable to bind server socket for SMTP on port 1025” ….

A pesar de cerrar DavMail parece que algún proceso Java se quedaba bloqueando los puertos:

# netstat -lptu

Yo he liberado los puertos 1025,1110,1143.1080,1389 de forma manual con:

# fuser -k -n tcp 1025

Una vez arrancado DavMail de nuevo empieza a registrar actividad. DavMail también contiene un visor de logs para seguir su ejecución:

Libreta de direcciones

También podemos sincronizar la libreta de direcciones usando LDAP, añadimos una nueva libreta con esta configuración:

Calendario

Archivo > Nuevo > Calendario: Seleccionamos calendario de red.

 

 

 

 

 

 

ownCloud: Tu nube privada de datos

Introducción

Ayer a la tarde en algún momento me pareció una excelente idea formatear mi ordenador de sobremesa e instalar Debian 9, a continuación  instale el emulador de máquinas virtuales Virtual Box y me descargue una imagen de Linux ya creada con ownCloud preinstalado de BitNami, en poco menos de una hora ya estaba configurando los plugins de ownCloud y para mi sorpresa todo ha funcionado más o menos a la primera. 

ownCloud permite crear cuentas de usuarios con su almacenamiento asociado, los usuarios registrados pueden compartir los archivos entre si o mediante enlaces públicos, protegidos o no por contraseña o con una fecha de caducidad (puede incluso enviar por correo electrónico el acceso a cuentas de invitaxs), en este aspecto cumple con todo lo que debe tener un aplicativo de este estilo.

Para no perder de vista los archivos más importantes en cada momento (por ejemplo si estamos realizando algún seguimiento especial de un proyecto) podemos marcar carpetas y ficheros como favoritos, la funcionalidad de asignar una o varias etiquetas como categorías por ejemplo también está presente.

Para cambiar el puerto donde se ejecuta el servidor Web he usado esta guía.  Ahora está trabajando con el 8080, he tenido que deshabilitar las reglas del Firewall IPTables usando estos pasos.

Plugins

La colección de plugins no es precisamente impresionante, he instalado la mayoría de ellos en poco rato sin problemas.

Activity

Activity es un plugin que permite controlar la actividad sobre los ficheros y carpetas, podemos detallar si queremos mayor o menor nivel de detalle e incluso podemos enviar las notificaciones por correo.

 

Tengo que reconocer que me ha costado poner en marcha el servidor de correo SMTP usando Gmail

Después de romperme la cabeza y bastante prueba y error el manual en este enlace es más o menos lo que he hecho.y al final he conseguido mandar el correo de prueba, ahora periódicamente llega un resumen de actividad en ownCloud por correo electrónico.

QOwnNotesAPI

Hace poco redacte un post sobre Joplin, un editor de código abierto que pretendía ser una alternativa a EvernoteQownNotes es muy parecido a Joplin, es un editor MarkDown de texto plano con las opciones básicas, lo genial es que podemos sincronizar estas notas usando el cliente de escritorio de ownCloud.

Podemos escribir tranquilamente mientras todos los cambios se sincronizan en ownCloud para otros compañerxs.

Conclusiones

OwnCloud es un producto que funciona como lo tiene que hacer, con las opciones básicas necesarias para montar tu nube privada para un grupo de usuarixs, evidentemente no tiene nada que ver con Google Drive o OneDrive de MS.

QOwnnotes ha sido una sorpresa muy agradable para los que gustan de soluciones sencillas como a mi, con pocas dependencias (editor de texto plano) su atractivo radica precisamente en ello. No conocer la sintaxis MarkDown puede ser puede un obstáculo insalvable para la gente habituada a aplicaciones ofimáticas de edición de texto como MS Word, sin embargo para equipos técnicos donde queremos redactar documentos sin perder mucho tiempo en el formato y concentrándonos en los contenidos OwnCloud  combinado con QOwnNotes puede ser una excelente herramienta de trabajo colaborativo.