Wie lange ist das schon her, dass ich beschloss, meine Website von einem Uralt-Wordpress auf ein modernes Ghost-System zu migrieren? Lass uns doch mal in Twitter nachschauen, da müsste es stehen:
Gestern beschlossen, dass ich eine neue Website brauche:
— Matthias Bohlen (@mbohlende) March 28, 2020
a) Der Content ist zu alt.
b) Wordpress geht mir auf den Geist.
Also auf geht’s! Umstellen auf Ghost-Plattform, dann weiterbloggen!
29. März, aha. Dann sind es ja schon drei Wochen, die seither vergangen sind! Warum hat denn das alles so lange gedauert?
Der Start
Die ersten Tage waren die schwierigsten:
Puh! Seit ich meine Website auf ein neues CMS ziehe, bekomme ich Respekt vor CMS-Migrationsprojekten!
— Matthias Bohlen (@mbohlende) March 31, 2020
Es ist wie immer mehr Aufwand als ich gedacht habe.
4.April: Nach einer Woche läuft die Haupt-Site schon wieder:
Nanu, nach einer Woche läuft meine Website ja schon wieder! Neuerdings pfeilschnell, hübsch anzusehen und echt leicht zu administrieren. Tja, jetzt gibt es keine Ausreden mehr, jetzt muss wieder gebloggt werden was das Zeug hält. 😀 https://t.co/BdnMDMKvhX
— Matthias Bohlen (@mbohlende) April 4, 2020
Am 7. April sahen die Posts dann auch schon deutlich besser aus:
Mal testen, ob Twitter die Metadaten dieses Posts korrekt interpretiert: https://t.co/xk0LlooUFC
— Matthias Bohlen (@mbohlende) April 7, 2020
Am 8. April dann die offizielle Wieder-Eröffnung:
Mein Blog ist jetzt wieder wach. Ab jetzt schreib ich wieder!https://t.co/FkwsBIWKFV
— Matthias Bohlen (@mbohlende) April 8, 2020
Artikel und Selbststudiums-Kurse
Einen Tag später, am 9. April, der erste sinnvolle, neue Artikel:
Inzwischen bin ich mit meiner Studio-Ausrüstung für die Remote Trainings zufrieden. https://t.co/eeJnLhXhAi
— Matthias Bohlen (@mbohlende) April 9, 2020
Dann, am 14. April, waren auch die Online-Kurse zum Selbststudium online, die bis dahin auf meiner alten Site geschlummert hatten:
So, Website tickt jetzt, sogar mit Online-Kursen zum Selbststudium. Morgen noch die bisherigen User migrieren, dann ist es Zeit für den nächsten Blogpost und Newsletter, wie versprochen.https://t.co/Eec6WYvM5d
— Matthias Bohlen (@mbohlende) April 14, 2020
Am 16. April dann die Ankündigung des Devlog (also meines Selbstversuch-Tagebuchs, das ab jetzt wöchentlich kommt):
Devlog #0: Die nullte Folge meines wöchentlichen Selbstversuchs: nach dem Motto: “Berater, iss Dein eigenes Hundefutter!” https://t.co/sKK94SkyoP
— Matthias Bohlen (@mbohlende) April 16, 2020
Neustart des Newsletters
Auch der Newsletter des Blogs wird jetzt langsam wieder aktiv. So ein Ärger, am Anfang hatte ich noch ein Konfigurationsfehler mit dem MX-Record im DNS meiner Domäne! Dadurch lehnten 40% der Mailempfänger-Server meinen ersten Newsletter ab (Begründung: seltsamer, nicht verifizierbarer Absender). Doch wie man sieht, war die Sache beim zweiten Mal dann behoben:

Die Newsletter-Funktion von Ghost ist schön integriert mit dem Blog. Es gibt drei Zugriffs-Ebenen:
- öffentliche Artikel
- Artikel nur für registrierte Mitglieder
- bezahlte Artikel
Die Abonnenten, die sich mit ihrer E-Mail-Adresse registriert haben, erhalten die kostenlosen Artikel und die "nur für Mitglieder"-Artikel. Die zahlenden Abonnenten bekommen auch die bezahlten, also insgesamt alle Artikel. Bei der Veröffentlichung eines Blog-Artikels kann ich mit einem Klick angeben, ob der Artikel auch automatisch über Newsletter an die Abonnenten rausgehen soll. Nett!
Wie viel Arbeit war das?
Ich habe mir pro Aufgabe ein Ticket gemacht. Am Ende waren es richtig viele:
- alte Wordpress-Site auf AWS klonen, um in Wordpress gefahrlos die Änderungen machen zu können, die für die Migration notwendig sind
- Wordpress-Kategorien in Tags umwandeln, weil Ghost nur Tags kann
- Content exportieren
- HTML-Format in MobiDoc wandeln, weil die Artikel dann in Ghost besser editierbar sind
- mit einem Skript die Links aus den alten Artikeln in ein einheitliches Format bringen (weil Wordpress eine Multi-Site-Installation war, sahen die Links sehr heterogen aus)
- auf AWS einen neuen Server für Ghost anlegen und starten
- Artikel und Bilddateien nach Ghost importieren
- Schönes Theme kaufen, installieren und das CSS anpassen, bis es mir gefällt
- meine Trainingsseiten aktualisieren
- E-Mail-Server-Konfiguration einstellen und testen
- Fail: Die Erkenntnis verkraften, dass Ghost keine Kommentare zu den Artikeln erfassen kann und diese Aufgabe durch ein anderes System erledigt werden muss
- Discourse als Kommentar-System installieren, da Disqus (von Ghost vorgeschlagenes System) eine Datenkrake darstellt und ich das aus Datenschutz-Gründen ablehne (ganz abgesehen davon, dass es neuerdings sogar Werbung einblendet!)
- statische Seiten ebenfalls aus Wordpress importieren
- Navigationsstruktur der neuen Site festlegen und Menü erzeugen
- Suchfunktion aktivieren und testen
- Fail: Discourse wieder de-installieren, weil es zu viel Speicher verbraucht
- Stattdessen Commento installieren, das wesentlich leichtgewichtiger ist
- Alles auf mbohlen.de deployen
- SSL konfigurieren mit Let's Encrypt
- Cross-origin-Richtlinie bei Commento sauber konfigurieren, sonst könnte jeder Website-Betreiber mein Commento einbinden
- Google Analytics hinzufügen
- "Excerpts" (also Artikel-Auszüge) aus dem alten Wordpress in Ghost migrieren, weil sie in Google-Sucherergebnissen erscheinen werden
- Abonnentenliste (E-Mail-Adressen) migrieren
- Membership-Funktion aktivieren
- Stripe als Zahlungsdienstleister einbinden, wegen der bezahlten Artikel und Selbststudiums-Online-Kurse
- Extra-Seite schreiben, die erklärt, was der Vorteil an bezahlten Artikeln ist und warum die Leser sie abonnieren sollten
- Sign-up-Formular korrekt gestalten und Link auf die "warum abonnieren"-Seite einbauen
- DKIM korrekt konfigurieren
- ersten Newsletter raussenden
- Fail: MX-Record vergessen, weil ich dachte, dass man den nur für eingehende Mails braucht, nicht für ausgehende. Lernen, dass die Empfänger jedoch auf meinen MX-Record schauen, um festzustellen, dass ich kein Spammer bin. Also noch einen gescheiten MX-Record schreiben.
- Tag-Archiv-Seiten für Trainings, für Vorträge und für Gedrucktes konfigurieren
- Fail: Die Zeitschriftenartikel erscheinen seltsamerweise nicht unter Gedrucktes, daran muss ich noch arbeiten.
- Ghost kann meine Kurse für das Online-Selbststudium nicht anzeigen, weil es keinen Zustand pro User verwaltet (z.B. den Lernfortschritt). Daher eben doch wieder ein ganz kleines Wordpress mit WP-Courseware als Plug-in installieren und hinter denselben Nginx-Reverse-Proxy hängen wie vorher Ghost und Commento.
- Online-Kurse aus dem alten WP-Courseware in das neue migrieren
- Deutsche Texte für WP-Courseware kaufen und installieren
- Fail: Seltsame Übersetzungen (wissen Sie vielleicht, was Tropfwasser-Versorgung für Online-Kurse bedeuten soll?), also diese beim Übersetzer fixen lassen und noch einmal installieren (Übersetzer reagierte sehr schnell)
- Schönes Theme, identisch zum Ghost-System, für das kleine Wordpress kaufen und installieren, so dass es identisch aussieht. Jetzt sehen auch die Online-Kurse gescheit aus.
- Neues WP-Courseware an Stripe anschließen, damit die Online-Kurse bezahlt werden können
- Existierende Online-Kurs-Kunden benachrichtigen, dass der Server umgezogen ist und einen neuen URL hat
Das Ergebnis
Freude: Nur zwei, drei Tage nach dem Live-Gehen verkaufen sich die ersten Abos und Kurse, und der gewohnte Traffic auf dem Blog ist auch wieder da. Auch das Blog-Artikel schreiben macht mit dem Ghost-Editor jetzt so richtig Spaß. Die Performance des Servers ist ebenfalls wie gewünscht, er haut die Seiten nur so heraus!
Also: Ab jetzt geht es um den Content, nicht mehr um die Technik.
Titelfoto
Vielen Dank an den Fotografen Raphael Bick.