Mit WordPress von Hosteurope zu Uberspace

Dieser Tage scheiterte ich daran, dieses wunderbare Blog hier verschlüsselt auszuliefern. Ich scheiterte zum einen an meinem Geiz, da mir die Angebote meines Hosters zu teuer waren – und dann an irgendwelchen Rechten, die verhinderten das ich die Software der freien Zertifizierungsstelle Let’s Encrypt dort installieren konnte. Grund genug, sich mal wieder um zu schauen. Ich landete wieder beim Uberspace, wo ich vor einiger Zeit schon mal probeweise einen Account hatte und es mir eigentlich gut gefallen hatte. Ich war nur seinerzeit zu faul, Dinge umzuziehen. Es ist dort alles ein bisschen nerdy, die gesamte Administration erfolgt auf der Konsole, man hat sehr viel Freiraum. Genau mein Ding.

Nachdem ich dann testweise innerhalb von nicht einmal einer Stunde eine meiner nicht in Gebrauch befindlichen Domains umgezogen hatte und diese dann auch direkt ein verschlüsseltes „Hallo Welt!“ auslieferte, war ich am Wochenende mutig genug um es mal diesem Blog zu versuchen. Die Dokumentation bei Uberspace ist ziemlich gut, aber die notwendigen Schritte seien hier mal hinterlegt. Die ein oder andere Domain muss ich noch umziehen.

Domain bei Uberspace anlegen

# Webserver für Domain einrichten
uberspace-add-domain -d "domainname.tld" -w

# Webserver mit Subdomain-Wildcard einrichten
uberspace-add-domain -d "*.domainname.tld" -w

# Einen Ordner für die Seite anlegen
mkdir /var/www/virtual/username/domainname.tld

# Einen Symlink für die "www"-Subdomain aufstellen
ln -s /var/www/virtual/username/domainname.tld /var/www/virtual/username/www.domainname.tld

Den Nameserver bei Hosteurope umstellen

Das war es dann für’s Erste auch schon bei Uberspace. Nun gilt es, die Domain die ich bei Hosteurope liegen habe, dort umzubiegen. Dafür geht es in die Nameserver-Verwaltung im Hosteurope-KIS unter Produktverwaltung – Domainservices – Domain-Administration – Nameserver-/DNS-Verwaltung. Dort trage ich die IPv4- und IPv6-Adressen ein, die auf der Konsole nach dem uberspace-add-domain ausgegeben worden sind. Nun muss man ein bisschen Geduld haben, bis die DNS-Server die Änderung alle verstanden haben. Dann geht es bei Uberspace nochmal weiter.

Let’s Encrypt bei Uberspace einrichten

# Konfiguration für Let's Encrypt erstellen
uberspace-letsencrypt

# Zertifikate erstellen
letsencrypt certonly

# Zertifikate importieren
uberspace-add-certificate -k ~/.config/letsencrypt/live/www.domainname.tld/privkey.pem -c ~/.config/letsencrypt/live/www.domainname.tld/cert.pem

Wichtig: In diesem Fall ist domainname .tld die erste der Domains in der Liste, die beim uberspace-letsencrypt ausgegeben wurde. Mit dem Befehl werden die Zertifikate für alle Domains in der Liste importiert. Was mir noch fehlt, ist eine automatische Erneuerung der Zertifikate.

https erzwingen

Schließlich ist es dann mehr als sinnvoll, https auf der entsprechenden Domain zu erzwingen. Dazu packen wir noch ein wenig Code in die .htaccess-Datei.

<ifmodule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTPS} !=on
    RewriteCond %{ENV:HTTPS} !=on
    RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
</ifmodule>

Nachtrag: Mit obigem Code hatte ich leider ein paar Probleme. Besucher, die den Host über IPv6 auflösten, bekamen eine „Too many redirects“-Meldung. Dieser Code hier macht das Gleiche und funktioniert für meine Belange prima.

<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.dertagundich.de/$1 [R=301,L]
</ifmodule>

WordPress von Hosteurope zum Uberspace umziehen

Das Blog selbst dann umzuziehen ist nun nicht mehr so sonderliche schwierig. Zuerst installiere ich mit Hilfe von WP-CLI ein frisches WordPress auf dem Uberspace. Eine kleine Hilftestellung zur Installation auf dem Uberspace gibt es beim WP-Buddy.

wp core download --locale=de_DE

Dann gilt es einen Datenbank-Dump bei Hosteurope zu ziehen, den man dann wiederum flott über die leere WordPress-Installation bei Uberspace spielt.
Am Ende sind dann noch die ganzen (Bild-) Dateien zu übertragen. Nichts leichter als das, wenn man bei beiden Hostern Konsolenzugriff hat. Schnell den einen rsync-Befehl eingegeben und ein bisschen gewartet. 1 Gigabyte Daten sind in wenigen Minuten kopiert.

rsync -avuz wp-content/uploads/ username@host.uberspace.de:/home/username/domainname.tld/wp-content/uploads/

Schließlich setze ich die Dateirechte noch passend, damit statt der „Forbidden!“-Meldung auch wieder meine Bilder angezeigt werden.

# Dateien auf 664 setzen
find . -type f -exec chmod 664 {} +

# Verzeichnisse auf 775
find . -type d -exec chmod 775 {} +

# Und die WordPress-Konfiguration auf 660
chmod 660 wp-config.php

Und damit bin ich dann auch schon fertig. https:// steht vor dem Domainnamen und ein kleines Schloß zeigt an, dass die Inhalte hier nun verschlüsselt ausgeliefert werden. Nun gilt es, meinen restlichen Kram auch noch umzustellen. Zuerst sollte ich mein Piwik-Tracking vielleicht in Angriff nehmen. Wegen dem wird nun nämlich in der Konsole dieser Seite gemeckert.