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:
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:
4.April: Nach einer Woche läuft die Haupt-Site schon wieder:
Am 7. April sahen die Posts dann auch schon deutlich besser aus:
Am 8. April dann die offizielle Wieder-Eröffnung:
Artikel und Selbststudiums-Kurse
Einen Tag später, am 9. April, der erste sinnvolle, neue Artikel:
Dann, am 14. April, waren auch die Online-Kurse zum Selbststudium online, die bis dahin auf meiner alten Site geschlummert hatten:
Am 16. April dann die Ankündigung des Devlog (also meines Selbstversuch-Tagebuchs, das ab jetzt wöchentlich kommt):
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.