
Ghost è una popolare piattaforma di creazione di contenuti scritta in JavaScript con Node.js. Il software open source viene fornito con tutto ciò di cui hai bisogno per creare, creare temi, pubblicare e mantenere il tuo blog.
Ghost è un software open source supportato dal servizio ospitato ufficiale Ghost(Pro). Puoi installarlo sul tuo server aggiungendo Node.js e usando Ghost CLI per configurare il tuo stack. Ghost è anche disponibile come immagine Docker che raggruppa tutte le dipendenze per te.
In questa guida utilizzeremo Docker per rendere operativo rapidamente un nuovo blog Ghost. Installa Docker e Docker Compose sul tuo host prima di procedere oltre. Sebbene tu possa distribuire Ghost utilizzando solo Docker, Compose semplifica la fornitura e la gestione dei valori di configurazione necessari al tuo sito per iniziare.
Avvio di un contenitore fantasma
Puoi avviare un sito Ghost di base con un singolo comando Docker:
docker run -d -p 2368:2368 --name simple-ghost ghost:4

Questo farà apparire Ghost sulla sua porta predefinita di 2368. Visita http://localhost:2368 per visualizzare il tuo sito o http://localhost:2368/ghost per accedere al pannello di amministrazione di Ghost. Dovrai fornire alcune impostazioni di prima esecuzione per finalizzare l’installazione di Ghost e creare un account utente iniziale.

Questo approccio è ottimo per una rapida sperimentazione se stai solo provando Ghost. Tuttavia, non abbiamo ancora impostato l’archiviazione persistente, quindi i tuoi dati andranno persi quando il contenitore si fermerà.

Ecco un esempio più completo che utilizza Docker Compose per configurare Ghost con un volume Docker. Monta un volume su /var/lib/ghost/content directory per memorizzare i dati di Ghost al di fuori del contenitore.
version: "3" services: ghost: image: ghost:4 ports: - 8080:2368 environment: url: https://ghost.example.com volumes: - ghost:/var/lib/ghost/content restart: unless-stopped volumes: ghost:
Questo file Compose mostra alcune altre modifiche alla configurazione del contenitore. La porta 2368 esposta dal contenitore è mappata alla porta 8080 sul tuo host, consentendoti di utilizzare localhost:8080 per accedere a Ghost. Il criterio di riavvio viene modificato in unless-stopped per assicurarti che il tuo sito si avvii automaticamente dopo il riavvio dell’host.
Ora usa Componi per visualizzare il tuo sito:
docker-compose up -d

Configurazione di Ghost
Ghost supporta diversi parametri di configurazione per personalizzarne il funzionamento e configurare il tuo sito. Quando utilizzi Docker, puoi fornire questi valori come variabili di ambiente.
I file di configurazione di Ghost utilizzano oggetti JSON nidificati per memorizzare i valori. Puoi convertire le chiavi JSON nelle loro controparti variabili di ambiente sostituendo ogni livello dell’albero con __ (doppio trattino basso) caratteri:
# in a JSON config file
{
"mail": {
"transport": "SMTP"
}
}
# as an environment variable
mail__transport=SMTP
Utilizzare il environment campo nel tuo docker-compose.yml per fornire questi parametri al tuo container Ghost:
version: "3" services: ghost: environment: mail__transport: SMTP
Fare riferimento alla documentazione di Ghost per un elenco completo delle opzioni supportate. È possibile configurare un sistema di posta, utilizzare un URL separato per accedere al pannello di amministrazione, ignorare i percorsi delle directory e attivare le opzioni di privacy tramite le variabili di ambiente disponibili.
Il url l’opzione è particolarmente importante in quanto è richiesta per i siti di produzione dal vivo. Questo definisce l’URL che i visitatori esterni utilizzeranno per accedere al tuo sito. Impostalo sul nome di dominio del tuo sito nel tuo docker-compose.yml:
environment: url: https://ghost.example.com
Utilizzo di un database esterno
Per impostazione predefinita, Ghost utilizza un database SQLite archiviato come file nella directory dei contenuti del tuo sito. Verrà mantenuto come parte del volume Docker creato sopra. È invece possibile utilizzare un database MySQL esterno fornendo i dettagli di connessione tramite database-variabili di ambiente prefissate:
services: ghost: # ... environment: database__client: mysql database__connection__host: ghost_mysql database__connection__user: root database__connection__password: databasePw database__connection__database: ghost ghost_mysql: image: mysql:5.7 expose: - 3306 environment: MYSQL_DATABASE: ghost MYSQL_ROOT_PASSWORD: databasePw volumes: - mysql:/var/lib/mysql restart: unless-stopped volumes: mysql:
Questo file Compose include un altro servizio che esegue MySQL in un contenitore aggiuntivo. Le variabili d’ambiente sono impostate sul servizio Ghost per fornire i dettagli della connessione MySQL. Un separato mysql il volume viene creato per rendere persistenti i file di archiviazione del database.
Compose collega automaticamente i servizi a una rete Docker. Ghost può raggiungere il ghost_mysql container utilizzando il nome del servizio come nome host. Se si desidera utilizzare un database MySQL esistente non Dockerizzato, è possibile rimuovere il file ghost_mysql definizione del servizio e fornire invece l’indirizzo IP, il nome dello schema del database e le credenziali utente del server MySQL.
Inoltro del traffico al tuo container
Ora il tuo sito Ghost dovrebbe essere operativo ma è ancora esposto sulla porta 8080. Se non eseguirai nient’altro sul tuo host, potresti invece associare la porta 80 o 443 per renderla direttamente accessibile tramite il nome di dominio del tuo server. In altre situazioni, usa un proxy inverso come NGINX per inoltrare il traffico dal web al tuo container Ghost.
Aggiungi NGINX al tuo host:
sudo apt update sudo apt install nginx # Allow HTTP/HTTPS traffic through the firewall sudo ufw allow 80 sudo ufw allow 443
Definisci un host NGINX per il tuo sito in /etc/nginx/sites-available/ghost.example.com:
server {
server_name ghost.example.com;
index index.html;
access_log /var/log/nginx/ghost_access.log
error_log /var/log/nginx/ghost_error.log error;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Original-IP $remote_addr;
}
}
Questo file configura NGINX a cui inoltrare il traffico ghost.example.com fino alla porta 8080 in poi localhost, che in precedenza era legato al tuo container Ghost. Abilita il nuovo file di configurazione collegandolo a NGINX sites-enabled directory:
sudo ln -s /etc/nginx/sites-available/ghost.example.com /etc/nginx/sites-enabled/ghost.example.com
Riavvia NGINX per applicare le modifiche:
sudo service nginx restart
Ora puoi configurare SSL con il servizio gratuito Let’s Encrypt. Aggiungi Let’s Encrypt’s Certbot per automatizzare l’emissione e il rinnovo dei certificati:
sudo apt install certbot
Usa Certbot per ottenere certificati per il tuo sito NGINX:
sudo certbot --nginx
Certbot leggerà i tuoi siti NGINX e genererà certificati per i loro server_name campi di configurazione. Riconfigura automaticamente NGINX per servire il certificato con il tuo sito. Ora dovresti essere in grado di accedere al tuo blog Ghost visitando il tuo nome di dominio su HTTPS.
Anche se in questo articolo ci siamo concentrati su NGINX, ci sono altre opzioni per il proxy del traffico web attraverso il tuo container Ghost. Traefik è uno dei principali contendenti che ha un supporto di prima classe per Docker. La distribuzione di un’istanza Traefik ti consente di configurare il routing e l’SSL automatico tramite le etichette Docker che avresti impostato sul tuo contenitore Ghost.
Gestione degli aggiornamenti Ghost
Puoi aggiornare Ghost sostituendo il contenitore Docker del tuo sito con uno nuovo che esegue una versione aggiornata dell’immagine Ghost. Poiché il contenuto del tuo sito è archiviato in modo sicuro in un volume Docker separato, verrà conservato quando il volume verrà ricollegato al nuovo contenitore.
Se stai taggando una versione principale dell’immagine nel tuo docker-compose.yml, ad esempio ghost:4, è possibile eseguire l’aggiornamento all’ultima versione secondaria eseguendo docker-compose up con il --pull bandiera:
docker-compose up -d --pull
Questo indica a Compose di verificare la presenza di modifiche nel tag immagine e di estrarre una versione aggiornata quando disponibile. Sostituirà i tuoi contenitori con nuove istanze utilizzando l’ultima versione dell’immagine che corrisponde al tag.
Quando vuoi cambiare il tag che stai utilizzando, aggiorna il file image riferimento nel tuo docker-compose.yml file. Ripetere docker-compose up -d per estrarre l’immagine e avviare nuovi contenitori. Ad esempio, se Ghost v5 verrà rilasciato in futuro, potresti cambiare il tuo docker-compose.yml a image: ghost:5 per passare alla nuova versione principale.
Docker semplifica l’ottenimento degli aggiornamenti Ghost estraendo l’ultima immagine e sostituendo i contenitori. Tuttavia, dovresti comunque prestare attenzione alle modifiche che stai applicando. Consulta il registro delle modifiche di Ghost prima di eseguire un aggiornamento importante nel caso in cui sia necessario eseguire ulteriori passaggi per completare la migrazione.
Usando ghost-cli
ghost-cli è disponibile all’interno dell’immagine Ghost Docker. Questa utilità viene utilizzata per configurare e mantenere Ghost quando è installato in ambienti tradizionali non containerizzati.
Puoi accedere ghost-cli tramite Docker utilizzando il ghost comando con docker exec. Ecco un esempio che utilizza il version sottocomando per rivelare la versione Ghost che stai usando:
docker exec -it my-ghost-container ghost version

Anche se molti ghost-cli i componenti funzioneranno, alcuni non sono supportati negli ambienti Dockerizzati. Comandi come install, setup, update, e uninstall sono rotti, privi di significato o contrari alle migliori pratiche se utilizzati con l’immagine Docker di Ghost. Ghost e tutte le sue dipendenze sono integrate nell’immagine e non devono essere “installate”; gli aggiornamenti devono essere applicati avviando un nuovo contenitore, come mostrato sopra.
Riepilogo
Ghost è una moderna piattaforma di blogging che offre una dashboard pulita, ricche capacità di creazione di contenuti e temi avanzati e supporto per la personalizzazione. L’uso di Docker per ospitare Ghost semplifica la procedura di configurazione, riduce il numero di pacchetti del sistema operativo necessari e aiuta a rendere il tuo sito più portatile in tutti gli ambienti.
Una volta che il tuo blog Dockerized è operativo, utilizza la documentazione di sviluppo Ghost standard per gestire il tuo sito e il suo contenuto. Puoi configurare abbonamenti, newsletter, temi personalizzati e integrazioni API utilizzando le funzionalità integrate della piattaforma.
