1000 FAQ, 500 tutorial e video esplicativi. Qui ci sono delle soluzioni!
Installare Ghost su un hosting Infomaniak
Questa guida ti accompagna nell'installazione su Infomaniak di Ghost, una piattaforma ideale per i blog (scrittura regolare, formato editoriale) e i siti di pubblicazione centrati sul contenuto, come Substack o Medium.
Basato su Node.js e che utilizza Markdown per la scrittura, Ghost si distingue per la sua leggerezza, mentre WordPress, pur essendo più flessibile e universale, risulta più pesante.
Per ulteriori assistenza contattate un partner o lanciate gratuitamente una richiesta di offerta — scoprite anche il ruolo dell'host.
Prerequisiti
- Avere installato un sito vuoto di tipo Node.js su un hosting web Infomaniak.
- Creare un accesso SSH.
- Creare un database.
- Disporre di un indirizzo email valido e funzionante (in particolare le funzionalità di recupero della password).
Installazione di Ghost
Per questo:
- Accedi al server tramite SSH (hai bisogno di aiuto?).
- Posizionati nella directory del sito eseguendo il comando “cd percorso-del-sito” (ad esempio
cd sites/ghost.domain.xyz
). Inserisci il seguente comando:
npx -p ghost-cli ghost install --check-empty=false
e inserisci le informazioni richieste (nome host del database, URL del sito web, ecc.).
Modifica il file
config.production.json
per aggiornare i parametri della porta e dell'host:"server": { "port": 3000, "host": "0.0.0.0" },
Specificate anche le informazioni relative alla posta:
"mail": { "transport": "SMTP", "options": { "service": "Infomaniak", "host": "mail.infomaniak.com", "port": 465, "auth": { "user": "<<email_username>>", "pass": "<<email_password>>" } }, "from": "<<email_address>>" },
Configurazione Node.js
Per eseguire l'applicazione, vai al pannello di controllo Node.js:
- Clicca qui per accedere alla gestione del tuo prodotto su Manager Infomaniak (hai bisogno di aiuto?).
- Fai clic direttamente sul nome assegnato al prodotto interessato.
- Fai clic su Gestisci sotto Impostazioni avanzate:
- Fai clic sulla scheda Node.js per accedere alle impostazioni:
Nel campo comando di esecuzione, inserisci:
npx -p ghost-cli ghost run
- Clicca sul pulsante Salva in fondo alla pagina.
- Nella pagina principale, clicca sul pulsante Start o Restart.
- Osservate i log che mostrano la creazione del database e l'avvio dell'applicazione:
- Successivamente, andate all'URL del vostro sito per avviare.
Configurazione degli utenti / mail
Per creare il primo utente, aggiungi /ghost
all'URL del tuo sito (ad esempio https://ghost.domain.xyz/ghost
) e segui la guida.
È possibile configurare l'"indirizzo di supporto del portale dei membri": quando nuovi membri desiderano iscriversi, il portale invia la conferma del double opt-in da un indirizzo specifico. Per impostazione predefinita, si tratta dell'indirizzo “noreply” del tuo dominio. Per aggiornarlo, vai su “Impostazioni”, “Iscriviti”, “Impostazioni del portale”, “Personalizza” e “Pagina del conto”:
Risolvere un'incompatibilità tecnica tra Ghost e MariaDB
Esiste un problema di compatibilità tra Ghost e il database MariaDB. Ne risulta questo tipo di errore:
[2025-05-26 12:54:28] ERROR "GET /ghost/api/admin/posts/6834625e35802b06f1496305/?formats=mobiledoc%2Clexical&include=tags%2Cauthors%2Cauthors.roles%2Cemail%2Ctiers%2Cnewsletter%2Ccount.conversions%2Ccount.clicks%2Csentiment%2Ccount.positive_feedback%2Ccount.negative_feedback" 400 27ms
Could not understand request.
Error ID:
8f2b0d90-3a30-11f0-a25f-fd9c83e1cf02
Error Code:
ER_BAD_FIELD_ERROR
----------------------------------------
Error: select `posts`.*, (with `k` as (select `member_id` from `members_subscription_created_events` where posts.id = members_subscription_created_events.attribution_id union select `member_id` from `members_created_events` where posts.id = members_created_events.attribution_id) select count(*) from `k`) as `count__conversions`, `posts`.*, (select count(distinct `members_click_events`.`member_id`) from `members_click_events` inner join `redirects` on `members_click_events`.`redirect_id` = `redirects`.`id` where posts.id = redirects.post_id) as `count__clicks`, `posts`.*, (select COALESCE(ROUND(AVG(score) * 100), 0) from `members_feedback` where posts.id = members_feedback.post_id) as `count__sentiment`, `posts`.*, (select count(*) from `members_feedback` where posts.id = members_feedback.post_id AND members_feedback.score = 0) as `count__negative_feedback`, `posts`.*, (select sum(`score`) from `members_feedback` where posts.id = members_feedback.post_id) as `count__positive_feedback` from `posts` where (`posts`.`type` = 'post' and `posts`.`status` in ('draft', 'published', 'scheduled', 'sent')) and `posts`.`id` = '2834125e33802b06e1433305' limit 1 - Unknown column 'posts.id' in 'where clause'
at Child.<anonymous> (/srv/customer/sites/ghost.domain.xyz/versions/5.120.2/core/server/models/base/plugins/crud.js:194:31)
at Packet.asError (/srv/customer/sites//versions/5.120.2/node_modules/mysql2/lib/packets/packet.js:740:17)
at Query.execute (/srv/customer/sites//versions/5.120.2/node_modules/mysql2/lib/commands/command.js:29:26)
at Connection.handlePacket (/srv/customer/sites//versions/5.120.2/node_modules/mysql2/lib/base/connection.js:475:34)
at PacketParser.onPacket (/srv/customer/sites//versions/5.120.2/node_modules/mysql2/lib/base/connection.js:93:12)
at PacketParser.executeStart (/srv/customer/sites//versions/5.120.2/node_modules/mysql2/lib/packet_parser.js:75:16)
at Socket.<anonymous> (/srv/customer/sites//versions/5.120.2/node_modules/mysql2/lib/base/connection.js:100:25)
at Socket.emit (node:events:518:28)
at addChunk (node:internal/streams/readable:561:12)
at readableAddChunkPushByteMode (node:internal/streams/readable:512:3)
at Readable.push (node:internal/streams/readable:392:5)
at TCP.onStreamRead (node:internal/stream_base_commons:189:23)
Alcune query SQL generate da Ghost, che utilizzano Common Table Expressions (CTE) annidate in sottoquery scalari, causano errori HTTP 400
quando vengono eseguite su MariaDB. Queste query sono valide in MySQL 8, che supporta i CTE nelle sottoquery scalari, ma non in MariaDB fino alla versione 10.6.
Esiste una patch per adattare il comportamento di Ghost e evitare questi errori (consultate la guida ufficiale).
Per utilizzare questa patch, inserisci questo comando:
cd current
curl -L https://gist.githubusercontent.com/reneluria/8cbbfbc001e542c77d6d5887fbafe5d3/raw/65e0ce31753b4687d0eb67fc030734a35d3ffbad/ghost-post.patch | patch -p0