WordPress auf Synology DS216+II

WordPress auf Synology hosten? Sie möchten auf Ihrer NAS (z.B. Synology DS216+II) WordPress hosten und fragen sich, was zu beachten ist? Wie sieht es mit der Performance und der Sicherheit aus?

Ich kann schon mal verraten: Es funktioniert wirklich – Man kann auch auf einer NAS eine professionelle, schnelle Website realisieren.

Nachfolgend beschreibe ich, wie ich meine Website für die Ahnenforschung mit WordPress realisiert habe.

  • Anforderung an die eigene Website
  • Beschreibung des Testaufbaus und der verwendeten Geräte
  • Test einer ersten Installation
  • Beschreibung der Optimierung
  • Testergebnisse der entgültigen Installation
  • Fazit

Anforderungen an die eigene Website

Bevor man mit der eigenen Website startet, muss man ein paar Fragen für sich klären. Oft ist ein NAS bereits im Einsatz, welches sich eventuell für das Hosting der eigenen Webseite anbietet. Ob dies sinnvoll ist, sollte man im Vorfeld klären. Dazu sind wenigstens folgende Aspekte zu betrachten:

  • Erwartete Besucherzahlen
  • vorhandene Internetanbindung
  • die Anwendung (WordPress, TNG, …)

Klar ist, dass ich für einen kommerzielle Site mit Online-Shop einen schnellen Server und eine schnelle Internet Verbindung benötige. Aber bei einer Hobby Seite muss dies nicht unbedingt sein. Gerade Hobbies wie die Ahnenforschung sprechen doch eher kleinere Benutzergruppen an. Da wird ein zeitgleicher Zugriff von mehreren Benutzern schon recht unwahrscheinlich. Damit ein Besucher, die Seite gerne nutzt, muss aber auch hier ein schneller Seitenaufbau immer gegeben sein. Da schnelle Internetzugänge dank VDSL, Supervectoring, Kabelanschluss oder sogar FiberToTheHome oft bereitstehen, ist dies für eine Hobby Website meist völlig ausreichend.

Das vorgesehene NAS sollte auch genug Rechenpower und RAM bereitstellen. Die DS216+II ist mit einer Intel N3060 dual Core CPU ausgestattet. Diese CPU unterstützt AES-NI für ordentliche Verschlüsselungsleistung und bis zu 8GB Hauptspeicher, um viele Daten cachen zu können.

Wie gut eine WordPress Installation unter diesen Umständen funktioniert, werde ich nachfolgend untersuchen.

Testaufbau und verwendete Geräte

Für die Tests habe ich eine VDSL Leitung mit 100/40 MBit/s und eine Synology DS216+II NAS genutzt. Die NAS ist mit 8GB statt der werkseitigen 1GB RAM ausgerüstet. Wie man den Speicher einfach aufrüsten kann beschreibt iDomiX hier. Die WordPress Installation ist Dank der fertigen Pakete von Synology für WordPress und MariaDB schnell erledigt und man kann direkt die ersten Seiten und Beiträge gestalten. Ich hatte erstmal nur eine Homepage mit einem Bild und etwas Text entworfen. Bevor ich mit der Untersuchung der Site anfangen konnte, brauchte ich noch ein ansprechendes WordPress Theme. Ich suchte etwas einfaches und wähle das Theme ‚Nisarg‘.

Meine erste Installation sah damit so aus:

  • DSM Version 6.2-23729 Update 1
  • Apache 2.2.34 (Unix) mod_fastcgi/mod_fastcgi-SNAP-0910052141
  • PHP v5.6.36
  • WordPress 4.9.4

Untersuchung der ersten Installation

Der erste Eindruck der Website war schon gut. In sehr kurzer Zeit hat man mit WordPress eine anschauliche Seite erstellt. Bevor man jetzt immer mehr Beiträge und Seiten entwirft, lohnt es sich, die Tragfähigkeit der Installation zu untersuchen. Wäre doch schade, wenn man nach einigen Monaten feststellt, dass die erste, schnelle Lösung nicht mehr skaliert und man die Site neu konzipieren muss, um beispielsweise die gewünschte Performance zu erhalten.

Zur Untersuchung nutze ich gerne den Pingdom Website Speed Test. Ein erster Lauf attestierte mir eine Ladezeit von 2,72 Sekunden.

Das Tool meldete, dass meine Site schneller wäre wie 57% der anderer getesteten Sites sei. Ein schwacher Trost, da ich mir eine Aufbauzeit von deutlich unter einer Sekunde wünschte. Das der Testserver in New York stand, hat das Ergebnis sicherlich auch negativ beeinflusst. Wer seine Website auch für Mobile-Geräte bereitstellt, muss aber mit noch größeren Laufzeiten rechnen. Für die nachfolgenden Tests habe ich dann aber doch den Server in Stockholm genutzt, um den Einfluss der Laufzeiten aus den Messungen möglichst rauszuhalten. Schließlich kann ich die Laufzeiten sowieso nicht beeinflussen.

Wenn man sich die Ergebnisse des ersten Tests genauer anschaut sieht man, dass für diese einfache Homepage bereits 21 Requests an meinen Server gesendet wurden. Dies hat viele TCP und SSL Verbindungsaufbauten zur Folge. Auffällig sind auch lange Wartezeiten, bevor die HTML Seiten empfangen werden. Dies liegt sicherlich daran, dass WordPress PHP nutzt, um die Seiten dynamisch zu erzeugen. Also suchte ich nach Optimierungsmöglichkeiten.

Optimierung der WordPress Installation

Für WordPress gibt es eine riesige Auswahl an Plugins. Jedes Plugin birgt natürlich auch Gefahren und somit war für mich klar, dass ich die Anzahl der Plugins bewusst niedrig halten möchte. Aber der Seitenaufbau muss einfach schneller werden, wenn nicht Besucher schon durch die Ladezeit der Startseite vergrault werden sollen.

Ich fand die PlugIns ‚Fast Velocity minify‘, ‚WP Super Cache‘ und ‚EWWW Image Optimizer‘.

Fast Velocity Minify soll die ausgelieferten CSS und JS Files optimieren. Dazu werden diese verkleinert, indem beispielsweise Kommentare entfernt werden. Und es werden auch mehrere Files zusammengefügt (merged), sodass weniger Files zu laden sind. Damit sollte sich die Request Anzahl deutlich reduzieren lassen.

WP Super Cache übersetzt den PHP Code von statischen Beiträgen und Seiten vorab in HTML Code. Somit kann dieser bei einem Seitenzugriff direkt ausgeliefert werden und die CPU der NAS wird deutlich entlastet.

Das Plugin ‚EWWW Image Optimizer‚ reduziert die Filegröße der Bilder automatisch, sodass bei einem Seitenzugriff weniger Daten zu übertragen sind

Testergebnis mit den Plugins

Ein erneuter Test zeigte, dass die Request Anzahl von 21 auf 14 gesunken war. Die Seitengröße sank etwas von 395kB auf 381kB und die Ladezeit lag schon bei 908ms.

Pingdom liefert auch noch eine Graphik, die für jede zu übertragende Datei die Zeiten genau aufschlüsselt:

Man kann gut erkennen, wie für jede Übertragung eine eigene SSL und TCP Verbindung aufgebaut wird. Die Wartezeiten (gelb) und Übertragungszeiten (grün) haben eine deutlichen Anteil an der Gesamtladezeit. Das Headerbild (elfte Datei) wird von einer falschen domain (dsm.allius.de/ statt allius.de/) geladen, wodurch noch eine zweite DNS Auflösung notwendig wird.

Zwischenbewertung

Die Performance stimmt jetzt. Für eine Hobby Webseite ist eine Ladezeit unter einer Sekunde sicherlich OK. Die eingesetzten Plugins reduzieren die Ladezeiten der Blog-Beiträge und der statischen Webseiten enorm. Bei beiden Tests habe ich einen Hinweis „Leverage browser caching“ erhalten. Hier scheint noch etwa mit dem aufgesetzten Webserver nicht zu stimmen. Außerdem wird bei dieser Installation das Bild immer von der Sub-Domain der Diskstation und nicht von der Domain der Website geladen. Dies bedeutet mindestens zwei DNS Anfragen. Ich beschloss daher eine komplett eigene Installation, statt der fertigen Synology Pakete, auszuprobieren. Damit könnte ich dann auch PHP7 und nginx statt den apache Webserver nutzen. Die Installation werde ich einem späteren Blog genau beschreiben. Vor einen Neuinstallation von WordPress, wollte ich aber noch verschiedene Themes ausprobieren. Insbesondere suchte ich nach einem Theme, den man erweitern kann, wenn mir die einfache Website doch nicht mehr reicht.

Weitere Optimierung für Mobile-Geräte

Das Theme ‚GeneratePress‘ von Tom Usborne fand ich sehr interessant. Der Hersteller wirbt damit. dass es schnell, klein und für mobile Anwendungen geeignet sei. Das Theme gibt es auch als freie Version. Diese hat für mich alle erforderlichen Features. Somit habe ich auch dieses noch mal getestet. Für große Blogs mit vielen Bilder habe ich noch das Plugin ‚a3 Lazy Load‘ installiert. Dieses Plugin lädt Bilder nur, wenn sie im sichtbaren Bereich liegen und rendert die Seiten auch schon bevor alle Bilder vollständig geladen sind. Somit ist die Seite auch auf Mobil Geräten flüssig bedienbar, da weniger Daten geladen werden müssen.

Die abschließenden Pingdom Testergebnisse habe mit folgender Konfiguration aufgenommen:

  • DSM 6.2-23739 Update2
  • NGINX 1.13.3
  • PHP 7.0.30
  • WordPress 4.9.7
  • Theme GeneratePress
  • Plugins:
    • a3 LazyLoad v1.8.9
    • Fast Velocity Minify v2.3.4
    • WP Statistics – 12.3.6.3
    • WP Super Cache – 1.6.2
    • Yoast SEO – 7.9

Testergebnis mit neuen Theme

Die Ergebnisse sind wirklich beeindruckend. Es sind nur noch 9 Requests notwendig. Die Seitengröße ist auf 86kB gesunken und die Ladezeit ist mit 443ms halb so groß, wie nach der ersten Optimierung:

Die Graphik der File Requests zeigt, wie das ‚Lazy Loading‘ arbeitet:

Die ersten 8 Files sind bereits nach gut 150ms übertragen und die Seite kann gerendert werden. Das letzte File wird von einem externen Server geladen und blendet das Ergebnis des letzten Vulnerabilty-Scanns ein. Durch das Lazy Loading blockiert dieses File nicht mehr den Seitenaufbau. Alleine die DNS Auflösung hätte in diesem Fall eine Verzögerung von 300ms gekostet. Die erste DNS Auflösung (oberstes File) ist durch den Wechsel zu einem anderen DNS Hoster auch erheblich schneller geworden. Ich musste wechseln, da mein bisheriger Hoster kein DNSSEC anietet. Das der neue Hoster auch noch erheblich schneller ist, hat mich natürlich sehr gefreut. In der letzten Messung sind auch fast keine grünen Blöcke (Datenempfang) mehr zu sehen. Die 40MBit/s Uploadgeschwindigkeit der VDSL Leitung ist hier definitiv kein begrenzender Faktor.

Fazit

Die Versuche haben gezeigt, dass selbst auf einer NAS eine sehr schnelle Website realisiert werden kann. Durchdachte Softwarekonzepte reduzieren die zu übertragenden Daten enorm. Caching Strategien und File Minimizer kommen voll zur Geltung. Wird die NAS oder die Internetanbindung durch andere Anwendungen (z.B Streaming) belastet, muss man eventuell doch zu einem Hoster seines Vertrauens wechseln. Aber auch dann wird eine gutes Softwarekonzept von Vorteil sein. Wer mit seinen Seitenaufbauzeiten unzufrieden ist, sollte sich erstmal die Seitengröße, Anzahl der Requests, etc. anschauen, bevor man über den Einsatz von SSDs oder eines dedizierten Servers nachdenkt. Wer Updates oder Umstellungen seiner Website erstmal auf der heimischen NAS prüft, wird nicht von Performance fressenden Features/Designs überrascht.

Ich werde meine Website weiterhin selbst hosten. Für die Ahnenforschung werde ich demnächst eine TNG Installation aufsetzten. Natürlich werde ich auch diese auf meiner NAS prüfen und hier berichten.

Nachtrag

Nachdem die Synology DS920+ erschienen ist, habe ich die DS216+II mit der neuen DS920+ im Betrieb als WordPress-Server verglichen. Hier gehts zu dem Vergleichstest.


Links