Die Installation von Ghost mit dem Befehl

ghost install

funktioniert nur auf wenigen supporteten Systemen.

Als Alternative steht der Befehl

ghost install local

zur Verfügung.

Leider ist offiziell nicht dokumentiert, wie die URLs in Ghost generiert werden.

Jedenfalls muss man die url in der Konfiguration auf Protokoll http aber mit der offiziellen, von außen erreichbaren, URL setzen. Also bei mir http://blog.n4v.eu.

Das Blog ist jetzt aber über ein gesichertes https erreichbar.

Dafür sorgt der vorgelagerte Reverse Proxy. Dieser muss aber Ghost ein paar festgelegte Header mitgeben:

RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 127.0.0.1
RemoteIPProxiesHeader X-Forwarded-By
RequestHeader set X-Forwarded-Proto "https"

Die letzte Zeile sorgt nun wirklich in Ghost dafür, dass die Links auf das korrekte Protokoll verweisen.  

ProxyPreserveHost on

Sendet den Host-Header weiter wie als URL in Ghost konfiguriert. Allerdings wird das nicht weiter beachtet, denke ich.

Ein https ist in der Ghost Config url nicht so ohne weiteres möglich. Das aktiviert den SSL-Mode des Servers und es ist nicht dokumentiert, wie man die SSL-Zertifikate angeben kann. So lässt sich der Server leider nicht kontaktieren.

Korrektur zum obigen Absatz: Das stimmt doch nicht. Anscheinend macht das nur während eines Setups Probleme. Nachträglich muss man es auf https stellen und node restarten, wenn der ReverseProxy http auf https umleitet oder gar nicht auf http hört.

Der Trick mit X-Forwarded-Proto macht aber alles gut. Klar wäre es schön, wenn man das einfach ohne real Header SchnickSchnack in Ghost konfigurieren könnte.

Hierzu ist auch eine Korrektur nötig: X-Forwarded-Proto sorgt nur dafür, dass im, von Ghost verwendeten, express Server das trust proxy aktiviert wird. Das wiederum sorgt dafür, dass express die erste IP Adresse aus dem X-Forwarded-For Header als Remote-IP ansieht. Was bei X-Forwarded-Proto angegeben wird, ist momentan vollkommen egal, weil Ghost trust proxy nur auf true setzt und den Header Wert nicht verarbeitet.