[{"data":1,"prerenderedAt":748},["ShallowReactive",2],{"blog-es-\u002Fes\u002Fblog\u002Fstrapi-directus-ghost-auto-hospedado-guia":3,"blog-es-surround-\u002Fes\u002Fblog\u002Fstrapi-directus-ghost-auto-hospedado-guia":740},{"id":4,"title":5,"author":6,"body":7,"category":719,"cover":720,"date":721,"description":722,"draft":723,"extension":724,"lastReviewed":720,"meta":725,"navigation":726,"path":727,"readingTime":728,"seo":729,"sitemap":730,"stem":731,"tags":732,"__hash__":739},"blog_es\u002Fes\u002Fblog\u002Fstrapi-directus-ghost-auto-hospedado-guia.md","Strapi, Directus y Ghost auto-hospedados: guía honesta para agencias e indie hackers","Equipo HeroCtl",{"type":8,"value":9,"toc":703},"minimark",[10,14,17,20,23,28,31,38,44,55,61,67,71,74,77,80,83,86,89,93,96,99,102,105,108,111,115,118,121,124,127,130,133,137,140,357,360,364,367,391,420,447,451,454,460,466,472,478,482,485,491,497,503,506,510,513,519,525,531,537,543,547,553,559,565,571,577,581,584,590,596,602,608,614,617,621,627,633,639,645,651,657,663,667,670,673,676,686,700],[11,12,13],"p",{},"Toda agencia que aloja sitio de cliente conoce el dilema. Tienes treinta cuentas activas, cada una con un Wordpress en Wordpress.com Business costando entre US$25 y US$45 al mes — cuando el cliente no exige Wordpress.com VIP, que sube a tres cifras. Suma eso, multiplica por treinta, divide por el dólar del mes, y el margen desaparece. La alternativa más antigua es alquilar un alojamiento compartido barato y apilar treinta sitios en un servidor PHP que cae junto en el primer martes del mes — reputación quemada por economía de quinientos reales.",[11,15,16],{},"Hay un camino del medio que se volvió viable los últimos dos años: sustituir el monolito de PHP por un CMS moderno auto-hospedado. Strapi, Directus y Ghost son los tres que más aparecen en proyectos de agencia y en SaaS indie. Cada uno resuelve un problema distinto, cada uno tiene trampa propia, y la documentación oficial de cada uno vende el producto en lugar de comparar honestamente. Este post es la comparación que faltaba.",[11,18,19],{},"La audiencia aquí es doble. Por un lado, la agencia de cinco a veinte personas que entrega sitio o plataforma editorial al cliente — ese perfil necesita decidir entre cloud gestionado y auto-alojamiento con base en coste por cliente, no en hype técnico. Por el otro, el desarrollador solo o indie hacker que está eligiendo el stack del propio proyecto y quiere saber cuál CMS escala mejor sin volverse dolor de cabeza los sábados.",[11,21,22],{},"Los números son el esqueleto del post. Costes en dólares fueron convertidos a real usando el rango actual de R$5,00 a R$5,30 por dólar — donde el intervalo importa, está marcado. Requisitos de RAM y CPU fueron colectados de las documentaciones oficiales y validados en VPS de test corriendo workload sintético. Si algún número parece optimista, es porque es el piso — producción real suele pedir 30 a 50 por ciento más.",[24,25,27],"h2",{"id":26},"por-que-cms-auto-hospedado-se-volvio-viable-en-2026","Por qué CMS auto-hospedado se volvió viable en 2026",[11,29,30],{},"Cinco factores combinados destrabaron el escenario. Ninguno de ellos es nuevo aisladamente; lo que cambió es que todos maduraron al mismo tiempo.",[11,32,33,37],{},[34,35,36],"strong",{},"El coste de máquina virtual cayó cerca del absurdo."," Hetzner, DigitalOcean, OVH e incluso proveedores nacionales como Magalu Cloud y UOL Host venden VPS de 2 vCPU y 4 GB de RAM por menos de R$60 al mes. Hace cinco años, la misma capacidad costaba el triple. Para agencia que históricamente terciarizaba infra a revendedores de hospedaje, ahora tiene más sentido alquilar una máquina dedicada y apilar workloads allí.",[11,39,40,43],{},[34,41,42],{},"Paneles de orquestación auto-hospedados cubren lo que faltaba en ops."," Coolify, Dokploy, CapRover y el propio HeroCtl entregan lo que era exclusividad de proveedores caros: deploy a partir de un archivo de configuración, certificado TLS automático, rollback de una versión a otra, métricas básicas. La barrera para correr un Strapi en producción cayó de \"una semana de provisionamiento manual\" a \"cinco minutos después de que el servidor esté de pie\".",[11,45,46,49,50,54],{},[34,47,48],{},"Los CMS modernos publican imágenes Docker oficiales y maduras."," Hace tres años necesitabas montar Dockerfile propio para Strapi en producción; hoy el equipo oficial publica imagen testeada con receta de docker-compose de referencia. Incluso para Ghost, que históricamente tenía empaquetamiento propio, la imagen ",[51,52,53],"code",{},"ghost:5-alpine"," es la forma recomendada por el equipo oficial.",[11,56,57,60],{},[34,58,59],{},"Las comunidades dejaron de ser invisibles."," El canal Strapi BR en Discord tiene miles de miembros activos, el foro oficial de Directus responde en inglés pero con alta participación de devs locales, y la documentación de Ghost fue traducida en piezas por contribuidores locales. No es la comunidad WordPress (que es gigante y llena de tutorial), pero es lo suficiente para desbloquear la mayoría de los problemas sin tener que descifrar inglés técnico al cuarto error consecutivo.",[11,62,63,66],{},[34,64,65],{},"Wordpress.com aumentó precio de forma agresiva."," Quien acompañó a Heroku volverse de pago en 2022 reconoce el patrón: servicio gratuito o barato se vuelve premium, plan antiguo es descontinuado, cuenta legacy migra o paga más. Wordpress.com hizo el equivalente los últimos dos años — el tier \"Personal\" subió, el tier \"Premium\" subió más, y features que antes venían en el plan medio ahora exigen el tier Business o superior. Cada aumento es un empujón más hacia el auto-alojamiento.",[24,68,70],{"id":69},"strapi-el-cms-api-first","Strapi — el CMS API-first",[11,72,73],{},"Strapi es el que más se parece a \"Wordpress moderno para dev\". Defines el tipo de contenido en la interfaz administrativa (post, autor, categoría, producto, cualquier cosa), y Strapi genera automáticamente una API REST y una API GraphQL para leer y escribir ese contenido. No hay frontend en él — es puro backend headless. El frontend es responsabilidad tuya, generalmente un Next.js, Nuxt o Astro consumiendo la API.",[11,75,76],{},"El stack es Node.js en el backend, base Postgres o MySQL para persistencia, y un panel administrativo en React que viene embebido. El panel es el punto fuerte del producto: editor no técnico consigue crear contenido sin entrenamiento, organizar media, agendar publicación, gestionar usuarios. Para agencia, eso es venta fácil — el cliente entra en el admin y reconoce el paradigma \"Wordpress pero más limpio\".",[11,78,79],{},"El requisito mínimo realista en producción es 2 vCPU, 2 GB de RAM y 10 GB de almacenamiento. La documentación oficial habla en 1 GB, pero con cualquier plugin activo y tráfico más allá de test local, la memoria revienta. En VPS de R$50 a R$80 al mes corres cómodo; en VPS de R$30 (1 GB de RAM) el proceso muere cada vez que un upload de media mayor sucede.",[11,81,82],{},"Los puntos fuertes son consistentes. Plugin ecosystem rico — autenticación social, internacionalización, integración con S3 para media, generador de sitemap, todo ya existe. GraphQL nativo sin configuración extra, lo que cierra bien con frontend moderno. Hooks personalizados (lifecycle hooks, middlewares, policies) resuelven regla de negocio sin necesidad de microservicio separado. La interfaz administrativa es genuinamente buena — comparada con Drupal o Wordpress sin plugin de admin, es otro nivel.",[11,84,85],{},"Los puntos débiles también son consistentes, y cabe hablar en voz alta. La transición entre versiones majores suele romper — la migración de v4 a v5 fue notoria, con cambios de API incompatibles y necesidad de reescribir plugins personalizados. Si adoptas Strapi para un proyecto de largo plazo, reserva una ventana de upgrade cada doce o dieciocho meses como coste recurrente, no como sorpresa. Migraciones de schema también exigen disciplina — añadir campo es fácil, renombrar o tipar diferente sin perder dato pide script de migración escrito a mano. Y algunas features que aparecen en el marketing solo corren en Strapi Cloud (la versión paga de ellos), como preview en vivo entre ambientes — auto-alojando no tienes eso listo.",[11,87,88],{},"Cuándo tiene sentido elegir Strapi: SaaS que necesita blog propio y knowledge base en el mismo CMS, agencia que entrega para cliente acostumbrado con \"Wordpress pero sin PHP\", proyecto headless commerce donde los SKUs son modelados como tipo de contenido, y cualquier escenario en que tener GraphQL listo ahorra días de trabajo.",[24,90,92],{"id":91},"directus-el-cms-para-datos-existentes","Directus — el CMS para datos existentes",[11,94,95],{},"Directus es una criatura distinta. En lugar de forzarte a crear tipo de contenido desde cero dentro de él, coloca una interfaz administrativa encima de cualquier base que ya tengas. Apuntarías a un Postgres legacy con veinte tablas existentes, y Directus muestra cada tabla como una colección editable, respetando los tipos de columna, las claves foráneas e incluso las constraints. Es la herramienta que más se aproxima a \"admin universal para cualquier base SQL\".",[11,97,98],{},"El stack es Node.js en el backend, soporte oficial a Postgres, MySQL, MariaDB, SQLite, Oracle y SQL Server, y un panel administrativo en Vue. El soporte a base es deliberadamente amplio — el producto fue diseñado para adaptar, no para imponer schema propio. Puedes usar Directus contra una base ceroada y dejar que cree las tablas vía interfaz, o apuntar a una base con diez años de historia y esperar que todo aparezca organizado en el admin.",[11,100,101],{},"El requisito mínimo es más ligero que Strapi. 1 vCPU, 1 GB de RAM y 5 GB de almacenamiento corren cómodo para workload pequeño y medio. En VPS de R$30 a R$50 al mes consigues subir un Directus sirviendo decenas de colecciones con tráfico moderado. Para proyectos menores, SQLite como base es suficiente — cabe en un único archivo, simplifica backup, evita tener un Postgres separado para gestionar.",[11,103,104],{},"Los puntos fuertes salen del diseño. La capacidad de adoptar base existente sin reformar schema es genuinamente única — ningún CMS popular hace eso tan bien. Real-time updates vía WebSockets vienen listos, lo que abre puerta a dashboards y herramientas internas que reaccionan a cambio en tiempo real sin necesidad de una capa adicional. Permisos granulares por colección, por campo e incluso por línea (con base en condición) cubren escenarios de multi-tenancy sin hack. La documentación es decente, mantenida activa, y el equipo responde duda en foro en plazos razonables.",[11,106,107],{},"Los puntos débiles: la curva de aprendizaje para customizaciones avanzadas (extensions, hooks personalizados, panels de dashboard) es más empinada que Strapi. El ecosistema de plugins es menor — donde Strapi tiene diez plugins de SEO, Directus tiene dos o tres. Y para editor no técnico, la interfaz es menos amigable que la de Strapi — Directus prioriza poder y flexibilidad, no onboarding suave.",[11,109,110],{},"Cuándo tiene sentido elegir Directus: agencia que tomó cliente con base MySQL legacy de diez años y necesita entregar panel administrativo sin rehacer schema, herramienta interna donde el modelado es dirigido por los datos (CRM custom, gestión de stock, plataforma de operaciones), aplicación cuya entidad central es \"dato relacional\", no \"documento editorial\". También es la elección obvia cuando el cliente ya tiene Postgres o MySQL corriendo otro sistema y quiere aprovechar.",[24,112,114],{"id":113},"ghost-el-cms-de-publicacion","Ghost — el CMS de publicación",[11,116,117],{},"Ghost es el opuesto de la neutralidad. No pretende ser CMS universal — es blog y plataforma de newsletter, especializado en contenido editorial. Quien intenta usar Ghost para producto de e-commerce o app SaaS está usando herramienta errada. Quien usa para blog corporativo, sitio de mídia, podcast con membership o newsletter paga, encuentra un producto pulido y enfocado.",[11,119,120],{},"El stack es Node.js en el backend, base MySQL o SQLite (Postgres no es oficialmente soportado), y frontend en Handlebars con tema. El frontend es parte del paquete — Ghost sirve las páginas directamente, con tema instalado vía upload. Hay modo headless (usas solo la Content API y montas el frontend separado), pero el caso común es Ghost sirviendo todo.",[11,122,123],{},"El requisito mínimo es el más ligero de los tres. 1 vCPU, 1 GB de RAM y 5 GB de almacenamiento corren Ghost con holgura para blog de tráfico medio. En VPS de R$30 se puede correr — con el cuidado de configurar SMTP externo para newsletter (mandar email a partir del propio servidor es receta para caer en spam).",[11,125,126],{},"Los puntos fuertes son afilados. SEO out-of-the-box es el mejor entre los tres — meta tags, sitemap, schema.org, AMP (cuando tiene sentido), todo configurado por defecto. Sistema de membership y paywall viene nativo: creas niveles de suscripción, cobras vía Stripe, liberas contenido pago automáticamente. El editor markdown es genuinamente bueno, con cards (llamadas, callouts, código) que cubren el caso común sin volverse editor de Word. Los temas se enfocan en legibilidad y tipografía editorial — nada de la estética genérica de tema Wordpress.",[11,128,129],{},"Los puntos débiles salen de la especialización. Plugin ecosystem es cerrado por diseño — apps de integración existen en Ghost.org como producto pago, e instalar app personalizado es más difícil que en Strapi o Directus. No-blog es territorio hostil — intentar modelar producto, autor con perfil rico, taxonomía compleja choca con decisiones de diseño que priorizan el caso \"post + autor + tag\". Y soporte oficial a Postgres no existe — si tienes patrón de empresa en Postgres, vas a operar MySQL paralelo solo para Ghost.",[11,131,132],{},"Cuándo tiene sentido elegir Ghost: blog corporativo con paywall o contenido premium, sitio de mídia o periodismo independiente, podcast que quiere monetizar vía membership, content marketing tomado en serio con editor que va a usar el admin todos los días. Para cualquier cosa fuera de ese alcance, es forzar la barra.",[24,134,136],{"id":135},"tabla-comparativa","Tabla comparativa",[11,138,139],{},"Los tres CMS modernos lado a lado con Wordpress (la referencia heredada) y Payload (competidor reciente que vale mencionar):",[141,142,143,168],"table",{},[144,145,146],"thead",{},[147,148,149,153,156,159,162,165],"tr",{},[150,151,152],"th",{},"Criterio",[150,154,155],{},"Strapi",[150,157,158],{},"Directus",[150,160,161],{},"Ghost",[150,163,164],{},"Wordpress",[150,166,167],{},"Payload",[169,170,171,189,207,225,243,261,280,299,318,337],"tbody",{},[147,172,173,177,180,183,185,187],{},[174,175,176],"td",{},"RAM mínima realista",[174,178,179],{},"2 GB",[174,181,182],{},"1 GB",[174,184,182],{},[174,186,182],{},[174,188,179],{},[147,190,191,194,197,199,202,205],{},[174,192,193],{},"Tiempo hasta primer deploy",[174,195,196],{},"30–60 min",[174,198,196],{},[174,200,201],{},"15–30 min",[174,203,204],{},"10–20 min",[174,206,196],{},[147,208,209,212,215,217,220,223],{},[174,210,211],{},"Modo headless",[174,213,214],{},"Sí, default",[174,216,214],{},[174,218,219],{},"Opcional",[174,221,222],{},"Opcional (REST + GraphQL)",[174,224,214],{},[147,226,227,230,233,235,238,241],{},[174,228,229],{},"GraphQL nativo",[174,231,232],{},"Sí",[174,234,232],{},[174,236,237],{},"No (REST)",[174,239,240],{},"Plugin externo",[174,242,232],{},[147,244,245,248,251,254,257,259],{},[174,246,247],{},"Multi-tenancy fácil",[174,249,250],{},"Medio",[174,252,253],{},"Bueno",[174,255,256],{},"Difícil",[174,258,240],{},[174,260,253],{},[147,262,263,266,269,271,274,277],{},[174,264,265],{},"Membership \u002F paywall",[174,267,268],{},"Plugin",[174,270,268],{},[174,272,273],{},"Nativo",[174,275,276],{},"Plugin pago",[174,278,279],{},"Personalizado",[147,281,282,285,288,290,293,296],{},[174,283,284],{},"Plugin ecosystem",[174,286,287],{},"Rico",[174,289,250],{},[174,291,292],{},"Débil",[174,294,295],{},"Riquísimo",[174,297,298],{},"Creciendo",[147,300,301,304,307,310,313,315],{},[174,302,303],{},"Coste Cloud (USD\u002Fmes inicial)",[174,305,306],{},"15",[174,308,309],{},"25",[174,311,312],{},"11",[174,314,309],{},[174,316,317],{},"35",[147,319,320,323,326,329,331,334],{},[174,321,322],{},"Documentación local",[174,324,325],{},"Parcial",[174,327,328],{},"Mínima",[174,330,328],{},[174,332,333],{},"Riquísima",[174,335,336],{},"Inglés",[147,338,339,342,345,348,351,354],{},[174,340,341],{},"Rango ideal de uso",[174,343,344],{},"API + admin",[174,346,347],{},"Admin sobre dato",[174,349,350],{},"Contenido editorial",[174,352,353],{},"Sitio genérico",[174,355,356],{},"App custom Node.js",[11,358,359],{},"La columna \"tiempo hasta primer deploy\" asume servidor ya provisionado y Docker instalado. La columna \"coste Cloud\" es el tier de entrada del producto — escala de precio sube conforme límites de tráfico, miembros o seats en el admin. La columna \"documentación local\" refleja lo que existe oficial más lo que la comunidad mantiene activa; ninguno de los tres tiene manual completo traducido, pero Strapi tiene el mejor camino de aprendizaje en portugués.",[24,361,363],{"id":362},"setup-auto-hospedado-en-alto-nivel","Setup auto-hospedado en alto nivel",[11,365,366],{},"La receta no es copy-paste — es la hoja de ruta mental de lo que va a ser preciso. Detalles específicos cambian por VPS y por elección de orquestador.",[11,368,369,370,372,373,376,377,380,381,380,384,380,387,390],{},"Para ",[34,371,155],{},", el setup mínimamente serio es docker-compose con tres servicios: Strapi, Postgres y Redis (Redis es opcional, pero acelera el admin notablemente cuando hay más de cinco editores). Volumen nombrado para ",[51,374,375],{},"\u002Fsrv\u002Fstrapi\u002Fuploads"," (media) y para datos de Postgres. Panel sube en el puerto 1337 internamente, expuesto vía subdominio con TLS por el router del orquestador. Variables de entorno críticas: ",[51,378,379],{},"APP_KEYS",", ",[51,382,383],{},"JWT_SECRET",[51,385,386],{},"ADMIN_JWT_SECRET",[51,388,389],{},"DATABASE_*",". Olvidar cualquiera de esas hace que el admin no suba o pierda sesión a cada restart.",[11,392,369,393,395,396,380,399,380,402,380,405,380,408,411,412,415,416,419],{},[34,394,158],{},", el setup es parecido pero más ligero. Docker-compose con Directus y base (SQLite cabe en un volumen solo, Postgres si la expectativa es multi-usuario con escritura concurrente). Sin Redis necesario para empezar. Panel en el puerto 8055. Variables críticas: ",[51,397,398],{},"KEY",[51,400,401],{},"SECRET",[51,403,404],{},"ADMIN_EMAIL",[51,406,407],{},"ADMIN_PASSWORD",[51,409,410],{},"DB_*",". Punto de atención: si apuntas Directus a base existente con schema rico, abre el admin con calma y configura los permisos antes de dar acceso a cualquier otro usuario — por defecto el role ",[51,413,414],{},"admin"," ve todo y el role ",[51,417,418],{},"public"," ve nada, lo que es razonable; pero si creas role intermedio sin cuidado, expones colecciones enteras sin querer.",[11,421,369,422,424,425,428,429,432,433,380,436,439,440,442,443,446],{},[34,423,161],{},", docker-compose con Ghost y MySQL. SQLite sirve para desarrollo pero es desalentado en producción por el equipo oficial. Volumen nombrado para ",[51,426,427],{},"\u002Fvar\u002Flib\u002Fghost\u002Fcontent"," (temas, media, configs) y para MySQL. Configurar SMTP externo es etapa obligatoria — Mailgun, Postmark y Resend tienen tier gratuito o barato, cualquiera de ellos sirve. Sin SMTP, recuperación de contraseña no funciona, newsletter no envía, signup de miembro queda roto. Variables críticas: ",[51,430,431],{},"url"," (dominio público con https), ",[51,434,435],{},"database__connection__*",[51,437,438],{},"mail__*",". Error común: configurar ",[51,441,431],{}," como ",[51,444,445],{},"http:\u002F\u002Flocalhost"," en producción y descubrir solo después que todos los enlaces de email salieron rotos.",[24,448,450],{"id":449},"costes-comparados","Costes comparados",[11,452,453],{},"La planilla honesta de cloud gestionado contra auto-hospedado, en moneda corriente (R$5,00 por dólar como referencia):",[11,455,456,459],{},[34,457,458],{},"Strapi Cloud"," empieza en US$15 al mes en el tier Developer (R$75), sube a US$99 al mes en el tier Pro (R$495) con features como ambientes separados de staging y producción, más seats en el admin y soporte. Auto-hospedado en VPS de R$50 a R$80 al mes corre Strapi con holgura para workload pequeño y medio. Diferencia mensual: de R$25 a R$445 dependiendo del tier que compararías. Para agencia con cinco clientes en Strapi, eso se traduce en economía anual entre R$1.500 y R$26.700.",[11,461,462,465],{},[34,463,464],{},"Directus Cloud"," empieza en US$25 al mes en el tier Standard (R$125), sube a US$99 al mes en el tier Pro (R$495) y tiene tier Enterprise con precio bajo consulta. Auto-hospedado en VPS de R$50 al mes cubre el caso común. Diferencia similar a la de Strapi — entre R$75 y R$445 al mes por instancia.",[11,467,468,471],{},[34,469,470],{},"Ghost Pro"," empieza en US$11 al mes en el tier Starter (R$55) con hasta 500 miembros y un único staff seat, escala a US$31 (R$155) con 1.000 miembros, y alcanza US$249 al mes (R$1.245) en el tier que soporta 50 mil miembros. Auto-hospedado en VPS de R$50 a R$80 al mes no tiene techo de miembros — puedes tener 50 mil o 500 mil sin cambiar el servidor (la única cosa que cambia es el volumen de email transaccional, que escala separado). Para publicación que crece en audiencia, la economía anual auto-hospedando Ghost pasa de R$10 mil rápidamente.",[11,473,474,477],{},[34,475,476],{},"Wordpress.com Business"," cuesta US$25 al mes (R$125), VIP queda en tres cifras. Comparar con auto-alojamiento de Wordpress en una VPS de R$50 es meh — Wordpress es pesado por naturaleza, exige más cuidado de seguridad y backup, y el ecosistema de plugin es fuente recurrente de incidente de producción. Para proyecto nuevo en 2026, es más sensato elegir entre Strapi, Directus o Ghost que heredar la complejidad del PHP.",[24,479,481],{"id":480},"estrategia-para-agencia-alojando-treinta-clientes","Estrategia para agencia alojando treinta clientes",[11,483,484],{},"Tres opciones con tradeoffs claros.",[11,486,487,490],{},[34,488,489],{},"Opción A — un VPS por cliente."," Aislamiento total: si un cliente tira el servidor de él, los otros veintinueve no sienten. Coste directo: 30 VPS × R$30 a R$50 = R$900 a R$1.500 al mes solo de infra. Coste operacional: treinta veces todo — treinta actualizaciones de SO, treinta certificados para monitorear, treinta backups para orquestar. Para agencia con más de diez clientes, la sobrecarga operacional come el margen que la opción tenía en primer lugar.",[11,492,493,496],{},[34,494,495],{},"Opción B — un cluster compartido corriendo treinta instancias de los CMS."," Cuatro servidores totalizando 5 vCPU y 10 GB de RAM (la configuración que corremos en producción aquí en HeroCtl) alojan cómodamente treinta instancias de Strapi\u002FDirectus\u002FGhost con tráfico típico de cliente PYME. Coste de infra: cerca de R$300 a R$400 al mes por el cluster entero. Coste operacional: una estrategia única de monitoreo, una estrategia única de backup, un lugar para mirar cuando algo pesa el sistema. Margen de la agencia aumenta porque el punto donde cobras es el mismo y el punto donde gastas cayó.",[11,498,499,502],{},[34,500,501],{},"Opción C — cluster compartido con cada cliente en subdominio propio."," Variación de la opción B, pero con enrutamiento explícito por subdominio (cliente1.tuagencia.com, cliente2.tuagencia.com) o dominio propio del cliente (tienda-del-cliente.com). El router integrado del orquestador resuelve la parte de TLS automático y direccionamiento de tráfico. Multi-tenancy queda en el nivel de DNS + container, no en el nivel del CMS — cada cliente tiene instancia aislada de Strapi\u002FDirectus\u002FGhost con base propia. Para agencia que vende \"sitio exclusivo\" como diferencial, es la forma de mantener la promesa sin multiplicar VPS.",[11,504,505],{},"La opción B con elementos de la C es lo que tiene más sentido para agencia típica. Cluster compartido, instancias aisladas, subdominio o dominio propio por cliente, backup centralizado.",[24,507,509],{"id":508},"backup-y-migracion-entre-cms","Backup y migración entre CMS",[11,511,512],{},"Migración entre CMS es territorio donde proveedores omiten detalle deliberadamente. La verdad práctica:",[11,514,515,518],{},[34,516,517],{},"Strapi a Strapi"," (entre versiones o entre instancias) tiene export e import vía plugin oficial, genera archivo JSON con schema y datos. Funciona bien para migración entre staging y producción; entre versiones majores, puede pedir ajuste manual en el JSON antes del import.",[11,520,521,524],{},[34,522,523],{},"Strapi a Directus"," no tiene herramienta lista. Schema es distinto lo suficiente para exigir mapping manual — script en Node leyendo la API REST de Strapi y escribiendo en la API REST de Directus, ítem por ítem. Para base de mil o diez mil registros es trabajo de una tarde; para base mayor, vale paralelizar.",[11,526,527,530],{},[34,528,529],{},"Wordpress a Strapi"," tiene herramientas third-party (wp2strapi y variantes), todas parciales. Lo que migra bien es post + autor + categoría + media. Lo que no migra bien es cualquier custom post type complejo, plugin de SEO con metadatos propios, o estructura de menú. Reserva un a tres días por sitio en la migración y revisa media manualmente.",[11,532,533,536],{},[34,534,535],{},"Ghost a Ghost"," tiene export e import nativo en el admin — genera JSON con posts, autores, configuraciones de sitio, miembros. Funciona limpio entre instancias y entre versiones.",[11,538,539,542],{},[34,540,541],{},"Backup de la base"," es la etapa no-negociable. Pg_dump (Postgres) o mysqldump (MySQL) diario, copiado a storage objeto fuera del servidor (S3, Backblaze B2, Wasabi). Sin eso, cualquier incidente — disco corrupto, rm accidental, hack — se vuelve evento de extinción para datos del cliente. Coste de S3 con versionado para un cluster pequeño queda debajo de R$50 al mes incluso guardando treinta días de retención.",[24,544,546],{"id":545},"cinco-errores-que-matan-cms-auto-hospedado","Cinco errores que matan CMS auto-hospedado",[11,548,549,552],{},[34,550,551],{},"No actualizar."," CMS desactualizado es vulnerabilidad abierta. Cron de update mensual es el piso — calendario fijo, ventana de mantenimiento combinada con cliente, test de smoke después. No hacer eso significa que antes o después alguien abre el admin del cliente sin credencial.",[11,554,555,558],{},[34,556,557],{},"Contraseña admin débil."," Admin\u002Fadmin en producción sigue pasando en 2026. Contraseña fuerte generada por gestor de contraseña, autenticación de dos factores cuando el CMS soporta, role separado para editor (el cliente no recibe contraseña de admin total).",[11,560,561,564],{},[34,562,563],{},"Sin backup automático."," Cliente ve seis meses de contenido desaparecer y la relación termina. Backup de la base diario, retenido por treinta días mínimo, copiado a storage fuera del servidor que aloja el CMS. Testar restore al menos una vez por trimestre — backup que nunca fue restaurado es teoría, no backup.",[11,566,567,570],{},[34,568,569],{},"Storage de media local sin CDN."," Imágenes grandes en VPS pequeña tiran el servidor cuando una página se viraliza. Configurar storage objeto (S3, R2, Spaces) para media desde el día uno, incluso que el tráfico sea bajo al inicio. Strapi y Directus tienen proveedores oficiales para eso; Ghost soporta vía configuración.",[11,572,573,576],{},[34,574,575],{},"Email transaccional no testado."," Strapi y Directus necesitan SMTP configurado para password reset funcionar. Ghost depende de SMTP para newsletter entera. Configurar y testar en el día del deploy — mandar email de test para ti mismo, comprobar bandeja de entrada y carpeta de spam, ajustar SPF\u002FDKIM si cae en spam. Sin eso, el cliente descubre que el sitio se rompió en el día en que necesite cambiar la propia contraseña.",[24,578,580],{"id":579},"heroctl-como-infra-de-agencia","HeroCtl como infra de agencia",[11,582,583],{},"La última parte de la guía es honesta sobre cómo HeroCtl encaja en ese escenario. No pretendemos ser la única opción — Coolify, Dokploy y CapRover cubren casos parecidos con tradeoffs distintos. Lo que HeroCtl trae a la agencia alojando CMS es:",[11,585,586,589],{},[34,587,588],{},"Templates de job para subir CMS nuevo en segundos."," En lugar de escribir docker-compose desde cero para cada cliente, guardas un archivo de configuración de cincuenta líneas con Strapi + Postgres ya parametrizado, cambias el dominio y el nombre de la base, y envías. Cliente nuevo entra en producción en menos tiempo de lo que tarda en hacer café.",[11,591,592,595],{},[34,593,594],{},"Enrutamiento por subdominio con TLS automático."," Cada cliente en subdominio propio (o dominio propio con DNS apuntando) recibe certificado Let's Encrypt sin intervención. Renovación pasa sola. No tocas en archivo de configuración de servidor web — el router integrado lidia con eso.",[11,597,598,601],{},[34,599,600],{},"Métricas por job."," Qué cliente está pesando el cluster queda visible en el panel — CPU, memoria, requests por segundo, latencia. Cuando un cliente pasa del volumen contratado, lo ves antes de que el cluster sienta.",[11,603,604,607],{},[34,605,606],{},"Backup gestionado"," (en el plan Business) cubre todos los clientes de una vez. En lugar de configurar treinta scripts de pg_dump separados, es una política central con retención configurable.",[11,609,610,613],{},[34,611,612],{},"Auditoría detallada"," (en el plan Business) cubre exigencia de LGPD para cliente que necesita demostrar quién accedió a qué y cuándo. Para agencia atendiendo cliente en salud, finanzas o educación, deja de ser lujo.",[11,615,616],{},"La línea entre lo que viene en el plan Community (gratuito, sin límite de servidores o jobs) y lo que está en el Business está dibujada por el tipo de exigencia que aparece cuando la agencia crece. Para cinco o diez clientes, Community resuelve. Para treinta clientes donde dos de ellos exigen SSO y uno exige reporte de auditoría, el Business se paga él mismo en el primer mes.",[24,618,620],{"id":619},"preguntas-que-recibimos","Preguntas que recibimos",[11,622,623,626],{},[34,624,625],{},"Wordpress vs esos tres — ¿cuándo aún Wordpress gana?","\nCuando el cliente tiene equipo interno acostumbrado con Wordpress, cuando el sitio depende de plugin específico que solo existe en Wordpress (algunos plugins de e-commerce hyper-localizados, algunos LMS), y cuando el presupuesto es tan pequeño que entrenar editor en CMS nuevo cuesta más que la economía de hospedaje. Para proyecto nuevo en 2026 sin esas restricciones, raramente.",[11,628,629,632],{},[34,630,631],{},"¿Puedo correr Strapi en VPS de R$30?","\nTécnicamente sí, en la práctica es fuente de incidente. 1 GB de RAM es el piso y cualquier pico de tráfico o upload de media mayor tira el proceso. Sube a R$50 a R$80 — la diferencia es menor que un almuerzo, y la estabilidad se vuelve otra cosa.",[11,634,635,638],{},[34,636,637],{},"¿Ghost y Strapi en el mismo servidor, ok?","\nEn VPS pequeña (4 GB de RAM o menos) está apretado y sujeto a contención. En servidor de 8 GB o más con docker-compose separando recursos, funciona. En cluster con orquestador, es el caso común — los dos corren en hosts distintos o comparten con aislamiento de proceso.",[11,640,641,644],{},[34,642,643],{},"¿Cómo migro Strapi v4 a v5 sin pasar la noche?","\nDocumenta el esquema actual antes de tocar. Sube ambiente de staging con v5 y la misma base copiada. Corre el migrador oficial y verifica todo en el admin. Reescribe plugins personalizados antes de promover a producción — ellos no migran automáticamente. Reserva dos a cuatro días útiles para un Strapi medio. Sin ambiente de staging, no des la vuelta directo en producción.",[11,646,647,650],{},[34,648,649],{},"Email transaccional para Ghost newsletter — ¿qué proveedor más barato?","\nMailgun tiene tier gratuito hasta cinco mil emails al mes, después cobra por volumen. Resend tiene tier gratuito hasta tres mil. Postmark es pago desde el primer email pero es el más confiable en entrega. Para newsletter pequeña (hasta dos mil miembros), Mailgun o Resend gratuito resuelve. Por encima, Postmark vale el coste por la tasa de entrega.",[11,652,653,656],{},[34,654,655],{},"¿Hay caso de agencia escalando así?","\nHay varias, pero las que hablan en público son minoría. El patrón típico es agencia con diez a treinta clientes, cluster de tres o cuatro servidores en proveedor cloud, instancias separadas por cliente, backup centralizado. Cuando la agencia publica número, suele hablar en economía de cincuenta a setenta por ciento sobre el equivalente en hospedaje gestionado — lo que pega con la aritmética arriba.",[11,658,659,662],{},[34,660,661],{},"Media de imágenes grandes — ¿dónde guardar?","\nStorage objeto fuera del servidor que aloja el CMS. AWS S3, Cloudflare R2, Backblaze B2 y DigitalOcean Spaces cubren el caso. R2 y B2 tienen precio mejor que S3 puro para workload de lectura intensiva. Configura desde el día uno, incluso con tráfico bajo — migrar media después es dolor de cabeza que no compensa.",[24,664,666],{"id":665},"cierre","Cierre",[11,668,669],{},"Los tres CMS modernos cubren tres casos distintos. Strapi para quien quiere admin pulido con API headless y plugin para todo. Directus para quien tiene dato y necesita admin sobre él. Ghost para quien publica contenido editorial y quiere paywall sin hack.",[11,671,672],{},"Auto-alojarse se volvió viable porque máquina se volvió barata, orquestador auto-hospedado se volvió bueno, y los tres productos maduraron empaquetamiento para Docker. Para agencia con más de cinco clientes, la economía de cloud para auto-alojamiento en cluster compartido paga una persona del equipo en pocos meses.",[11,674,675],{},"Si quieres testar el camino del orquestador sobre cluster propio:",[677,678,683],"pre",{"className":679,"code":681,"language":682},[680],"language-text","curl -sSL https:\u002F\u002Fget.heroctl.com\u002Finstall.sh | sh\n","text",[51,684,681],{"__ignoreMap":685},"",[11,687,688,689,694,695,699],{},"Posts relacionados que profundizan puntos específicos: ",[690,691,693],"a",{"href":692},"\u002Fes\u002Fblog\u002Fheroku-auto-hospedado-2026","Heroku auto-hospedado en 2026"," cubre el panorama más amplio de \"huir del PaaS caro\", y ",[690,696,698],{"href":697},"\u002Fes\u002Fblog\u002Fcuanto-cuesta-alojar-un-saas-2026","Cuánto cuesta alojar un SaaS en 2026"," trae la planilla completa de infra para producto digital saliendo desde cero.",[11,701,702],{},"Sin ceremonia.",{"title":685,"searchDepth":704,"depth":704,"links":705},2,[706,707,708,709,710,711,712,713,714,715,716,717,718],{"id":26,"depth":704,"text":27},{"id":69,"depth":704,"text":70},{"id":91,"depth":704,"text":92},{"id":113,"depth":704,"text":114},{"id":135,"depth":704,"text":136},{"id":362,"depth":704,"text":363},{"id":449,"depth":704,"text":450},{"id":480,"depth":704,"text":481},{"id":508,"depth":704,"text":509},{"id":545,"depth":704,"text":546},{"id":579,"depth":704,"text":580},{"id":619,"depth":704,"text":620},{"id":665,"depth":704,"text":666},"case-study",null,"2026-03-25","Los tres CMS modernos open-source que más se auto-hospedan. Cada uno para un caso. Tabla comparativa, requisitos reales y cuándo vale la pena pagar la versión cloud.",false,"md",{},true,"\u002Fes\u002Fblog\u002Fstrapi-directus-ghost-auto-hospedado-guia","13 min",{"title":5,"description":722},{"loc":727},"es\u002Fblog\u002Fstrapi-directus-ghost-auto-hospedado-guia",[733,734,735,736,737,738],"cms","strapi","directus","ghost","self-hosted","guia","lt32DFV4qGtQT2rVqY-PCT0-rg2exA0XhWpiYL3xThA",[741,720],{"title":742,"path":743,"stem":744,"description":745,"date":746,"category":747,"children":-1},"Stack de monitoring completa en 2026: Prometheus + Grafana + Loki paso a paso","\u002Fes\u002Fblog\u002Fstack-monitoring-prometheus-grafana-loki","es\u002Fblog\u002Fstack-monitoring-prometheus-grafana-loki","Tutorial honesto para subir métricas, logs y dashboards de tu cluster — en 4 horas, sin Datadog. Stack open-source que cabe en 1 VPS de R$80\u002Fmes.","2026-05-12","engineering",1777362217588]