1000 FAQ, 500 tutorial e video esplicativi. Qui ci sono delle soluzioni!
Installare Ghost su un hosting Infomaniak
Questa guida vi 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, rimane piĂą pesante.
Prerequisiti
- Avere installato un sito vuoto di tipo Node.js su un hosting Web Infomaniak.
- Creare un accesso SSH.
- Creare un database.
- Possedere un indirizzo email valido e funzionante (in particolare le funzionalitĂ di password dimenticata).
- Arrestare la vostra applicazione Node.JS prima di eseguire i passaggi successivi!
Installazione di Ghost
Per fare questo:
- Connettersi al server in SSH (bisogno di aiuto?).
Clonare ed eseguire lo script di installazione (eseguire questi comandi uno alla volta):
git clone https://github.com/Infomaniak/hosting-tools.git cd hosting-tools/h3-ghost bash ./install.sh
Lo script ora:
- Vi farà alcune domande (come l'URL del vostro sito, le informazioni del database, ecc.)…
- Scaricare e configurare Ghost automaticamente…
- Impiegare alcuni minuti — siate pazienti!
Rispondete alle domande con attenzione utilizzando i dettagli del database che avete annotato prima. Non chiudere il terminale finché non ha finito!
Configurare il vostro hosting (via il Manager Infomaniak)
Una volta che lo script è terminato, andate nel vostro Pannello di controllo Infomaniak:
- Clicca qui per accedere alla gestione del vostro prodotto sul Manager Infomaniak (bisogno di aiuto?).
- Fai clic direttamente sul nome attribuito 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:
/srv/customer/node_modules/ghost-cli/bin/ghost run- Verifica che il numero di porta sia
3000. - Casella di comando build : disattivala.
- Fai clic sul pulsante Salva in fondo alla pagina:

- Nella pagina principale, fai clic sul pulsante Start (o Restart se giĂ in esecuzione).
- Osserva i log che mostrano la creazione del database e l'avvio dell'applicazione:

Fatto! Accedi al tuo blog Ghost
Vai quindi all'URL del tuo sito per iniziare:
- Apri il tuo browser e vai a
https://votresite.com/ghost(sostituiscivotresite.comcon il tuo dominio attuale). - La prima volta:
- Crea un account amministratore (il tuo identificativo per il blog)...
- Successivamente, potrai iniziare a scrivere articoli!
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 procedura guidata.
Puoi anche configurare l'indirizzo di supporto del portale dei membri: quando nuovi membri desiderano iscriversi, il portale invia la conferma del doppio 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 dell'account”:
Risolvere un'incompatibilitĂ tecnica tra Ghost e MariaDB
Esiste un problema di compatibilitĂ tra Ghost e il database MariaDB. Ne consegue questo tipo di errore:
[2025-01-01 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 espressioni di tabella comuni (CTE) annidate in sottoquery scalari, provocano errori HTTP 400 quando vengono eseguite su MariaDB. Queste query sono valide in MySQL 8, che supporta le CTE nelle sottoquery scalari, ma non in MariaDB fino alla versione 10.6.
Una correzione esiste per adattare il comportamento di Ghost e evitare questi errori (prendere visione della 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 -p0Per ulteriori assistenze contatta un partner o lancia gratuitamente una richiesta di offerta — scopri anche il ruolo dell'hosting provider.