1000 FAQ, 500 Anleitungen und Lernvideos. Hier gibt es nur Lösungen!
Ghost auf einer Infomaniak-Hosting-Installation
Dieser Leitfaden begleitet Sie bei der Installation von Ghost auf Infomaniak, einer idealen Plattform für Blogs (regelmäßiges Schreiben, redaktionelles Format) und Content-fokussierte Veröffentlichungswebsites wie Substack oder Medium.
Basierend auf Node.js und unter Verwendung von Markdown für das Schreiben, zeichnet sich Ghost durch seine Leichtigkeit aus, während WordPress, obwohl flexibler und universeller, schwerfälliger ist.
Voraussetzungen
- Installieren Sie eine leere Node.js-Website auf einem Infomaniak-Webhosting.
- Erstellen Sie einen SSH-Zugang.
- Erstellen Sie eine Datenbank.
- Besitzen Sie eine gültige und funktionierende E-Mail-Adresse (insbesondere die Funktionen für vergessenes Passwort).
- Stoppen Sie Ihre Node.JS-Anwendung, bevor Sie die folgenden Schritte ausführen!
Installation von Ghost
Dafür:
- Melden Sie sich über SSH auf dem Server an (Hilfe benötigt?).
Klonen und Ausführen des Installationsskripts (führen Sie diese Befehle nacheinander aus):
git clone https://github.com/Infomaniak/hosting-tools.git cd hosting-tools/h3-ghost bash ./install.sh
Das Skript wird nun:
- Einige Fragen stellen (wie die URL Ihrer Website, die Datenbankinformationen usw.)…
- Ghost automatisch herunterladen und konfigurieren…
- Einige Minuten in Anspruch nehmen — seien Sie geduldig!
Beantworten Sie die Fragen sorgfältig unter Verwendung der Datenbankdetails, die Sie zuvor notiert haben. Schließen Sie das Terminal nicht, bevor es fertig ist!
Konfigurieren Sie Ihr Hosting (über den Infomaniak-Manager)
Sobald das Skript abgeschlossen ist, gehen Sie zu Ihrem Infomaniak-Kontrollpanel:
- Hier klicken, um auf die Verwaltung Ihres Produkts im Infomaniak-Manager zuzugreifen (Hilfe benötigt?).
- Klicken Sie direkt auf den Namen des betreffenden Produkts.
- Klicken Sie auf Verwalten unter Erweiterte Einstellungen:

- Klicken Sie auf die Registerkarte Node.js, um auf die Einstellungen zuzugreifen.
Geben Sie im Feld Ausführungsbefehl ein:
/srv/customer/node_modules/ghost-cli/bin/ghost run- Überprüfen Sie, ob die Portnummer
3000ist. - Befehlsfall build : deaktivieren Sie ihn.
- Klicken Sie auf die Schaltfläche Speichern unten auf der Seite:

- Auf der Hauptseite klicken Sie auf die Schaltfläche Start (oder Neustart, wenn bereits ausgeführt).
- Beobachten Sie die Protokolle, die die Erstellung der Datenbank und den Start der Anwendung anzeigen:

Fertig! Greifen Sie auf Ihren Ghost-Blog zu
Gehen Sie dann zur URL Ihrer Website, um zu starten:
- Öffnen Sie Ihren Browser und gehen Sie zu
https://votresite.com/ghost(ersetzen Sievotresite.comdurch Ihre aktuelle Domain). - Das erste Mal:
- Sie erstellen ein Administratorkonto (Ihre Anmeldedaten für den Blog)...
- Danach können Sie mit dem Schreiben von Artikeln beginnen!
Benutzerkonfiguration / E-Mail
Um den ersten Benutzer zu erstellen, fügen Sie /ghost zur URL Ihrer Website hinzu (z. B. https://ghost.domain.xyz/ghost) und folgen Sie dem Assistenten.
Sie können auch die "Support-Adresse des Mitgliederportals" konfigurieren: Wenn neue Mitglieder sich anmelden möchten, sendet das Portal die Bestätigung der doppelten Opt-in von einer bestimmten Adresse. Standardmäßig handelt es sich dabei um die "noreply"-Adresse Ihrer Domain. Um sie zu aktualisieren, navigieren Sie zu "Einstellungen", "Mitgliedschaft", "Portaleinstellungen", "Anpassen" und "Kontoseite":
Beheben Sie eine technische Unverträglichkeit zwischen Ghost und MariaDB
Es gibt ein Kompatibilitätsproblem zwischen Ghost und der MariaDB-Datenbank. Dies führt zu folgender Art von Fehler:
[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)Einige von Ghost generierte SQL-Abfragen, die gemeinsame Tabellenausdrücke (CTE) verwenden, die in skalare Unterabfragen eingebettet sind, verursachen HTTP 400-Fehler, wenn sie auf MariaDB ausgeführt werden. Diese Abfragen sind in MySQL 8 gültig, das CTE in skalaren Unterabfragen unterstützt, aber nicht in MariaDB bis zur Version 10.6.
Ein Patch ist verfügbar, um das Verhalten von Ghost anzupassen und diese Fehler zu vermeiden (lesen Sie den offiziellen Leitfaden).
Um diesen Patch zu verwenden, geben Sie diesen Befehl ein:
cd current
curl -L https://gist.githubusercontent.com/reneluria/8cbbfbc001e542c77d6d5887fbafe5d3/raw/65e0ce31753b4687d0eb67fc030734a35d3ffbad/ghost-post.patch | patch -p0Für weitere Hilfe kontaktieren Sie einen Partner oder starten Sie eine kostenlose Ausschreibung — erfahren Sie auch mehr über die Rolle des Hosting-Anbieters.