673 - Ocho imprescindibles para desarrolladores

673 - Ocho imprescindibles para desarrolladores

En este episodio te traigo ocho #herramientas imprescindibles para #desarrolladores independientes que las puedas alojar en modo #selfhosted con #docker

1:25
-3:15

Cuando hablo de desarrolladores independientes, me refiero a un desarrollador o un equipo pequeño de desarrollo que busque tener un entorno de trabajo productivo y eficiente y no depender de servicios de terceros. Es decir, ser un desarrollador o equipo de desarrollo en modo self-hosted. Es cierto, que lo más cómodo y fácil es utilizar servicios de terceros como puede ser GitHub, DockerHub, Jira, Confluence, etc… Pero, en ocasiones, en las que no queremos depender de terceros, o simplemente, queremos tener un control total sobre nuestros datos, es cuando necesitamos un entorno self-hosted. Y esto es precisamente lo que te propongo en este episodio, ocho herramientas con las que ser un desarrollador independiente.

Ocho herramientas imprescindibles para desarrolladores independientes

¿Por que me ha dado por esto?

Ya te habrás dado cuenta que ando metido en varios side projects, como dice el amigo Daniel Primo de Web Reactiva. La mayoría de estos proyectos son Open Source, prácticamente todos, pero no todos. Por otro lado, en ocasiones, no quieres que un proyecto sea visible hasta que alcance cierto grado de madurez.

¿Que hacer en estos casos donde no quieres que un proyecto sea visible por madurez o por otras razones? En estos casos, o bien puedes utilizar herramientas de tercero que te permitan tener proyectos no visibles, o bien te lo montas por tu cuenta, te haces un lobo solitario.

Ahora bien, tener algo que no quieras que sea visible alojado en casa de un tercero es como aquel. Todo depende de la confianza que tengas.

Por otro lado, es posible, aunque esto es cada vez mas raro que te encuentres en algún sitio aislado donde no es posible o en ocasiones no es posible acceder a sitios de terceros. Este es un ejemplo claro donde tener estos tus propias herramientas para un desarrollador lobo solitario viene fantástico.

En mi caso particular, es una mezcla entre tener algunos proyectos no visibles y ese gusanillo de Juan Palomo, yo me lo guiso, yo me lo como. Por que no te quiero engañar, disfruto sabiendo que todo el stack tecnológico es mío y lo gobierno yo, con el permiso del proveedor del dominio y del hosting claro.

Así que, finalmente, para estos side projects he agrupado mi stack tecnológico en las siguientes cinco herramientas que quiero compartir contigo.

Gitea

Gitea es un servicio de desarrollo de software autoalojado, todo en uno y fácil de usar. Incluye alojamiento Git, revisión de código, colaboración en equipo, registro de paquetes y CI/CD. Es similar a GitHub, Bitbucket y GitLab.

Originalmente, Gitea se bifurcó de Gogs, y casi todo el código ha sido modificado.

Características

  • Alojamiento de Código. Gitea permite crear y gestionar repositorios, explorar el historial de commits y archivos de código, revisar y fusionar contribuciones, gestionar colaboradores, manejar ramas y más. También admite funciones comunes de Git como etiquetas, Cherry-pick, hooks y herramientas de colaboración integradas.
  • Ligero y Rápido. Uno de los objetivos de diseño de Gitea es ser ligero y rápido. A diferencia de otras plataformas de alojamiento de código más pesadas, Gitea es eficiente y funciona bien en servidores con recursos limitados.
  • Fácil Despliegue y Mantenimiento.Puede instalarse fácilmente en distintos servidores sin configuraciones complejas ni dependencias adicionales. Esto lo hace ideal para desarrolladores individuales o pequeños equipos que quieran gestionar su propio servicio Git.
  • Seguridad. Gitea se enfoca en la seguridad, ofreciendo gestión de permisos de usuario, listas de control de acceso y otras funciones para proteger el código y los datos.
  • Revisión de Código. Soporta flujos de trabajo con Pull Requests y AGit. Los revisores pueden examinar el código en línea y dejar comentarios. Los autores pueden responder y modificar el código directamente en la plataforma, mejorando la calidad del software.
  • CI/CD. Gitea Actions permite la automatización de CI/CD y es compatible con GitHub Actions. Se pueden escribir flujos de trabajo en YAML y reutilizar numerosos plugins existentes.
  • Gestión de Proyectos. Gitea permite rastrear requisitos, características y errores mediante columnas e issues. Los issues incluyen soporte para ramas, etiquetas, hitos, asignaciones, seguimiento de tiempo, fechas límite, dependencias y más.
  • Repositorio de Artefactos. Compatible con más de 20 tipos de gestión de paquetes, incluyendo Cargo, Chef, Composer, Conan, Conda, Container, Helm, Maven, npm, NuGet, Pub, PyPI, RubyGems, Vagrant, entre otros.
  • Comunidad de Código Abierto. Gitea es un proyecto de código abierto bajo la licencia MIT. Cuenta con una comunidad activa que mejora constantemente la plataforma e incentiva la colaboración.
  • Soporte Multilenguaje. Gitea ofrece interfaces en múltiples idiomas, permitiendo su uso global y facilitando la internacionalización y localización.

Opengist

OpenGist es un Pastebin autoalojado impulsado por Git. Todos los fragmentos de código se almacenan en un repositorio Git y pueden ser leídos y/o modificados usando comandos estándar de Git o a través de la interfaz web. Es similar a GitHub Gist, pero de código abierto y puede ser autoalojado.

Características

  • Crear fragmentos públicos, no listados o privados
  • Inicializar / Clonar / Extraer / Enviar fragmentos mediante Git a través de HTTP o SSH
  • Resaltado de sintaxis; soporte para Markdown y CSV
  • Buscar código en fragmentos; explorar fragmentos de usuarios, «me gusta» y bifurcaciones
  • Agregar temas a los fragmentos
  • Incrustar fragmentos en otros sitios web
  • Historial de revisiones
  • Dar «me gusta» o bifurcar fragmentos
  • Descargar archivos sin procesar o como un archivo ZIP
  • Inicio de sesión con OAuth2 usando GitHub, GitLab, Gitea y OpenID Connect
  • Restringir o permitir la visibilidad de fragmentos a usuarios anónimos

Registry

Docker Registry User Interface es un proyecto que tiene como objetivo proporcionar una interfaz de usuario simple y completa para tu registro privado de Docker. Puedes personalizar la interfaz con varias opciones. La opción principal es SINGLE_REGISTRY, que permite deshabilitar la selección dinámica de registros de Docker (manteniendo el mismo comportamiento que la antigua etiqueta estática).

Esta interfaz web utiliza Riot, una microbiblioteca de interfaz de usuario similar a React, junto con componentes riot-mui.

Sobre este proyecto escribí en el episodio 573 que titulé por fin tengo mi propio Docker Registry.

Docmost

Sobre Docmost te hablé en el episodio 611 que titulé una alternativa a Notio autoalojada y un lanzador. Docmost es una alternativa de código abierto a herramientas como Notion y Confluence. Ya sea que necesites gestionar una wiki, una base de conocimiento o una documentación extensa de proyectos, Docmost te ofrece las herramientas necesarias para crear, colaborar y compartir conocimiento de manera sencilla.

Características

  • Editor Colaborativo en Tiempo Real: Trabaja en las páginas junto con otros usuarios en tiempo real.
  • Diagramas: Soporte integrado para Draw.io, Excalidraw y Mermaid para crear diagramas fácilmente.
  • Espacios: Organiza las páginas por equipo, proyectos o departamentos para una mejor colaboración.
  • Gestión de Permisos: Controla el acceso al contenido con permisos fáciles de gestionar.
  • Grupos: Asigna permisos de forma unificada a los usuarios mediante grupos.
  • Comentarios: Añade comentarios a las páginas para mejorar la comunicación y recibir retroalimentación.
  • Historial de Páginas: Rastrea los cambios con un historial de versiones detallado.
  • Navegación Anidada: Reorganiza y anida páginas fácilmente a través de la barra lateral.
  • Búsqueda Avanzada: Encuentra rápidamente la información que necesitas con una búsqueda potente.
  • Adjuntos: Adjunta archivos a tus páginas para una referencia y compartición más sencilla.
  • Importación / Exportación: Importa y exporta páginas en formatos Markdown y HTML fácilmente.

Focalboard

Focalboard es una herramienta de gestión de proyectos de código abierto, multilingüe y autoalojada, que sirve como alternativa a Trello, Notion y Asana. 🚀

Características

  • Autoalojado: Puedes instalarlo en tu propio servidor sin depender de servicios en la nube.
  • Multilingüe: Soporta varios idiomas.
  • Modo individual o en equipo: Disponible como aplicación de escritorio o integrado en Mattermost para trabajo colaborativo.
  • Tableros personalizables: Permite organizar tareas con estados personalizados, etiquetas y más.
  • Compatible con Markdown: Facilita la escritura y organización de notas dentro de cada tarea.

Gose

GoSƐ es una herramienta moderna y escalable para la carga de archivos, diseñada con un enfoque en la simplicidad y escalabilidad. El único requisito para GoSƐ es un backend de almacenamiento S3, lo que le permite escalar horizontalmente sin necesidad de bases de datos o cachés adicionales. Los archivos subidos se dividen en fragmentos del mismo tamaño y se les aplica un hash MD5 en el navegador antes de subirlos. Esto permite a GoSƐ omitir fragmentos que ya existen, facilitando la reanudación de cargas interrumpidas y optimizando el almacenamiento.

Tanto las subidas como las descargas se gestionan directamente a través del servidor S3, por lo que GoSƐ solo maneja unas pocas peticiones HTTP en lugar de grandes volúmenes de datos. Internamente, utiliza funciones avanzadas de S3 como Multi-part Uploads y Pre-signed Requests para hacerlo posible.

Los usuarios pueden elegir entre múltiples buckets/servidores S3 preconfigurados, habilitar notificaciones en el navegador y por correo sobre cargas completadas, y establecer un tiempo de retención/expiración para cada archivo, gestionado mediante políticas de ciclo de vida de S3. Opcionalmente, también pueden acortar la URL del archivo subido mediante un servicio externo.

Actualmente, se admite la carga concurrente de un solo archivo a la vez, y los usuarios pueden observar el progreso mediante una tabla de estadísticas detalladas, una barra de progreso y un gráfico que muestra la velocidad de transferencia.

GoSƐ está diseñado para ser fácil de desplegar, ya que combina tanto el frontend como el backend en un solo binario o imagen de Docker. Se ha probado con AWS S3, Ceph RadosGW y Minio, y ofrece binarios precompilados e imágenes de Docker para los principales sistemas operativos y arquitecturas en la página de lanzamientos.

Características

  • Deduplicación basada en el hash del contenido. Si un archivo ya existe, la subida se completa instantáneamente sin necesidad de volver a cargarlo.
  • Multi-part Uploads en S3. Permite la reanudación de cargas interrumpidas.
  • Carga mediante Drag & Drop
  • Notificaciones en el navegador sobre cargas fallidas y completadas
  • Tiempo de retención/expiración configurable por el usuario
  • Copiar URL del archivo subido al portapapeles
  • Estadísticas detalladas de transferencia con barra de progreso y gráfico
  • Instalación simple mediante un único binario o contenedor
  • Escalabilidad horizontal con múltiples réplicas
  • Subidas y descargas directas a Amazon S3 mediante URLs prefirmadas
  • Soporte para nombres de archivo en UTF-8
  • Selección de buckets/servidores por el usuario
  • Opcional: Acortamiento de enlaces mediante un servicio externo
  • Opcional: Notificaciones sobre nuevas cargas con shoutrrr

Yopass

Yopass es un proyecto diseñado para compartir secretos de manera rápida y segura. El único propósito de Yopass es minimizar la cantidad de contraseñas que circulan en sistemas de gestión de tickets, mensajes de Slack y correos electrónicos. El mensaje se cifra/des cifra localmente en el navegador y luego se envía a Yopass sin la clave de descifrado, la cual solo es visible una vez durante el proceso de cifrado. Posteriormente, Yopass devuelve una URL de un solo uso con una fecha de expiración especificada.

No existe una forma perfecta de compartir secretos en línea, y siempre hay un compromiso en cada implementación. Yopass está diseñado para ser lo más simple y «tonto» posible, sin comprometer la seguridad. No hay un mapeo entre el UUID generado y el usuario que envió el mensaje cifrado. Siempre es recomendable enviar todo el contexto excepto la contraseña por otro canal.

Características

  • Cifrado de extremo a extremo usando OpenPGP
  • Los secretos solo pueden ser vistos una vez.
  • No se requiere creación de cuentas ni gestión de usuarios.
  • Los secretos se autodestruyen después de X horas.
  • Opción de contraseña personalizada.
  • Funcionalidad limitada para subir archivos.

ITTools

Respecto a ITTools le dediqué el episodio 621, titulado La herramienta definitiva para desarrolladores y administradores de sistemas.


Más información,

Deja una respuesta

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