1 de octubre de 2026 · Ubuntu · DevOps
Fui terco por años. Así dejé por fin de pagar el impuesto de la nube.
Cómo dejé el hosting caro en la nube y convertí una MacBook Pro 2017 vieja en un servidor Ubuntu casero sin pago mensual.
Creo que muchos de nosotros somos tercos en algún aspecto. Yo fui terco durante años cuando se trataba de desarrollo de software.
No con el código, sino con el despliegue de ese código. Siempre tomaba el camino de menor resistencia en esa parte porque la verdad no me interesaban las redes ni configurar servidores y todo lo que eso implica. Solo quería tomar mi código y sacarlo a la World Wide Web, aunque nadie más que yo fuera a verlo.
El proyecto de la universidad
En la universidad tenía que construir algo que mostrara mis habilidades en algún campo de la informática, y naturalmente elegí una aplicación web. Era una aplicación CRUD sencilla con Angular (en inglés) + .NET (de cuando ambos venían juntos en una sola plantilla de .NET 5), pero de todos modos quería ponerla en internet lo antes posible.
En ese momento estábamos aprendiendo mucho sobre computación en la nube, así que me fui por ahí y la desplegué en Azure App Service. Eso significaba dos cosas: configurar el App Service para la aplicación y configurar una base de datos.
La parte de la aplicación era gratis. El nivel gratuito de Azure me daba hasta 60 minutos de cómputo al día, que era más que suficiente para un proyecto así. La base de datos ya era otra historia. Tenía que pagarla incluso en el nivel más bajo. (Azure ya agregó una oferta gratuita de base de datos SQL serverless, pero eso llegó después.)
Con los años seguí usando ese modelo. Desplegaba en Azure y, junto con eso, seguía pagando. Ese era el primer costo. El segundo era más dañino: me impedía aprender cosas nuevas. La terquedad me estaba frenando.
La etapa de Windows Server
Entonces decidí probar algo diferente: dejar Azure App Service y Azure SQL Database y contratar una máquina virtual con Windows Server en el nivel más bajo. Por una razón u otra pensé que así ahorraría dinero, ya que no necesitaría tres instancias de base de datos separadas para desarrollo, pruebas y producción.
Aprendí algunas cosas nuevas en el camino, pero realmente no me ayudó porque los costos seguían acumulándose. Al final me rendí. No quería seguir pagando por algo que no generaba ingresos, sobre todo cuando no tenía ningún interés en aprender sobre redes ni administración de servidores.
Y ahí me quedé un buen rato, porque era terco y no quería cambiar mis costumbres. Hasta hace poco, unos dos meses.
Probando Ubuntu
Siempre he sentido el impulso de empezar una empresa de software, porque creo que el software debería ser accesible para todos. Pero ese es tema para otra entrada. Lo importante es que no puedes empezar una empresa de software, ni ningún negocio, sin darte a conocer. Mi primer paso fue crear un sitio web y alojarlo, lo cual me devolvió justo a mi problema original: costos altos y cero ingresos.
Entonces, ¿ahora qué? Sinceramente, lo mejor que le pudo pasar a mi carrera: decidí probar otro método, y así fue como empecé a usar Ubuntu Server (en inglés).
Alojar en Ubuntu Server era muchísimo más barato de lo que Azure o una máquina virtual con Windows Server podrían ser jamás. Tengo que admitir que no me emocionaba tener que aprender redes y administración de servidores en otro sistema operativo, pero lo hice de todos modos.
Desplegué en un servidor de DigitalOcean (en inglés) por unos $5 USD al mes, que alcanzaba para correr mis aplicaciones de Angular del lado del cliente y prerenderizadas. Eso fue suficiente por un tiempo. Luego quise desplegar mi demo de Agricultura, y eso requería más recursos: SQL Server en Linux necesita al menos 2 GB de RAM.
El salto de precio no era enorme: unos $20 USD al mes por el mínimo de recursos. Pero sabía que eventualmente necesitaría más, y además había tenido una mala experiencia con un proveedor anterior: mismo precio anunciado, pero terminé pagando unos $32 USD. Todavía no sé cómo calcularon eso, pero no viene al caso. No quería caer en esa trampa otra vez.
La resurrección de la MacBook Pro 2017
Entonces, ¿cuál era mi otra opción? Por suerte, tenía una MacBook Pro 2017 guardada. Llevaba más de dos años sin tocarla y ni siquiera estaba seguro de que encendiera, pero encendió. Pensé que podía hacer algo con ella, y resultó que sí. Las Mac con procesador Intel pueden correr Ubuntu Server sin problema. La mía es lo bastante vieja como para ser anterior al chip de seguridad T2 de Apple, que hace que las Mac de 2018 en adelante sean un poco más complicadas (en inglés). Así que instalé Ubuntu Server en ella.
Aquí venía el siguiente problema: ¿cómo hago que sea accesible desde afuera? Pensé que tenía que llamar a mi proveedor de internet para que me diera una dirección IP pública estática. No hacía falta. Todo lo que tuve que hacer fue configurar un túnel de Cloudflare (en inglés) que se conecta directamente a mi máquina.
¿Y para acceder yo al servidor? Para eso empecé a usar Tailscale (en inglés). Con Tailscale SSH (en inglés) pude conectarme directo a mi máquina incluso estando fuera de mi red local. Después blindé el servidor para rechazar toda conexión entrante excepto SSH, ya que el túnel de Cloudflare se encarga de todas las solicitudes entrantes a mis sitios.
Fue tan sencillo que, mirando atrás, me da un poco de coraje conmigo mismo por no haberme permitido hacerlo antes. Ahora tengo un servidor Ubuntu en mi escritorio que sirve todas las aplicaciones que necesito, incluido el sitio donde estás leyendo esto, sin pago mensual (aparte de un poco de electricidad). Otra cosa que vale la pena mencionar: el túnel de Cloudflare no cuesta nada, y Tailscale tiene un plan personal gratuito (en inglés). Ojalá lo hubiera hecho años atrás.
La conclusión
Supongo que lo que quiero decir es: no seas terco. Si tienes problemas con tu configuración actual, tómate un momento para ver otras soluciones, y si encajan con tu sistema, vale la pena considerarlas. En el peor de los casos, aprendes algo nuevo que podrás usar en el futuro.