Tech-Insight

Diario di un Blogger: Gestione Tecnica del Blog con Ghost CMS

Un nuovo inizio sul blog con il mio progetto di hosting basato su microservizi: una guida completa sull'utilizzo di Ghost CMS per creare un blog
Constantin Minov 6 min lettura
Laptop con scritta "GESTIRE UN BLOG", tazza di caffè e accessori da ufficio. #Blogging #GhostCMS
Scopri come ho reso tutto più semplice con Ghost CMS. #Blogging #GhostCMS

Oggi desidero mostrarti il lavoro dietro le quinte del mondo del blogging, mettendo l'accento sulla parte tecnica che costituisce la base di un blog.

Ti svelerò gli sforzi necessari per gestire l'hosting, selezionare la piattaforma giusta, personalizzare il design e ottimizzare le prestazioni del blog.

Preparati a scoprire tutto ciò che si cela dietro il corretto funzionamento di questo blog e ad apprezzare il lavoro invisibile che lo rende possibile.

Nel 2016 avevo avviato il mio blog su WordPress e successivamente mi ero trasferito a Squarespace. Pur avendo esperienza nella progettazione e nella creazione di siti web, ho deciso di delegare la parte tecnica a qualcun altro per un po' di tempo.

Sebbene Squarespace fosse un'opzione comoda che richiedeva poco sforzo, mi sono reso conto che altrove avrei potuto fare molto di più, a condizione di avere le competenze necessarie.

Facendo alcune ricerche, di recente ho scoperto Ghost, una piattaforma di blogging che mi ha affascinato per la sua semplicità ed eleganza.

A questo punto ho considerato la possibilità di creare una piattaforma a microservizi basata su Ghost, ospitarla nel cloud e successivamente trasferire il mio blog.

Ho quindi deciso di gestire autonomamente questo blog per tre ragioni principali:

  1. Avere il controllo completo sui miei dati. Essendo il proprietario dei contenuti, posso decidere quando e se vengono cancellati, e soprattutto so esattamente dove sono conservati i miei dati e quelli degli utenti.
  2. Rendere il blog scalabile e modulare. Grazie ai microservizi, posso espandere il blog sia in verticale (aggiungendo risorse) che in orizzontale (distribuendo il carico su più server), senza dipendere da un provider di hosting specifico. Posso anche scegliere di distribuire le risorse in determinate zone o regioni, anche multiple grazie al public cloud.
  3. Gestire il blog in autonomia rappresenta un hobby creativo. Coltivare progetti personali creativi mi permette di allenarmi, sperimentare e provare cose nuove. Mi aiuta a mantenere la mente aperta e mi offre una gratificazione personale.

Un'architettura scalabile

Qui trovi il diagramma architetturale che rappresenta come ho progettato il mio blog basato su Ghost 👇

Diagramma di architettura cloud con Caddy, Ghost, MySQL, e backup.
Diagramma di architettura cloud con Caddy, Ghost, MySQL, e backup

In questa configurazione, ho adottato un'architettura a microservizi utilizzando Docker. Ogni componente del sistema è stato suddiviso in servizi modulari, consentendo una gestione e uno scaling indipendenti.

Il cuore del sistema è il CMS Ghost, che fornisce un'interfaccia intuitiva per la gestione dei contenuti del blog. Ghost è collegato a un database MySQL, che gestisce la memorizzazione dei dati, inclusi articoli, commenti e altre informazioni cruciali.

Per la gestione delle richieste web, ho utilizzato il web server Caddy. Caddy offre funzionalità avanzate, come la gestione automatica dei certificati SSL per garantire la sicurezza delle comunicazioni.

L'architettura è stata progettata per essere automatizzata e scalabile. Ciò significa che posso facilmente aggiungere o rimuovere risorse a seconda delle esigenze del blog, senza dipendere da un unico provider di hosting.

Questa configurazione garantisce flessibilità e indipendenza, consentendomi di spostare il blog con facilità in diverse posizioni geografiche o servizi cloud, offrendo un controllo completo sulla gestione e la localizzazione dei dati.

E ora, ecco i requisiti necessari per questa ricetta!!!🤩

Ghost

Ho scelto Ghost come frontend per il mio blog perché è semplice da utilizzare, intuitivo e offre strumenti SEO efficaci. Inoltre, si occupa autonomamente della gestione della cache e presenta un'interfaccia estremamente piacevole, pulita e ordinata.

MySQL

Come la maggior parte dei frontend, Ghost richiede un servizio di database per la memorizzazione dei dati. Nel mio caso, ho optato per MySQL come database backend. Sebbene Ghost supporti anche altri database, ho scelto di mantenere le cose semplici e utilizzare MySQL.

Caddy

Affinché gli utenti possano accedere al mio blog su Ghost, è essenziale configurare un web server. Ho scelto Caddy come server web anziché Nginx perché semplifica notevolmente la gestione del certificato SSL, un aspetto fondamentale nell'attuale panorama del web. Nella mia architettura, Ghost sarà dietro un server Caddy che fungerà da reverse proxy.

Docker

Per semplificare la gestione e garantire la portabilità delle applicazioni, ho scelto Docker come motore per gestire tutti i container. Questo mi consente di effettuare il deployment in modo più semplice e sicuro.

GitHub

Per automatizzare la gestione dell'infrastruttura e della configurazione, utilizzo un approccio dichiarativo. Tutta la struttura del progetto viene salvata in un repository su GitHub. Questo mi permette di definire in modo chiaro e conciso le istruzioni necessarie per l'installazione di Docker, Ghost, la configurazione del database, l'aggiunta di Caddy e l'esecuzione di un ripristino da un backup.

Cloud

Questo mi consente di distribuire le risorse in specifiche zone e regioni, anche su diverse piattaforme cloud come AWS, Vultr, Hetzner, Oracle Cloud, Azure, GCP o qualsiasi altro provider disponibile nel mondo. In questo modo, posso sfruttare al meglio le opportunità offerte dal cloud senza limitarmi a un unico provider di hosting.

Con questa solida architettura basata su Ghost, MySQL, Caddy, Docker, GitHub e l'utilizzo combinato di cloud, sono in grado di garantire prestazioni affidabili, scalabilità e un controllo completo sul mio blog.

Schema multi-cloud per Ghost CMS con CDN e backup
Schemamulti-cloud per Ghost CMS con CDN e backup

Plugin o Servizi

Ogni blog ha bisogno di plugin o servizi specifici in base alle esigenze del webmaster. Ecco alcuni dei più importanti che ho utilizzato nel mio caso:

Uptime kuma

Uptime Kuma è uno strumento di monitoraggio eccezionale che utilizzo insieme a Telegram per tenere sotto controllo in tempo reale i miei siti web e le mie applicazioni.

Dashboard Uptime Kuma con status del blog e notifiche Telegram.
Dashboard Uptime Kuma con status del blog e notifiche Telegram.

Newsletter

Ghost dispone di una funzionalità integrata per l'invio di newsletter, eliminando la necessità di software di terze parti e costi aggiuntivi. Nel mio caso, ho utilizzato MailGun, un sistema di automazione delle email integrato direttamente nella piattaforma Ghost.

CDN

Una CDN (Content Delivery Network) è un'infrastruttura di rete distribuita in diverse posizioni geografiche, progettata per distribuire contenuti in modo rapido, affidabile e sicuro. Utilizzo una CDN principalmente per i file ospitati nella media library di Ghost. Alcune delle mie scelte preferite includono BunnyCDN e Amazon Cloudfront.

Interfaccia Bunny CDN per la replica geografica dei dati.
Interfaccia Bunny CDN per la replica geografica dei dati.

Analytics

Per garantire la privacy dei visitatori del mio blog, ho deciso di non utilizzare Google Analytics. Invece, il mio blog utilizza un servizio di statistica chiamato Umami, che si impegna a rispettare la privacy e ad essere conforme al GDPR. I dati raccolti sono anonimi e gli utenti non possono essere identificati. Come proprietario dei contenuti, ho il controllo sulla cancellazione dei dati e sulla loro reale localizzazione.

Backup

Per effettuare rapidamente copie di backup dei miei container, utilizzo Restic. I backup vengono sempre crittografati con un algoritmo AES a 256 bit, utilizzando una chiave di crittografia di mia proprietà, prima di essere archiviati nel cloud di Backblaze ad Amsterdam o Sacramento. Ho scelto questo approccio per proteggere i miei dati con restrizioni di accesso e utilizzo. Ciò significa che solo io posso accedere ai dati contenuti nei backup.

Portainer

Utilizzo Portainer come interfaccia web per gestire i container Docker distribuiti in diversi cloud. Lo trovo semplice e intuitivo da utilizzare.

Dashboard Portainer con elenco di ambienti cloud.
Dashboard Portainer con elenco di ambienti cloud

Make e Zapier

Ho utilizzato Make e Zapier per aggiungere funzionalità extra al mio blog tramite l'integrazione di oltre 4.000 app. Questi strumenti mi hanno permesso di espandere le capacità di Ghost in modo semplice ed efficace.

Con l'uso di questi plugin e servizi, sono in grado di arricchire il mio blog con funzionalità aggiuntive, migliorare le prestazioni, garantire la privacy degli utenti e gestire in modo efficiente l'infrastruttura sottostante.

Il processo di deployment

La fase iniziale del processo di deployment coinvolge la scelta del cloud provider. Un requisito fondamentale per questa fase è avere un motore Docker funzionante con accesso diretto alla tua registry privata dove sono conservate le immagini Docker.

I tempi di deployment, anche in caso di situazioni di emergenza, sono sorprendentemente rapidi.

La procedura è relativamente semplice:

  1. Scarica il progetto direttamente da GitHub.
  2. Avvia il ripristino dei dati dal backup.
  3. Esegui il deployment sequenziale dei vari container.
  4. Aggiorna il record DNS.

Per semplificare il processo di deployment, ho automatizzato gran parte delle operazioni utilizzando Terraform. Con un unico comando, posso gestire tutto il processo di deployment dei container necessari per il mio blog.

Questo processo di deployment semplificato consente di ripristinare rapidamente il blog in caso di disastri e facilita anche l'implementazione di nuove funzionalità o aggiornamenti senza interruzioni significative.

I costi

I costi medi variano da zero, se si opta per utilizzare il cloud di Oracle, a circa 10 euro al mese per un sito sul cloud AWS. È importante notare che è necessario possedere le competenze necessarie per configurare tutto correttamente.

Tuttavia, è difficile stabilire tariffe fisse poiché i costi del cloud possono cambiare nel tempo. Inoltre, dipendono anche dal traffico, dal numero di utenti e dalla frequenza di invio delle newsletter, tra altri fattori.

Condividere è prendersi cura ❤️
Commenti
ti potrebbero interessare: Minovista

💌 La Mia Newsletter: Potenzia la Tua Produttività! 🚀

Iscriviti ora! Riceverai una mia selezione di super contenuti, libri da non perdere 📚 e life hacks che arricchiscono la tua vita💡. Trasforma la tua routine in un percorso ispirato e produttivo! 🎯

Ottimo! L'iscrizione è avvenuta con successo.

Bentornato! Ti sei iscritto con successo.

Ti sei iscritto con successo a Minovista.

Successo! Controlla la tua email per il link magico per l'accesso.

Successo! I dati di fatturazione sono stati aggiornati.

La fatturazione non è stata aggiornata.