Cómo armé este sitio
Mi sitio cuesta $3.58/mes. Ghost + PikaPods + Cloudflare + Namecheap + Zoho + Mailgun. Este post documenta el proceso real, errores incluidos.
Qué estaba buscando (y qué no)
En este artículo encontrarás:
– Qué buscaba y qué no
– Herramientas que elegí (y por qué)
– Problemas reales que tuve
– Errores que no repetiría
– Qué aprendí y cómo lo haría hoy
Quería crear un sitio web donde poder escribir ensayos, acerca de mi trabajo, de lo que me gusta, de lo que pienso.
Me inspire en sitios como https://waitbutwhy.com/ , https://www.themarginalian.org/.
Son sitios de reflexiones acerca de varios temas variados sobre cultura, actualidad, ideas. Me gustan mucho.
Quiero crear algo parecido, pero volcado hacia lo técnico, hacia aprender acerca de software, acerca de programación, de carrera, mostrar código, mostrar errores, mostrar el progreso de muchos proyectos que quiero arrancar.
Este post es la caja negra acerca de cómo es que lo armé, que elegí y que descarté en el proceso.
Quiero decir que pregunte mucho a la IA en este proceso. Claude y ChatGPT fueron mis consultores técnicos. Les pasé screenshots, logs de error, configuraciones que no entendía. Sin ellos, esto hubiera sido más difícil y me hubiera llevado más tiempo. Nunca antes había creado o estudiado para hacer esto.
Quería:
- Un sitio minimalista, que pueda personalizarlo mucho para que tenga la estética que quiera y que sea rápido
- Que sea barato $ de mantener mensualmente
- Que sea simple tener el control del contenido y el dominio
- Que pueda manejar una Newsletter
No quería:
- Algo overengineering, algo para un experto haciendo webs
- Algo que sea caro mensualmente
- Algo que no sea mío, sino que la marca del CMS venga primero
- Monetización limitada pensando en el futuro
Con eso claro, fui a la IA a preguntarle y termine escogiendo las siguientes herramientas.
Ghost — escribir con elegancia

Características
Elegí Ghost entre otros CMS (Content Management System), ya que me pareció moderno, elegante, minimalista, fácil de operar. Podría haber elegido WordPress pero me decante por Ghost por ser más simple en términos de no tener tantos plugins, tantas configuraciones innecesarias para mi, que me dificultarían un poco más empezar. Además apenas entre al sitio oficial me gusto como presentan su producto, como lo comparan con otros CMS, y como al parecer Ghost les 'gana' a todos Ja.
El editor es limpio, enfocado y sin distracciones. No hay mil plugins, ni decisiones constantes. Es abrir, escribir y publicar. Para un sitio que va a crecer con el tiempo, eso pesa más que cualquier feature.

Cosas que me gustaron:
- El CMS es simple de usar
- Interfaz para escribir posts es sencilla de usar
- Control total del contenido y puedes personalizarlo mucho al descargar su theme
- Exportable (nada de lo que hagas a nivel de contenido posts o html, css, js, queda atrapado)
- Buen soporte para SEO básico
Cosas que acepté:
- Menos flexibilidad que WordPress, muchos menos themes elegibles y plugins
- Algunas configuraciones requieren tocar tema o CSS
- No es para “hacer de todo”
Y está bien. Este sitio no quiere hacer de todo.

Iteraciones
Lo que si hice y mucho aquí fue modificar el theme que elegí. Hice muchos ajustes a sus archivos internos, en su html.
"Iteré el theme 110 veces. Descargaba, modificaba HTML, CSS, JavaScript, resubía y probaba. Sección Code injection de Ghost se convirtió en mi mejor amigo para ajustes rápidos sin tocar el theme completo."


Y aun así se que seguiré haciendo cambios en el futuro.
Como lo implementé en mi flujo de creación del sitio?
Algo importante a destacar es que en primera instancia use Ghost desde su sitio de origen, desde ghost.org, creando una cuenta y demás cosas, todo desde allí. Pero al ver los planes que posee, e investigar que por ejemplo herramientas de hosting como PikaPods tienen integración con Ghost, que dicho sea de paso, Ghost es open source, entonces me decante por implementar Ghost desde PikaPods, y no usar su hosting.
Desde PikaPods se puede crear una cuenta gratuita de Ghost y empezar a usar el CMS.

PikaPods — infraestructura sin drama ni costos desproporcionados

Quería algo simple, un hosting para novato. Empecé usando Ghost, pero más tarde migre a PikaPods. La razón fue tratar de maximizar cada dólar de inversión en el sitio y PikaPods es justo esto: su precio se guía de acuerdo a los recursos que el sitio ocupa, más audiencia, más trafico, aumenta el costo. Aquí no hay planes con una tarifa fija.
Primer error aquí: Asumí que 'Pikapod' era algo técnico y complejo.
Es solo un container. Básicamente un mini-servidor que corre tu app. Nada mágico.
Aquí puedo:
- Tener Ghost corriendo rápido
- Costo por recursos usados (depende de audiencia), no tiene planes fijos
- Manejar recursos de forma clara
- Evitar mantenimiento innecesario
- Escalar si algún día hace falta
PikaPods cobra según:
_🧠 RAM
_🧮 CPU
_💾 Disco
_⏱️ Horas activo el pod
No según:
_❌ visitas
_❌ cantidad de posts
_❌ tamaño del blog en términos editoriales
_❌ si sos “chico” o “grande”
Cuánto cuesta?
Actualmente estoy pagando ~3 USD al mes. Esto es porque Ghost es liviano y mi configuración actual es algo así:
_ Ghost (Node.js)
_ RAM mínima (ej: 512 MB – 1 GB)
_ CPU baja
_ Poco storage
_ Tráfico bajo
Eso da como resultado ~3 USD/mes, que es totalmente normal para:
_ un blog personal
_ tráfico bajo o medio
_ sin picos raros
¿Qué pasa si el sitio crece mucho?
Ejemplo hipotético: Empiezan a entrar miles de visitas/día
_ Más consumo de RAM y CPU
_ Ghost necesita más recursos
Subirá a:
_ 6 USD
_ 10 USD
_ 15 USD
(depende cómo escale)
Pero no te cobran más sin que realmente lo estés usando, al menos por ahora es asi. Esto es lo que elegí yo, hoy, con mis recursos, para aprender.
Namecheap — dominio, nada más

El dominio lo compré en Namecheap por una razón simple: funciona.
No hay nada especial acá:
_ Dominio propio
_ DNS claro
_ Sin vueltas
Para mí, el dominio es identidad. Todo lo demás es secundario. No uso el DNS de aquí, para eso uso Cloudflare.
Cloudflare — seguridad y orden, sin exagerar

¿Qué es Cloudflare?
En este punto creí que ya estaría todo, ya tenía:
_ un dominio (namecheap)
_ un servidor (pikapods)
_ un cms (Ghost)
Con esto bastaba y sí, alcanza, pero te deja expuesto y sin control fino. La IA me recomendó tener algo más, una capa intermedia que me diera más seguridad, performance, orden, control.
Hay varias opciones que hacen esto, entre todas elegí Cloudflare porque según lo que investigue su complejidad de uso es media-baja, funciona muy bien para equipos pequeños y tiene un plan gratuito.
Cloudflare es una capa intermedia que se coloca entre tu sitio y los visitantes.
No reemplaza tu hosting.
No reemplaza tu CMS.
No reemplaza tu dominio.
Lo que hace es interceptar, filtrar y optimizar todo lo que entra y sale.
En la práctica sirve para proteger el sitio, acelerarlo, darte control acerca de tantas cosas como cache, redirigir urls, crear reglas de seguridad, etc. Esta es la arquitectura que estoy usando ahora mismo:
[ Usuario ]
↓
[ Navegador ]
↓
[ Cloudflare ]
↓
[ Hosting (PikaPods) ]
↓
[ Ghost ]
↓
[ Contenido ]visto por responsabilidades:
Dominio (Namecheap)
↓
DNS + Seguridad + CDN (Cloudflare)
↓
Servidor (PikaPods)
↓
CMS (Ghost)¿Cloudflare es obligatorio? No. Mi sitio funcionaría sin Cloudflare.
Pero usarlo es como:
_ poner un portero
_ poner un acelerador
_ poner un panel de control
Todo en uno, y gratis en su versión básica.
Problema con el Dominio del sitio
Tenía el problema que como había elegido como dominio raíz en PikaPods a cesarbeassuarez.dev, cualquier persona que tipee en la web www.cesarbeassuarez.dev no podría ir al sitio, ya que ese www no es el dominio raíz.
Las 4 formas de tipear el dominio (y por qué importa): Cuando alguien escribe tu sitio, en realidad puede llegar de cuatro maneras distintas:
http://cesarbeassuarez.devhttps://cesarbeassuarez.devhttp://www.cesarbeassuarez.devhttps://www.cesarbeassuarez.dev
Parece una pavada, pero son cuatro entradas distintas.
En un setup sano:
Solo UNA es la “oficial” (canónica). Por ejemplo, si elegís:https://cesarbeassuarez.dev
Entonces:
http://cesarbeassuarez.dev→ redirigehttp://www.cesarbeassuarez.dev→ redirigehttps://www.cesarbeassuarez.dev→ redirigehttps://cesarbeassuarez.dev→ OK
Las otras redirigen automáticamente a esa. Qué pasaba en mi caso:
Al principio:
- algunas cargaban
- otras no
- algunas fallaban solo en móvil
- otras daban errores SSL
- otras simplemente no resolvían DNS
Me pase varias horas tratando de resolver esto en Namecheap. Traté de usar funciones de redirección, y nada funcionaba. Fue algo frustrante.
Como lo resolví:
Elegí una sola versión oficial y empecé a usar Cloudflare, que trata mejor la redirección de dominios que Namecheap.
Aquí aprendí que Namecheap es en general solo para comprar el dominio, luego se necesita algo como Cloudflare para gestionarlo de la mejor manera posible.
Zoho Mail — el servicio de correo

Necesitaba un email para asociarlo al dominio, esa es la manera profesional de hacer las cosas. Y elegí zoho mail.
Zoho Mail cumple 3 funciones:
- Identidad y profesionalismo. Usar un email con dominio propio refuerza marca personal, da confianza.
- Emails transaccionales de Ghost. Ya que se necesita enviar emails para: confirmaciones de suscripción, newsletters, notificaciones, enlaces mágicos de login (importantísimo).
Si no configuras bien el mail: los emails no llegan, llegan a spam o directamente Ghost falla en ciertas acciones. - Reputación del dominio (esto es CLAVE). Zoho te obliga (y eso es bueno) a configurar: SPF, DKIM, DMARC. Esto hace que tus emails no sean marcados como spam, Ghost pueda enviar correos sin problemas. En general no tuve problemas con estas configuraciones, son sencillas de hacer, solo copiar y pegar hashes con cuidado.
Zoho mail con PikaPods
Algo de gran importancia fue conectar Ghost en las variables generales de PikaPods, para así poder tener un acceso seguro a cuenta de Ghost creada desde Pikapods, ya que si no se configura bien estas, es posible no poder acceder al CMS y por ende no poder hacer nada nuevo en el sitio.

¿Por qué Zoho y no Gmail u otro?
Razones simples:
_ plan gratuito suficiente
_ buena reputación de envío
_ fácil integración con dominios
_ interfaz clara
_ no te ata a Google Workspace
Para esta etapa: Zoho es más que suficiente y no distrae.
Zoho Mail no es especial por sí mismo.
Podrías usar:
_ Google Workspace
_ Proton Mail
_ Outlook
Lo importante no es Zoho, es tener el email del dominio bien configurado. Zoho es solo la herramienta que hoy cumple ese rol.
Newsletter — Ghost + Mailgun (sin herramientas extra de marketing)

Aunque el newsletter está integrado en Ghost, el envío real de los emails no lo hace Ghost directamente.
Para eso uso Mailgun, en su plan gratuito. Ghost se encarga de:
- gestionar suscriptores
- decidir qué post se envía por email
- armar el contenido del newsletter
Mailgun se encarga de:
- entregar los emails
- manejar envío masivo
- asegurar buena reputación de salida
Por qué Ghost necesita Mailgun
Ghost no envía newsletters por SMTP común.
Para envíos masivos necesita un proveedor especializado.
Ahí entra Mailgun.
En términos simples:
Ghost (contenido y suscriptores)
↓
Mailgun (envío de emails)
↓Bandeja del lector
Esto es normal y esperado. La mayoría de los CMS hacen algo similar.
Mailgun no reemplaza a Zoho Mail. Cada uno cumple un rol distinto:
- Zoho Mail → emails personales y transaccionales
([email protected], login, contacto) - Mailgun → envío masivo del newsletter
Ambos usan el mismo dominio, pero para cosas distintas.
Cómo lo tengo configurado
En Ghost configuré:
- Mailgun region: US
- Mailgun domain:
mg.cesarbeassuarez.dev - Mailgun private API key (desde el panel de Mailgun, fácil de obtener)

Una vez hecho esto, Ghost puede:
- enviar newsletters
- enviar notificaciones
- manejar emails de forma confiable
Todo quedó funcionando sin tocar código. Costos, uso:
- Mailgun – plan gratuito
(suficiente para esta etapa inicial)

Mientras el newsletter sea chico:
- costo = $0
- complejidad = mínima
Si algún día crece mucho, recién ahí tendría sentido revisar otra cosa.
En Ghost escribo el contenido.
Mailgun lo entrega.
Yo solo decido cuándo publicar.
SEO técnico: liviano y consciente
No armé este sitio pensando en “rankear primero”, pero sí en no sabotearme desde el inicio.
El enfoque fue simple: hacer las cosas básicas bien y entender qué estaba pasando.
Herramientas que usé para verificar
La principal fue Google Search Console.
No la usé para obsesionarme con métricas, sino para responder preguntas concretas:
- ¿Google puede acceder al sitio?
- ¿Las páginas están siendo indexadas?
- ¿Hay errores graves?
- ¿Qué dominio está considerando como principal?
- ¿Aparecen problemas con HTTPS o redirecciones?
En especial miré:
- estado de indexación
- cobertura
- URLs canónicas
- errores relacionados con
wwwvs sinwww
Eso me ayudó a detectar problemas que no se ven a simple vista.
Metadatos de los posts
No hice nada sofisticado, pero sí consciente.
Para cada post:
- título claro
- descripción escrita a mano, no automática
- coherencia entre título, excerpt y contenido real
La idea no fue “optimizar”, sino no mentirle al lector ni al buscador.
Además de respetar el uso de los h1, h2, etc., en un momento no usaba los h2, me saltaba de h1 a h3, esto es un error, hay que usarlos.
Para ser honesto, hay varias cosas que aun no hice:
- keyword research
- estrategia de backlinks
- optimización avanzada
- plugins de SEO
Y está bien. Este sitio:
- está naciendo
- está en construcción
- prioriza claridad sobre optimización agresiva
Eso puede venir después. El enfoque correcto según mis IAs consultoras es: SEO como higiene, no como religión.
Errores que cometí (para que no los repitas)
Esta es la parte menos prolija del post, pero probablemente la más útil.
Esta parte es importante porque el camino no fue lineal, ni claro, ni prolijo. Hubo errores, dudas grandes y momentos de “¿para qué me metí en esto?”.
Subestimar el tema del dominio y los DNS
Al principio pensé que:
“compro el dominio, apunto al hosting y listo”.
No fue así. Me encontré con:
_ diferencias entre dominio raíz y www
_ registros A, CNAME, ALIAS
_ TTLs que no entendía
_ configuraciones que parecían correctas pero no funcionaban
_ tiempos de propagación que te hacen pensar que hiciste todo mal
_Error: querer “resolver rápido” algo que es lento por naturaleza.
_Aprendizaje: DNS no es difícil, pero es poco intuitivo y hay que tener paciencia.
Un Error que verdaderamente "me atormentó un buen rato", fue las diferencias entre dominio raíz y www.
En un principio, en PikaPods elegí www.cesarbeassuarez.dev como el dominio raíz, pero luego veía como si intentaba acceder a cesarbeassuarez.dev esto arrojaba un mensaje de error y no me llevaba al sitio. No podía ser, tenía que funcionar de manera que ingresando:
_ www.cesarbeassuarez.dev
_ cesarbeassuarez.dev
ambas formas lleven a https://cesarbeassuarez.dev/. En ese momento traté de arreglarlo con el DNS de Namecheap y luego de muchos ajustes no logre solucionarlo. Esto fue lo que me llevo a conocer e instalar Cloudflare, ya que este permite hacer la redirección desde www.cesarbeassuarez.dev o cesarbeassuarez.dev al dominio elegido como raíz.
También aprendí que el dominio raíz recomendado en la actualidad es sin el www

No configurar email Zoho en variables de PikaPods y luego no poder entrar a cuenta de Ghost
Luego de hacer cuenta de Ghost desde PikaPods, hice cambio de dominio raíz, de www.cesarbeassuarez.dev a cesarbeassuarez.dev, sin el www, esto hizo que cuando quería entrar a Ghost no me dejara, como que se cortó la conexión con el dominio. Esto provoco que tuviera que eliminar ese Pod (ese sitio Pikapod) y crear otro, esta vez sí con desde el principio cesarbeassuarez.dev como dominio raíz, y parecía que había solucionado el problema, pero más tarde, cuando decidí activar ingreso con 2FA a Ghost, de nuevo al cerrar sesión, luego no pude entrar, no me reconocía contraseña. Fue un rato de pensar que tal vez PikaPods no era el adecuado, pensé que tenía que usar si o si Ghost.org, tener una cuenta allí, con su hosting, pensaba que PikaPods no logra hacer una cuenta con conexión fuerte con Ghost.
Pero luego de preguntar mucho a la IA, di con la sección de variables de PikaPods, y allí había variables para datos de email, y entonces con desconfianza las llene y luego de tener que eliminar el Pod actual y crear un tercer Pod, recién allí pude ser testigo de que ese era el problema, que en las dos veces anteriores no había usado estas variables. Con esto pude activar el 2FA para ingreso a Ghost e incluso resistió un cambio de dominio raíz. Comprobé que puedo confiar en Pikapods para usarlo con Ghost, y perder el miedo que algún día no pueda entrar al CMS.
_Error: No tener en cuenta todos los paneles que muestra PikaPods.
_Aprendizaje: Casi dejo de usar un hosting por culpa de no observar bien, de desconfiar. No me rendí con PikaPods y conseguí usarlo para lo que necesito.

Desorden en ajustes en CSS
Realicé muchos ajustes al css, al html, maquetando el sitio, viendo que se viera Ok en mobile, en desktop, en todas las posibles dimensiones usadas actualmente.
No ordené adecuadamente esto, lo que llevo a que se haga complicado encontrar donde hice tal modificación a tal panel, botón, etc.
Desde el principio hay que comentar y seguir buenas prácticas sobre como usar variables generales y demás para no terminar con una ensalada de css y scripts js.
_Error: No seguir buenas prácticas de ordenamiento de código.
_Aprendizaje: Hay que desde el principio ocuparse de hacer comentarios, usar variables oportunas, usar maneras para que el mantenimiento del código en el futuro no se vuelva un lio. No hay que confiar que porque uno lo hizo va a recordar en unas semanas donde hizo tal cosa que se necesita cambiar.

Momentos reales de “no entiendo nada”
Hubo varios momentos donde:
- leía documentación
- miraba paneles
- cambiaba opciones
y aun así sentía:
“no entiendo qué está pasando”.
Eso desgasta. Hace pensar en abandonar o dejar todo “más o menos”.
_Error: creer que entender todo rápido es lo normal.
_Aprendizaje: entender infraestructura lleva iteraciones, no inteligencia.
Fue varias veces que cree nuevos sitios (Pods) en PikaPods, varias veces ajustando la maquetación del sitio mientras recordaba html, css y javascript que hacía tiempo no los usaba.
El tiempo REAL que me llevó
Esto no se resolvió en una tarde.
Entre:
- leer
- probar
- romper cosas
- esperar propagaciones
- volver atrás
- corregir
Fueron varios días, repartidos en momentos cortos, con cansancio y pausas.
_Error: pensar que “esto debería llevar poco tiempo”.
_Aprendizaje: construir bien lleva más tiempo que seguir un tutorial.
En especial si es la primera vez que lo haces.
Por qué cuento esto
No escribo esto para “recomendar herramientas”. Lo escribo porque:
- entender la infraestructura cambia cómo pensás un sitio
- te da criterio para decidir
- te ahorra errores comunes
Hoy uso Cloudflare, Ghost, PikaPods, Namecheap, Zoho, Mailgun porque encajan con mi etapa actual.
Mañana puede cambiar.
Y está bien.
Mini arquitectura completa:
[ Usuario ]
↓
[ Navegador ]
↓
[ Cloudflare ]
↓
[ Hosting (PikaPods) ]
↓
[ Ghost ]
↓
[ Contenido ]
↘
[ Zoho Mail ] → emails personales / login
↘
[ Mailgun ] → newsletters (envío masivo)
↓
Emails (suscripciones, login, newsletters)O separándolo por roles:
- Dominio → Namecheap
- DNS + Seguridad → Cloudflare
- Hosting → PikaPods
- CMS → Ghost
- Email personal / transaccional → Zoho Mail
- Newsletter (envío masivo) → Mailgun
Cada pieza:
- es independiente
- se puede cambiar
- no encierra en ecosistema
Eso es buena arquitectura.
Lo que aprendí. Y si tuviera que empezar de nuevo
Algunas ideas que me quedaron claras:
- Menos ajustes = menos bugs
- Control reduce ansiedad
- No todo lo “pro” es necesario
- Un sitio vivo vale más que uno perfecto
- Construir en público ordena el pensamiento
Stack completo con costos reales (diciembre 2025):
- Dominio: Namecheap ~$7/año
- Hosting: PikaPods ~$3/mes
- CMS: Ghost (open source, gratis)
- CDN/Security: Cloudflare (plan free, $0)
- Email personal / transaccional: Zoho Mail (plan free, $0)
- Newsletter (envío masivo): Mailgun (plan free, $0)
Total aproximado: ~USD 3,58 / mes para arrancar
Este stack no es definitivo.
Es suficiente hoy.
Si tuviera que empezar de nuevo
- Configuraría Zoho Mail en PikaPods antes de tocar Ghost
(me ahorraría el dolor de no poder entrar a la cuenta) - Usaría Cloudflare desde el día 1
- No perdería tiempo peleando con Namecheap para redirecciones
- Elegiría cesarbeassuarez.dev (sin www) desde el inicio
- Evitaría romper la conexión con Ghost tocando cosas “a ciegas”
- Comentaría todo el CSS y JS mientras lo modifico
(y no después, tratando de recordar qué hice) - Probaría en móvil desde el primer ajuste,
no después de 20 iteraciones del theme
Recursos que me salvaron constantemente
Principalmente: Claude y ChatGPT cada vez que no entendía algo. Les pasaba screenshots, logs, configs. Sin eso, hubiera tardado el doble.
Herramientas para verificar:
- Google Search Console (indexación)
- PageSpeed Insight https://pagespeed.web.dev/ (UI, performance, SEO)
El sitio sigue en construcción
Este sitio no está terminado.
Probablemente nunca lo esté.
Y eso está bien.
Prefiero un lugar que crece, cambia y se ajusta, antes que algo pulido pero muerto.
“Si estás armando tu propio espacio, quizá algo de esto te sirva.”
Si no, al menos queda el registro del camino👍.
—
Si te interesó esto:
Si querés saber por qué armé un blog en lugar de solo estudiar en privado: Por qué construyo en público.
Como resolví problemas relacionados con el correo del blog: El correo “funciona” mucho antes de estar bien configurado
Audité la seguridad de esta infraestructura después de armarla: Cuánta seguridad necesita realmente un blog personal