MarcosBL

Aprendiz de todo, maestro de nada

Entorno de trabajo administrativo integrado para desarrolladores sobre Owncloud

Un poco de historia

Con el paso del tiempo y los clientes, todo freelance va poco a poco puliendo su forma de trabajar, asi como sus herramientas. En el caso del sector de desarrollo web, por lo general, más aún, ya que una gran cantidad de día la pasamos frente al ordenador, que no es sólo nuestra herramienta organizativa, sino también productiva.

Overwhelmed-by-EmailsUno de los errores laborales que yo he cometido de forma reincidente ha sido el no prestar suficiente atención a la documentación, test y mejora de este entorno de trabajo. Y no hablo ahora de mercurial/git, sublimetext/atom o debian/centos, elecciones que muchas veces tienen más de sentimental/convicciones que de trasfondo práctico. Me refiero al entorno organizativo del día a día, relaciones con clientes, documentación, citas, información de tu sector, etc…

Empiezas gestionando todo con el correo. Carpetas IMAP, adjuntos, etiquetas como mucho: no necesitas más.

Luego pasas por la fiebre «cloud«, servicios SaaS que prometen organizar mejor tu dia a dia, hacerte más eficiente y productivo, relegar la procrastinación; en definitiva, hacerte un mejor profesional.

Aquí empieza un largo periplo de altas, trials, configuraciones, demos, screencast y demás, hasta que acabas encontrando el servicio «perfecto»: ese donde, aunque tienes que cambiar completamente tu forma de trabajar, te encuentras a gusto.

Porque no existe el «SaaS que se adapta a tu forma de trabajar«. Qué va: te adaptas tú, en mayor o menor grado, seas más o menos consciente. Al igual que no existe el «Cloud»: son los ordenadores de otros.

Y al final acabas por decidir que quieres hacerte tu propio monstruito, para tener todo alojado bajo tu control, sin sorpresas, y pudiendo intercambiar piezas sin demasiado problema… que es el motivo de este post, y por lo que probablemente estés leyendo esto.

En un primer intento por integrar mi entorno de trabajo definí estas premisas:

Alternativa libre a Dropbox hecho

  • Sincronización automática de archivos para poder trabajar de forma offline entre todos mis PCs y mi móvil, bajo cualquier SO hecho

Alternativa libre a Office / Wiki al 90%

  • Tener toda la documentación en un formato no propietario y de fácil edición casi, falta soporte hojas de cálculo/presentaciones, subsanado con Google Docs
  • No estar atado a tener que disponer de un editor concreto instalado en un PC hecho
  • Poder no solo leer, sino editar la documentación tanto en local como en web hecho
  • Poder disponer de mi documentación en cualquier lugar, incluido el móvil hecho
  • Disponer de versionado de los archivos hecho

Alternativa libre a Outlook/Google hecho

  • Disponer de calendarios/tareas sincronizados entre Web/PC (Thunderbird)/Android hecho
  • Disponer de correo electrónico sincronizado entre Web/PC (Thunderbird)/Android hecho

Alternativa libre a RSS Feedly hecho

  • Acceso a lector de feeds RSS sincronizado Web/Móvil hecho

Alternativa libre a Bitbuket/Github hecho

  • Mantener un sistema de control de versiones, pero con repos privados/públicos a mi elección, con una interfaz web ágil y simple, y alojado bajo mi control. Debe tener además al menos Wiki e Issues, y estar en castellano, para que los clientes puedan entrar a declarar incidencias.hecho

Para todo lo demás… hecho

  • Fácil acceso a las herramientas de terceros para las que aún no dispongo de alternativa self-hosted (Toggl, Google docs, etc…) hecho

Stack base, Owncloud sustituye a Dropbox, Office y Wiki

Tras probar varios entornos integrados, y descartarlos por uno u otro motivo, decidí fijar como componente principal Owncloud, ya que daba solución a la mitad de los requisitos de mi lista, admitía plugins para poder en un futuro ampliar funcionalidades faltantes, y es un producto con un historial largo y con montones de colaboradores.

docs

Realicé una instalación básica con paquete en un servidor VPS de OVH de 2.99€ / mes con estos specs: KVM OpenStack – 1 vCore 2,4 GHz – 2 GB RAM – SSD 10 GB – RAID 10 local

El sistema base es una Ubuntu 14.04, sobre ella instalé Apache, PHP5 y MySQL para dar soporte a Owncloud y demás servicios, así como los clásicos Bind, Postfix, Dovecot, etc… pero realmente cualquier instalación base o panel de control servirían perfectamente al efecto.

Los plugins elegidos fueron:

  • Activity – Me permite ver un log de la última actividad, ficheros subidos, eliminados, etc
  • Deleted files – Papelera temporal de la que poder rescatar ficheros eliminados por error
  • Documents – Nos permite editar online ficheros .odt de OpenOffice/LibreOffice. Las hojas de cálculo están aún en camino, seguiré usando entre tanto Google Docs

odt

  • Gallery y Video Viewer – Visualización a un click en lightbox, así como en galerías ordenadas automáticamente, de nuestras imágenes y videos
  • PDF Viewer – El nombre lo dice todo, no requiere plugin PDF de navegador
  • Share Files – Compartir de una y mil formas los archivos y carpetas de nuestro Owncloud, definiendo permisos, etc…
  • Versions – Añade versionado de archivos a nuestro Owncloud, para poder volver a una versión anterior en caso de error
  • External Sites – Nos permite asignar un nombre, una URL y un icono, y que aparezcan como menús dentro de Owncloud. Un click los abre, pero en un conveniente iframe inferior, para tener todo dentro de la misma interface. Asi es como he integrado los servicios que no incluye Owncloud, como por ejemplo enlaces a hojas de cálculo en Google Docs.
  • Direct Menu – Complementa perfectamente al anterior, moviendo además nuestros iconos a una barra superior siempre visible y accesible a un click

gdocs

  • Text Editor – Permite editar ficheros de texto plano, html, etc, directamente desde la interfaz web. Es la base asimismo del Markdown Editor
  • Markdown Editor – En combinación con el anterior, nos provee de edición de documentación markdown con vista previa instantánea en web

markdown

owncloud-movilHubiesen estado bien por la integración, pero descarté Calendar y Tasks, porque su funcionamiento es muy pobre, y preferí instalar aplicaciones de terceros con más funcionalidades y mejor testadas. Calendar, por ejemplo, no soporta recordatorios, y Tasks depende de Calendar.

Con este stack, más la aplicación móvil de Owncloud para Android, tenía ya sustituto para mi Wiki y para Dropbox (o más bien BTSync, que es lo que he estado utilizando el último año):

  • Sincronización de archivos con cliente para todos los SO
  • Múltiples usuarios
  • Posibilidad de compartir carpetas
  • Visor de imágenes, videos, etc
  • Editor de ficheros de texto, odt y Markdown
  • Versionado de archivos

Calendarios y Tareas

Para los calendarios, elegí instalar otra solución de la misma base (PHP+MySQL) Baïkal, un servidor ligero de CardDav (contactos) y CalDav (calendarios), de sencilla instalación en menos de 5 minutos, y con un panel de control extremadamente sencillo.

baikal

Una vez creados mis calendarios, necesitaba visores/editores para los mismos, para lo que elegí:

Para escritorio, Linux/Windows, Thunderbird con el plugin Lightning

Calendarios-Thunderbird

Para Android, los sincronizo en background con DavDroid, y los gestiono con Business Calendar 2 (de pago, pero con un widget que vale millones) aunque cualquier otro serviría perfectamente

Calendarios - Android

Como gestor web, instalé un lector de calendarios también muy ligero llamado AgenDav 2, con los mismos requisitos simples de PHP+MySQL, y que a diferencia del que integra Owncloud, soporta perfectamente recordatorios desde su interfaz.

agendav

Como se puede ver en la captura, AgenDav se muestra en un iframe inferior, dentro de Owncloud, a través de un enlace en la barra de menús, gracias al plugin «External sites» mencionado anteriormente. Usaré este mismo truco en el resto de servicios de terceros instalados en este setup.

Correo electrónico

Poco secreto en esto. Lo cierto es que incluso hay un par de pugins que integran webmails dentro de Owncloud, como Rainloop o Roundcube, pero en el momento de esta instalación ambos iban, al menos una version por detrás de la del paquete Owncloud.

Así que para evitar problemas, decidí prescindir de la integración (al fin y a cabo, esto no es un Groupware, sino una instalación personal) y tirar de una instalación embebida de Afterlogic Webmail Lite, que ya conozco y que da excelentes resultados.

10 minutos después, ya tenía el webmail, con soporte para filtros Sieve, funcionando.

owncoud-correo

Por supuesto, integrar el correo en escritorio con Thunderbird o en Android es totalmente trivial, asi que no abundaré en ello, salvo quizá para recomendar el cliente Aqua Mail: es de pago, pero una virguería ultrapersonalizable, y su desarrollador es un absoluto crack.

correo-thunderbird

correo-aqua-mail

Feeds RSS

Soy un lector compulsivo, tengo algo más de 50 feeds de bastante tráfico, y me gusta poder dar una ojeada rápida 2-3 veces al día, para enterarme de las novedades legislativas de mi sector, o ver memes de gatetes, así que un lector de feeds sincronizado entre dispositivos, es obligatorio.

Aunque tras el cierre de Google Reader me pasé a Feedly, y es un servicio más que correcto, aquí lo que se pretende es tener lo más posible self-hosted, y no al capricho de terceros, así que una búsqueda rápida me llevó a Tiny Tiny RSS, PHP+MySQL, self hosted, con plugins, un theme muy parecido al de Feedly, y con aplicación para Android.

Exportar feeds de Feedly, importar en TTRRS, programar su cron de actualización, apenas 15 minutos: ya podemos integrar su botón en la interfaz y utilizarlo en móvil en la sala de espera del proctólogo.

rss-android

tinytinyrss

Repositorios Git

Como parece haberse popularizado Git muy por encima de sus alternativas, he migrado todos mis repositorios mercurial desde Bitbucket a Git utilizando este simple método:

Una vez convertidos a git, he instalado en el VPS Gogs (https://gogs.io/), una alternativa Open Source a Github, con algunas opciones menos, obviamente, pero extremadamente ligero, y muy sencillo de instalar y actualizar: ¡tanto, que basta con sobreescribir el binario!

Otra opción interesante que probé antes de decidirme por Gogs fue Gitlab, que incluye además Gitlab-CI y Mattermost (alternativa a Slack), pero en mi opinión es un infierno de dependencias y errores, a cambio de muy poca funcionalidad añadida.

gogs

Funcionalidad resumida de Gogs:

  • Multiidioma
  • Soporte completo de Git
  • Soporte para clonar repos remotos desde la interfaz web
  • Soporte para mirrors
  • Usuarios, Organizaciones y control de acceso
  • Repositorios públicos y privados
  • Incidencias y Wiki, tanto interno como externo
  • Pull Requests
  • Ramas, commits y diffs
  • Web hooks y Git hooks
  • Es tan ligero que ni te enteras que está instalado. En un VPS. De 2.99€ al mes.

gogs2

Otros servicios de terceros

Obviamente, utilizo aún servicios de terceros, esto es solo un primer intento, y un «work in progress«, pero estoy bastante satisfecho con el resultado. Incluso en aquellos servicios para los que aún no tengo una alternativa seria libre, el disponer de un simple enlace de acceso rápido en la botonera superior ha supuesto una diferencia notable en la comodidad/usabilidad de los mismos, permitiéndome tener ahora mismo 6 pestañas fijas menos en el navegador que antes.

Algunos de estos servicios integrados por medio de «External sites» son

Toggl, como tracker de trabajo

toggl

Pixlr como editor de imágenes, alternativa online rápida a Photoshop

pixlr

Un simple panel de control web propio para control de las cuotas de mis clientes

panel-web

Un simple «speed dial» propio que usamos en la oficina para tener las webs más comunes a un click

speed-dial

Una especie de red social que empecé justo cuando empezaba a utilizar Twitter y que, obviamente, abandoné, pero que aún utilizo como «cajón de sastre» de chistes malos y enlaces tech

dejadefumar

Conclusión

Bueno… pues ya tenemos el 95% de nuestra vida digital en nuestras manos, alojada en nuestro propio servidor por unos miserables 2.99€/mes (con todo esto instalado, y mucho más, la máquina ni se entera). Si sumamos el importe de apps de pago para móvil, etc… quizá hagamos una ingente inversión inicial única de aproximadamente… 10€ a cambio de nuestra libertad.

Asimismo, el tiempo total empleado en seguir esta guía, sus enlaces y demás (¡para un desarrollador, ojo!) no debería ir mucho más allá de un par de horas. Tres si tienes Twitter.

tiredEste post se ha alargado muchísimo más de lo esperado, me ha llevado redactarlo casi tanto tiempo como me ha llevado el setup, así que espero por vuestro bien que a alguien le sea de utilidad. Los culpables, los que me habéis preguntado en Twitter por el mismo en general, y Alberto Luengo y Oscar Lage en particular.

Si conoces otro servicio que merezca ser integrado, sea self-hosted o de terceros, no dudes y dispara en los comentarios. Como puedes ver, las opciones son infinitas, es elección tuya el decidir cuales son tus aplicaciones de productividad más usadas, e integrarlas con el «External sites» de Owncloud. Con eso, el propio Owncloud, y las aplicaciones que comento en esta entrada, la organización y las herramientas no deberían ya ser un problema. O quizá puedas contratarme, claro.

Y ahora… GO FUCKING GET THINGS DONE

17 comentarios en “Entorno de trabajo administrativo integrado para desarrolladores sobre Owncloud

Deja una respuesta

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