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.
Uno 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.
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
- 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
- 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
Hubiesen 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.
Una vez creados mis calendarios, necesitaba visores/editores para los mismos, para lo que elegí:
Para escritorio, Linux/Windows, Thunderbird con el plugin Lightning
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
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.
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.
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.
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.
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.
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.
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
Pixlr como editor de imágenes, alternativa online rápida a Photoshop
Un simple panel de control web propio para control de las cuotas de mis clientes
Un simple «speed dial» propio que usamos en la oficina para tener las webs más comunes a un click
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
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.
Este 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.
17 comentarios en “Entorno de trabajo administrativo integrado para desarrolladores sobre Owncloud”