Terraformando: 15 servicios por $18 al mes. Por qué mantengo mi propio servidor
Contenido
Voy a tener que usar la ciencia para salir de esta
- Mark Watney, The Martian
Cómo olvidar cuando estaba tomando un curso de AWS y dejé una instancia EC2 abierta sin darme cuenta. Por suerte decidí elegir la más barata, costándome solo $4 USD. Conversando con más devs me entero que otros han tenido cobros de $100 USD o hasta $200 USD cometiendo mi mismo error, solo que con instancias más caras. Por suerte paran ellos, se solucionaron con un correo y un poco de burocracia, pero me dejó la sensación de que había esquivado una bala.
No me malentiendan, no quiero demonizar al cloud moderno, pero sí pareciera que te cobra por una especie de "aprendizaje" que te hace depender del azar para ser perdonado. Cuando lo único que separa tu cuenta bancaria del desastre es el azar, empiezas a pensar como Watney varado en Marte: dejar de esperar que el rescate llegue a tiempo y ponerte a cultivar tus propias papas.
Las mías no son papas, son contenedores Docker. Pero el principio es el mismo: si dependes completamente de algo que no controlas, el día que falle, estás solo.
Hace más de un año decidí salirme de esa misión. Quise ser dueño de mis datos y mi infraestructura. Hoy corro 15 servicios en un VPS que me cuesta $18 USD al mes. Esta es la historia de por qué empecé, qué aprendí, y por qué sigo eligiendo este camino.
Pero antes de entrar en los números, quiero presentarte una nueva serie en el Grimorio: Terraformando. Una serie que nace de una convicción simple: la mejor nube es la que tú controlas. Aquí documento mi camino gestionando un VPS propio, instalando servicios self-hosted y construyendo un hábitat digital sin depender de las megacorporaciones del software.
Capítulo 1: La cuenta que no quería hacer
Siendo justos, esta idea no partió con el VPS. Partió con un servidor casero corriendo en mi red local: una Intel NUC (alias: server potato) que me costó unos $120 USD, conectada a tres HDDs externos. Ahí tengo instalado Syncthing para sincronizar archivos entre mis dispositivos, Home Assistant para domotizar la casa y Jellyfin para ver películas y series. Todo puertas adentro, sin DNS ni dominios ni nada que mirara hacia afuera, en parte por diseño, en parte porque tampoco tenía los conocimientos para hacerlo de otra forma. Aún así, llegó el momento en que quise empezar a publicar cosas: experimentos, códigos que se me ocurrían y que quería que sean accesibles de afuera, alguna forma de gestionar ciertos archivos en remoto, entre tantas otras cosas. Pero abrir puertos en mi router para que cualquiera tocara la puerta de mi casa no me parecía buena idea. Así que arrendé un VPS chico para subir mis experimentos y poder acceder desde cualquier lugar.
Lo primero que monté ahí fue Ghost, porque no quería pagar los $18 al mes de Ghost Pro y la verdad no estaba tan interesado en sus funcionalidades de pago, simplemente quería un lugar donde subir posts. Después dije "pago demasiado por Google Drive, ¿qué alternativas hay?" ahí fue cuando migré a Nextcloud. Luego Affine para reemplazar Notion. Linkwarden para reemplazar Raindrop. Y así, servicio por servicio, fui construyendo algo que no esperaba: una infraestructura personal completa.
Antes de empezar con todo esto había probado AWS para un curso de cloud. Elegí la instancia más barata (recomendaciones del instructor). Pero conocí gente que aprendiendo a la mala llegaron a pagar $100 por dejar algo encendido. A algunos les devolvieron la plata después de que AWS escaneara el tráfico, a otros lamentablemente no. Esa fue mi primera intuición de que el cloud cobra el aprendizaje. La segunda llegó al sumar mis suscripciones de SaaS y darme cuenta de que esa misma incertidumbre la pagaba ahí también, solo que repartida en cuotas mensuales.
Un día quise saber en realidad fue ahora haciendo este post cuánto estaría pagando si cada uno de esos servicios fuera una suscripción. Aquí lo dejo en una pequeña tabla:
| Servicio self-hosted | Equivalente SaaS comparado | Costo SaaS/mes |
|---|---|---|
| Ghost | Ghost Pro Starter | ~$18 |
| Affine | Notion Plus | ~$10 |
| Nextcloud | Google One 200GB | ~$3 |
| Umami | Plausible Starter | ~$9 |
| Miniflux | Feedly Pro+ | ~$13 |
| Linkwarden | Raindrop.io Pro | ~$3 |
| NocoDB | Airtable Team | ~$20 |
| OnlyOffice | Google Workspace Business Standard | ~$14 |
| Stirling PDF | Adobe Acrobat Pro | ~$20 |
| Syncthing | Dropbox Plus | ~$10 |
| Tandoor | Whisk Premium | ~$1 |
| Uptime Kuma | UptimeRobot Solo | ~$7 |
| Dozzle | Papertrail Starter | ~$7 |
| Pocketbase | Supabase Pro | ~$25 |
| Maildev | Mailtrap Individual | ~$10 |
| Total SaaS | ~$170/mes | |
| Mi VPS | ~$18/mes |
Eso son más de $1,800 dólares al año de diferencia. Pero el verdadero valor del VPS es la predictibilidad y el control que viene de no depender de las decisiones de otros.
Todo corre en un solo servidor con CapRover, tres bases de datos (PostgreSQL, MariaDB y Redis) y una conexión SSH que uso más de lo que me gustaría admitir.
Hasta aquí todo suena muy bonito, pero hay cosas que tomar en cuenta. La más importante: si algo falla a las 3 de la mañana, estás prácticamente solo. Eres tú, un par de posts en internet, 5 espressos dobles y la IA que uses para salir del paso.
Capítulo 2: Las tres veces que se cayó todo
Si alguien te dice que mantener tu propia infraestructura es siempre cómodo y sin problemas, sospecha: O no la mantiene de verdad o te esta cuenteando (inventando). A mí se me ha caído un par de veces, pero diría que las más memorables han sido estas tres:
2.1 La caída por versionamiento
Un día decidí actualizar CapRover. No leí las notas de la versión (primer error), no hice backup antes (segundo error), y ejecuté el update directo en producción (tercer error, y el que más dolió). La nueva versión tenía un cambio en la forma de gestionar los volúmenes de Docker, y varios servicios dejaron de encontrar sus datos.
La solución fue hacer downgrade manual, recrear los volúmenes y volver a levantar todo. Tomó unas 3 horas de mi vida que no voy a recuperar.
2.2 La caída por eliminar imágenes desde la terminal
Yo diría que este es un error un tanto específico ya que aplica al uso de Caprover como plataforma, pero vamos con el detalle: Docker acumula imágenes viejas como yo acumulo tazas de café en el escritorio cuando un cliente pide un cambio urgente antes de pasar a prod. Un día decidí liberar espacio ya que tenía un 80% de uso. Usé el mítico docker image prune que, en teoría, solo elimina imágenes sin usar. El problema es que "sin usar" para Docker no siempre significa lo mismo que "sin usar" para ti. Algunas imágenes que CapRover necesitaba como referencia desaparecieron, y varios servicios empezaron a fallar al intentar reiniciarse.
2.3 La caída de Ghost
Podrías pensar que este caso no es de utilidad ya que es de un servicio muy específico como lo es Ghost, pero el mismo error se extrapola a cualquier tipo de servicio. Esta fue la que más me costó solucionar. Actualicé Ghost a una versión nueva sin revisar los breaking changes. Ghost cambió algo en la forma de manejar las sesiones, y el blog simplemente dejó de cargar. Panel de administración inaccesible, blog público caído, y yo sin idea de qué había cambiado internamente.
Nadie se iba a morir porque un blog personal estuviera caído unas horas. Pero la frustración de saber que fue un error completamente evitable es otra cosa.
Intenté hacer rollback manual de la imagen de Docker, pero la base de datos ya había migrado al esquema nuevo y no era compatible con la versión anterior. Después de un rato intentando arreglarlo solo, tuve que invocar al gran Claude para diagnosticar el problema. Entre "los dos" identificamos que el issue estaba en una migración de base de datos que necesitaba un campo nuevo en la tabla de sesiones. Lo arreglamos directamente en MariaDB y Ghost volvió a la vida.
Tres caídas en más de un año. Me parece un buen trade-off por mi independencia digital. Ninguna fue culpa de la tecnología: todas fueron culpa mía.
Capítulo 3: Por qué no volví a SaaS
Después de la caída de Ghost estuve con algo de miedo. No es que el blog sea crítico (sobrevivo sin postear una semana) pero hay algo agotador en saber que cualquier app puede romperse en cualquier momento y que el único bombero disponible eres tú. Para colmo, Ghost Pro cuesta lo mismo que todo mi VPS: $18 al mes. Por un rato, el argumento del ahorro dejó de ser argumento.
Pero la pregunta de fondo no era sobre Ghost ni sobre un servicio específico. Era sobre si mantener infraestructura propia tiene sentido cuando podrías simplemente pagar y que otros te solucionen la vida.
Hay ciertas razones que me siguen convenciendo pese a todo:
- Los datos son míos: No en el sentido filosófico de "mis datos son mi identidad." En el sentido práctico de: si mañana Ghost Inc. decide cambiar sus precios, cerrar su servicio cloud, o alterar sus términos de uso, mi blog sigue funcionando igual. Cuando Heroku eliminó su tier gratuito en 2022, miles de proyectos se quedaron sin hogar de un día para otro. Cuando Notion cambió los límites del plan gratuito, la gente tuvo que migrar o pagar. Yo no dependo de esas decisiones.
- El costo no se justifica: $170/mes en suscripciones por servicios que puedo correr por $18 no es una decisión técnica; es una decisión financiera. Y los números importan, sobre todo con el dólar como está.
- Aprendí más que en cualquier curso: Configurar Nginx, entender volúmenes de Docker, debuggear una base de datos PostgreSQL a las 2 de la mañana con la pega esperándome al día siguiente, automatizar rebuilds con webhooks... Todo eso lo aprendí porque lo necesitaba, no porque alguien me lo enseñó en un tutorial con música de fondo, un loquendo y un código que siempre funciona a la primera.
- Es mi playground personal: En este mismo VPS corren
etejeda.dev, este blog que estás leyendo, y proyectos propios en desarrollo como Completr. También vive ahí un proyecto open source que se cayó cuando Heroku eliminó su tier gratuito en 2022, lo restauré con ayuda de IA, le agregué features nuevas, y hoy sigue funcionando sin depender de las decisiones de nadie (esa historia da para su propio post). Cuando se me ocurre algo nuevo, no necesito abrir cuenta en ningún lado: subo el código, le asigno un subdominio y queda andando. El costo marginal de un proyecto más es prácticamente cero, y eso cambia cómo me animo a experimentar.
Capítulo 4: El catálogo completo
Para que quede registro, estos son los 15 servicios que corren en mi VPS al día de hoy, más las 3 bases de datos que los sostienen:
Productividad y documentos
- Affine: Reemplazó a Notion y Simplenote. Notas, docs, kanban, todo en uno.
- OnlyOffice: Editor de documentos compatible con formatos de Office. Un excelente reemplazo a la suite de Google Docs. Además, se puede usar tanto offline con su software como online.
- Stirling PDF: Herramienta de PDF: unir, dividir, comprimir, convertir. Reemplazó a Adobe Acrobat.
Almacenamiento y sincronización
- Nextcloud: Archivos, calendario, contactos. Mi intento de reemplazar Google Drive (con matices que contaré en un futuro artículo). Aunque yo lo terminé usando solo para archivos.
- Syncthing: Sincronización de archivos entre dispositivos. Sin nube, directo peer-to-peer.
- Linkwarden: Gestor de bookmarks. Guarda, organiza y archiva enlaces.
Blog e infraestructura web
- Ghost: La plataforma donde estás leyendo esto ahora mismo. Blog + Newsletter.
- Uptime Kuma: Monitoreo de uptime para todos mis servicios. Me avisa cuando algo se cae.
- Umami: Analytics del blog. Sin cookies, sin Google, sin almacenar IPs. Reemplazó a Matomo en mayo de 2026 (esa migración tiene su propio Sol).
Datos y backend
- NocoDB: Una interfaz de spreadsheet sobre mis bases de datos. Como Airtable pero self-hosted.
- Pocketbase: Backend minimalista (BaaS) en un solo binario. Como Firebase o Supabase, pero self-hosted en un solo archivo. Lo uso para experimentos rápidos donde no quiero levantar PostgreSQL completo.
Utilidades
- Miniflux: Lector RSS minimalista. Sigo blogs y fuentes técnicas sin depender de algoritmos.
- Tandoor: Gestor de recetas de cocina. Sí, también cocino. Y sí, también lo auto-hosteo.
- Dozzle: Visor de logs de Docker en el navegador. Ahorra muchos
docker logs -fen la terminal cuando algo se rompe a las 11 de la noche. - Maildev: Servidor SMTP de pruebas con interfaz web. Atrapa los correos que envían mis apps en desarrollo para que pueda ver cómo se ven sin spamear a nadie. Reemplaza a Mailtrap.
Bases de datos
- PostgreSQL: La base de datos principal. Ghost, Affine, NocoDB y varios más la comparten.
- MariaDB: Para servicios que no soportan PostgreSQL (como Matomo).
- Redis: Caché y colas. Hace que todo responda más rápido sin que yo haga nada.
Y también hay servicios que yo mismo construí o mantengo, viviendo en el mismo VPS:
Servicios propios
- mail-service-hono: Microservicio en Hono desarrollado por mi que centraliza el envío de correos transaccionales para mis dominios. Internamente usa Resend, pero unifica la lógica en un solo lugar. Si mañana cambio de proveedor, solo toco un servicio.
- Completr: Mi side project, un backlog de videojuegos. Vive en web.completr.app (la app), www.completr.app (la landing) y un backend propio aparte.
- smc2sfc2: Un proyecto open source que rescaté de la sentencia de muerte de Heroku en 2022. Lo restauré con ayuda de IA, le agregué features nuevas y hoy sigue corriendo en mi vps smc2sfc2.app.etejeda.dev. (Esa historia da para su propio post.)
- www.etejeda.dev: Mi portfolio personal.
Hospedar páginas web también cuesta dinero en SaaS: Cloudflare Pages, Vercel y Netlify son generosos con sus tiers gratuitos, pero el día que necesites builds privados, dominios custom múltiples, bandwidth sin límites o sin pausas por inactividad, ya estás pagando. Aquí el costo marginal de subir un proyecto más es prácticamente cero: subo el código, le asigno un subdominio en CapRover y queda andando.
¿Son todos imprescindibles? No. Tandoor es un lujo. Stirling lo uso una vez al mes. Pero el punto es que puedo tenerlos porque el costo marginal de agregar un servicio más a un VPS que ya está corriendo es prácticamente cero.
Capítulo 5: Transmisión a la Tierra
En los próximos artículos de esta serie voy a ir contando, servicio por servicio, qué reemplacé, qué funciona, qué no, y cuánto me cuesta realmente. Sin tutoriales genéricos de "cómo instalar X en Docker" (para eso está la documentación oficial y cualquier IA). Lo que voy a compartir es la experiencia real: las decisiones, los errores, las comparaciones honestas con los servicios que dejé atrás, y los momentos donde me pregunté si no habría sido más fácil pagar la suscripción.
También voy a salir del VPS:
- El servidor casero con 18TB que vive en mi casa y guarda lo que sería absurdamente caro mantener en internet. No todo necesita estar online, y entender qué sí y qué no es la mitad del trabajo.
- Los VPS que configuro a clientes freelance para que vean sus desarrollos en fase activa sin tocar producción. Otro stack, otras reglas (Coolify en vez de CapRover), y una regla legal que aprendí a respetar: nunca alojo producción de clientes en mis cuentas.
- Las veces que ayudé a otros a montar el suyo, los errores que se repiten cuando alguien arranca desde cero, y los momentos en que vale la pena pagar versus aprender.
Porque internet está lleno de soluciones perfectas. Lo que falta son las historias de lo que realmente pasa cuando decides mantener tu propia infraestructura.
¿Alguna vez un servicio que usabas cambió sus condiciones y te dejó sin opciones? ¿Cuánto estás pagando hoy por la incertidumbre de no saber cuánto vas a pagar mañana? Te leo en los comentarios. Este artículo es el Sol 0 de Terraformando. Nos vemos en el Sol 1.
Referencias:
| SaaS comparado | Plan | Precio | Fuente |
|---|---|---|---|
| Ghost Pro | Starter (anual) | $18/mes | ghost.org/pricing |
| Notion | Plus | $10/mes | notion.com/pricing |
| Google One | 200 GB | $2.99/mes | one.google.com/about/plans |
| Plausible | Starter | $9/mes | plausible.io/#pricing |
| Feedly | Pro+ (anual) | $12.99/mes | feedly.com/i/pro |
| Raindrop.io | Pro (anual) | $3/mes | raindrop.io/pro |
| Airtable | Team (anual) | $20/usuario/mes | airtable.com/pricing |
| Google Workspace | Business Standard | $14/usuario/mes | workspace.google.com/pricing |
| Adobe Acrobat | Pro (individual) | $19.99/mes | adobe.com/acrobat/pricing |
| Dropbox | Plus | $9.99/mes | dropbox.com/plans |
| Whisk | Premium | ~$1/mes (anual $12/año) | whisk.com |
| UptimeRobot | Solo (anual) | $7/mes | uptimerobot.com/pricing |
| Papertrail | Starter | $7/mes | papertrailapp.com/plans |
| Supabase | Pro | $25/mes | supabase.com/pricing |
| Mailtrap | Individual | $10/mes | mailtrap.io/pricing |
Sobre los free tiers: Notion, Google One (15GB), Dropbox (2GB), Raindrop, Airtable, Whisk, UptimeRobot (50 monitores), Supabase y Mailtrap (100 correos/mes) tienen tiers gratuitos que pueden cubrir uso casual. Ghost y Plausible solo ofrecen trial; Adobe Acrobat solo trial; Google Workspace no tiene plan gratis. Mi cuenta de SaaS asume que pagaría el plan más bajo que iguale las features que uso self-hosted, no el plan más bajo que existe.
Member discussion