Un CMS (Content Management System) è uno strumento molto usato da chi vuole realizzare un sito internet o un blog personale: si tratta di un sistema davvero utile che in poche mosse, una volta installato e configurato a dovere, permette di gestire i contenuti da pubblicare, moderare i commenti e mettere in pratica tutte quelle azioni necessarie per ottenere un intero sito personale online ottimizzato per le proprie necessità.
Però, nonostante i notevoli vantaggi, ci sono alcuni aspetti, spesso trascurati (dai novizi, ma non solo), che fanno ritenere questa scelta nella migliore delle ipotesi azzardata, se non addirittura inutile e pericolosa.
Infatti, di solito, chi non utilizza prodotti confezionati ad hoc, spesso si affida a Content Management System rinomati quali WordPress, Drupal e Joomla che hanno in comune il fatto di essere open source, quindi completamente gratuiti e per questo installati nel mondo da milioni di persone: ed è qui che nascono i problemi.
Purtroppo, a causa della notevole diffusione, questi sistemi sono continuamente studiati a fondo da bande di hacker criminali con l’unico scopo di trovarvi delle falle che consentano di ottenere le autorizzazioni necessarie per accedere segretamente nel server ed inoculare codice malevolo nelle pagine del sito.
È così che, magari, rischiamo di essere inconsapevolmente corresponsabili di crimini informatici verso altri soggetti, visto che spesso e volentieri i famosi attacchi DDoS (Distributed Denial of Service), cioè attacchi che mirano a rendere irraggiungibili e inutilizzabili interi datacenter, fanno uso proprio di script (righe di codice) presenti sullo stesso server che ospita il nostro sito, realizzato appunto con uno dei rinomati CMS che, come abbiamo visto, funziona da “porta di accesso” per i malintenzionati.
Oppure oltre ad offrire ai nostri visitatori articoli interessanti o servizi utili, rischiamo di renderli vittime, anche in questo caso inconsapevoli, di script nascosti posizionati senza il nostro consenso nelle pagine e che sfruttano la CPU degli ignari naviganti per minare a man bassa criptovalute di ogni tipo.
È recente la notizia che milioni di siti realizzati con WordPress sono sotto attacco per sfruttare le vulnerabilità nei plugin meno recenti del noto Content Management System e per iniettare codice nei siti compromessi. L’obiettivo è creare account amministrativi di WordPress non autorizzati per ottenere il controllo completo dei siti Web.
Insomma, chi gestisce dei siti con i Content Management System open source (WordPress, Drupal, Joomla ecc.) sa molto bene che ogni giorno emergano nuovi exploit, ed essendone anche io un utilizzatore seriale, mi sono trovato più volte costretto ad agire per limitare i danni. Considerando il notevole tempo impiegato per le attività di difesa e aggiornamento, ho deciso di abbandonare i CMS tradizionali per cercare alternative ugualmente valide ma senza gli svantaggi fin qui segnalati.
È così che ho scoperto i generatori di siti statici che al contrario regalano tanti vantaggi iniziando proprio dalla sicurezza. Vediamo quindi nel dettaglio perché per piccoli siti e blog personali è sicuramente più saggio affidarsi a questi strumenti e come fare ad installarne uno, gratuito, open source e multipiattaforma, con una video guida passo passo realizzata per l’occasione.
Indice degli argomenti
Content Management System: gli svantaggi dei CMS tradizionali
Quando si parla di WordPress, Drupal o Joomla, ci si sta riferendo ad un tipo di Content Management System tradizionale che utilizza linguaggi di programmazione “lato server“ per realizzare una piattaforma disponibile in rete, in cui è presente una sezione dedicata all’amministrazione e alla gestione dei contenuti, raggiungibile previa registrazione e successivo login.
Le pagine e i dati necessari al funzionamento vengono tutti memorizzati in un database che, se non previsto di default nel piano di hosting (server su cui risiedono i file), spesso deve essere aggiunto (e pagato a parte).
Attraverso il pannello di controllo, la gestione di tutto il sito è alquanto semplice, ma il fatto di avvalersi di un insieme di tecnologie “lato server” può diventare un grande punto debole per diversi motivi:
- trovandosi online, l’accesso al servizio di gestione e mantenimento del sito è gravemente esposto ad eventuali attacchi di criminal hacker o malfattori che potrebbero prendere possesso dell’intera piattaforma. E quando capita, il problema diventa tremendamente serio, visto che stiamo parlando di milioni di siti web infettati contemporaneamente;
- per lanciare i comandi necessari al loro corretto funzionamento, i CMS fanno uso di file presenti sul server che, proprio per questa loro peculiarità, potrebbero essere oggetto di attacchi da parte di malintenzionati senza scrupoli i quali, inoculandovi del codice malevolo, riuscirebbero ad eseguire le loro azioni criminali;
- l’uso di un database comporta inevitabilmente che i tempi di caricamento delle pagine siano strettamente legati al frangente che passa tra la richiesta dei dati al DB fino alla visualizzazione finale, tempi che si sommano a quelli comunque necessari per caricare tutti gli altri file utili alla creazione della pagina completa (immagini, testi, banner, script ecc.). Il guaio è che le maggiori tempistiche di caricamento di un sito, corrispondono a peggiori posizionamenti sui motori di ricerca.
Content Management System: soluzioni alternative
Proprio per limitare al massimo questi svantaggi, ho iniziato la ricerca fra le soluzioni disponibili esistenti, per generare, gestire e mantenere siti Internet in alternativa ai sistemi tradizionali (WordPress & Co. + database + hosting), ed ho trovato tre possibili tipologie open source da utilizzare per ottenere un perfetto sito web statico e sicuro:
- CMS plugin
- Flat File CMS
- Static Site Generators
CMS plugin
Un’idea per realizzare interi siti web statici potrebbe essere quella di utilizzare gli stessi CMS (Drupal, WordPress, Joomla) per gestire il tutto come si farebbe normalmente, ma in locale, sul proprio PC. Poi, attraverso dei plugin (aggiunte software) appositi, trasformare il sito da dinamico a statico con un clic, trasferendo solo successivamente tutti i file sul server online. Di seguito alcuni di questi plugin esistenti, i primi due per WordPress e gli altri per Drupal:
Il problema di questa soluzione è che resta comunque la necessità di dover installare e mantenere un CMS, ricordandosi di effettuare tutti gli aggiornamenti ogni qual volta si rendano disponibili ed in più, l’uso di un plugin per generare il sito, da quello che ho potuto vedere, resta comunque una soluzione più limitata rispetto ad altre alternative.
Flat File CMS
Un Flat File CMS si basa su un principio molto semplice: per pubblicare le pagine del sito, basta creare le cartelle sul server, seguendo una logica prestabilita, caricarvi al loro interno i file di testo scritti seguendo alcune regole specifiche e, immediatamente, questi file diventano le pagine visualizzate ai naviganti.
Come si vede, questa tipologia di creazione siti, non contempla l’uso di alcun database, mentre la gestione degli accessi e della organizzazione del sito vengono demandate alle indicazioni scritte in file con estensione YAML.
In questo modo, gli utenti di un Flat File CMS, possono creare un intero sito, semplicemente memorizzando ogni file di testo, per ogni articolo del blog, nella cartella corretta. Questo può essere fatto anche senza un’interfaccia di amministrazione: basterà infatti un semplice editor di testo per creare un articolo.
Alcuni tra i prodotti più conosciuti fra i Flat File CMS sono:
Nonostante molti vantaggi, questo sistema dimostra però di possedere, almeno per gli obiettivi che mi sono prefissato, anche alcuni svantaggi:
- velocità: quando la struttura del sito cresce, cresce anche il tempo impiegato per leggere le informazioni necessarie per visualizzare le pagine, visto che tutti i file di dati devono essere scansionati uno dopo l’altro;
- user-friendly: questo tipo di strumento è stato creato per migliorare la stabilità, le prestazioni e la funzionalità, ma per utilizzarlo è necessario avere delle basi di HTML, PHP, CSS e Markdown, per mettere mano al “motore“. Per questo motivo non è la soluzione più indicata a tutti;
- assistenza: dicevamo che non è molto user-friendly e che per farlo funzionare è bene avere delle conoscenze specifiche di programmazione: non avendo la stessa diffusione dei CMS più rinomati inoltre, anche le community relative sono abbastanza limitate, quindi potrebbe essere difficile trovare la soluzione ai problemi che via via possono presentarsi;
- temi e plug-in: essendo ancora relativamente poche le persone che se ne occupano, sono minime anche le risorse che si possono trovare disponibili online;
- aree di applicazione: poche risorse disponibili, si traducono in meno possibilità di sviluppo, per questo motivo, ad oggi, è inutilmente complicato utilizzare un Flat File CMS per realizzare un sito di e-commerce, riducendone drasticamente gli utilizzi.
I vantaggi di usare uno Static Site Generator
Alla fine, la mia scelta è ricaduta sull’ultima tipologia: un generatore di siti statici. Ci sono diversi motivi validi per cui un generatore di siti statici dovrebbe essere considerato da chi ha intenzione di metter su un piccolo sito o un blog personale:
- la sezione amministrativa di gestione del sito, quella con il pannello di controllo che serve a gestire i contenuti, o è assente o si trova offline, con la conseguenza che è molto più difficile riuscire ad accedere e fare danni. Aumenta quindi, e di molto, la sicurezza;
- i file usati per la creazione del sito vengono interpretati dal browser che li visualizza a video sottoforma di pagine web: essendo scritti nel formato HTML, anche se modificati da eventuali malintenzionati non possono essere adoperati per lanciare comandi sul server, e la sicurezza, ancora una volta, ringrazia;
- il sito così generato funziona senza la necessità di un database, con il vantaggio di non avere “tempi morti” di collegamento: la visualizzazione delle pagine diventa così quasi immediata, caratteristica questa molto apprezzata dai motori di ricerca, che andrà quindi a migliorare l’indicizzazione dell’intero sito;
- trattandosi di semplici file di testo, e non essendo previsto alcun aggiornamento dinamico, possono essere distribuiti attraverso sistemi di CDN (Content Delivery Network) ovvero un network di server dislocato uniformemente nel globo. Una CDN è in grado di garantire tempi di risposta estremamente rapidi e senza disservizi: in questo modo, se uno dei server del network va giù, il traffico viene semplicemente rediretto verso un altro server. Questo semplice principio permette di accelerare e ottimizzare in tutto il mondo i siti internazionali che verranno caricati, anche se l’utente si trova dall’altra parte del globo, più velocemente;
- per ospitare i file è possibile usufruire di uno qualsiasi dei servizi gratuiti realizzati per questo scopo: se si utilizza un hosting come ad esempio GitHub Pages, è anche possibile mantenere traccia di tutte le modifiche apportate ai file, ottenendo quindi anche una utile gestione delle versioni delle pagine del sito;
- la gestione dei backup è di una semplicità disarmante: basta comprimere la cartella che contiene tutti i file del sito, copiarla da qualche parte e il backup è completato in un batter d’occhio.
Insomma, come si vede, rispetto al classico sistema dinamico CMS + database + hosting, i vantaggi sono evidenti: semplicità di utilizzo, maggiore sicurezza, maggiore velocità di caricamento delle pagine (e quindi migliore posizionamento nei motori di ricerca), semplicità nella gestione dei backup, minori costi (di soldi e di tempo).
I generatori di siti statici generano il codice HTML delle pagine a livello locale, in offline, sul computer dello sviluppatore (o alternativamente nel cloud).
I file vengono memorizzati in una serie di directory ben strutturate, in modo da creare una separazione rigorosa tra layout e contenuto. Ciò permette all’utente di apportare modifiche al design del progetto web senza intaccare il contenuto pubblicato.
Il contenuto effettivo del sito è scritto utilizzando semplici linguaggi di markup come Markdown che possono essere creati o attraverso editor integrati realizzati ad hoc oppure con qualsiasi editor di testi esterno.
Per pubblicare il sito web basta trasferire i file generati nello spazio web desiderato. Per fortuna esistono diversi sistemi per poter pubblicare i nostri file senza dover spendere cifre ingenti. Ci sono anche soluzioni gratuite tra cui le più rinomate sono sicuramente:
Tutto molto bello, peccato però che per far funzionare questo tipo di generatori spesso è necessario dover installare risorse aggiuntive, quali NPM, NodeJS, Python e via dicendo.
E come se non bastasse, per poter effettuare delle modifiche al “motore” di sviluppo, è necessario conoscere diversi linguaggi di programmazione che spaziano da React a GO, oppure saper mettere le mani in framework come Ruby On Rails per applicazioni web scritto in Ruby.
Quindi, ancora una volta, stiamo parlando di una soluzione non proprio adatta a tutti e sicuramente men che meno ai novizi.
Comunque, tra i prodotti più conosciuti fra i generatori di siti statici ci sono:
e molti altri che è possibile trovare in questa utile raccolta periodicamente aggiornata.
La soluzione definitiva: Publii
Quando ho iniziato la mia ricerca per un sistema alternativo di generazione di siti, il mio obiettivo era quello di trovarne uno che fosse: sicuro, open source, espandibile (attraverso plugin o scrivendo codice aggiuntivo) e che permettesse di utilizzare servizi di hosting economici se non addirittura gratuiti.
Dopo tanto cercare, alla fine ho trovato la soluzione adatta: Publii, “un nuovo CMS statico con interfaccia grafica, per creare siti Web HTML sicuri, veloci ed eleganti“, come si legge sulla sua home page.
Si tratta di un software open source scaricabile e compatibile con Windows, Mac e Linux.
Fra le altre cose, permette all’occorrenza di importare in maniera semplice interi siti creati con WordPress e convertirli in statici.
Ovviamente, con un minimo di capacità è possibile personalizzare tutto: creare propri temi, nuove opzioni, oppure è possibile scaricare e installare temi già pronti dal marketplace.
Utile anche il fatto di poter organizzare e gestire multisiti con un clic: siti di cui è possibile effettuare il backup in un attimo (basta compattare e copiare i file nella posizione desiderata).
È presente anche una buona documentazione e all’occorrenza c’è anche una community molto attiva con cui è possibile scambiarsi segnalazioni di idee, consigli e richieste di aiuto.
Utilizzando Publii in locale posso stare sicuro perché so che nessuno può accedere ai miei siti online, e anche se qualcuno riuscisse ad accedere ed inoculare codice (ma dovrebbe conoscere le credenziali del mio account, cosa questa difficilissima), non potrebbe comunque fare danni, visto che si tratta di file statici.
Insomma, mi sembra un programma molto valido e utile.
Per poter inserire elementi aggiuntivi come un form per l’iscrizione alla newsletter si possono percorrere due strade: o si lavora sul codice se si è capaci, oppure si possono utilizzare servizi esterni come MailChimp.
Allo stesso modo possono essere aggiunte mappe satellitari alle nostre pagine direttamente da Google Map, oppure servizi di ricerca.
Volendo è anche possibile configurare il tutto per poter lavorare agli stessi siti su più PC diversi, utilizzando uno spazio in Cloud come Dropbox, oppure permettere a più autori di accedere e aggiungere gli articoli da remoto.
Altre utili informazioni le trovate nella sezione Tips & Tricks del sito di Publii.
Visto che tra le opzioni di download non c’è, dopo aver scaricato la versione per Windows, ho utilizzato il programma open source Uniextract2 per trasformare Publii in una versione portable (che non necessita di installazione): ora nella chiavetta USB ho tutto, sia il gestore con l’editor, che i siti interi.
Publii: video guida al Content Management System statico
Vediamo quindi come fare ad installare e utilizzare Publii: per maggiore chiarezza ho realizzato questo video che guida passo passo alla crazione del proprio sito web statico utilizzando la versione per Windows 10:
Il Content Management System Publii: trucchetto finale
Prima di trovare la soluzione che ho proposto, visto che avevo fretta di convertire alcuni siti già esistenti in statici, ho trovato uno stratagemma: utilizzando l’applicativo httrack mi sono scaricato due interi siti sul PC in locale, uno in Drupal e l’altro in WordPress, ed il programma me li ha trasformati benissimo in statici senza nessun problema (ovviamente per il corretto funzionamento, c’è da ritoccare le sezioni Contatti, Newsletter ecc. scritti in PHP).