Mobile-Menu

WordPress im Container QNAP als eigene Hosting-Plattform

Von Thomas Joos 7 min Lesedauer

Anbieter zum Thema

Ein QNAP-NAS eignet sich als stabile Plattform für WordPress, weil es Rechenleistung, Speicher und Netzwerkanbindung direkt im Unternehmen bereitstellt. Wer seine Website hier betreibt, behält die volle Kontrolle über Datenbanken und Dateien, umgeht externe Hosting-Anbieter und kann eigene Backup-Strategien mit den Bordmitteln des Systems nutzen. Container trennen Dienste sauber voneinander, Updates lassen sich ohne Nebenwirkungen durchführen, und durch den Einsatz von Redis als Objektcache entsteht eine Geschwindigkeit, die dem klassischem Shared-Hosting überlegen ist.

Als stabile Plattform für WordPress kann ein NAS-System von QNAP dienen.(Bild:  Midjourney / KI-generiert)
Als stabile Plattform für WordPress kann ein NAS-System von QNAP dienen.
(Bild: Midjourney / KI-generiert)

Eine lokale WordPress-Instanz auf QNAP ersetzt Shared-Hosting durch reproduzierbare Container, kontrollierte Updates und transparente Backups. MariaDB liefert die Datenbank auf Port 3307, Container Station kapselt die Anwendung, ein optionaler Redis-Cache beschleunigt Antwortzeiten deutlich. Ein Reverse-Proxy ordnet Domains sauber zu und hält 80 und 443 frei von QTS-Oberflächen. So entsteht eine stabile Hosting-Plattform im eigenen Netz.

Bildergalerie
Bildergalerie mit 8 Bildern

Voraussetzungen schaffen

Im QTS-Kontrollzentrum wird unter „Netzwerk und virtueller Switch“ ein virtueller Switch im Bridge-Modus angelegt. Dadurch erhält jeder Container eine eigene IP-Adresse im lokalen Netzwerk und verhält sich wie ein eigenständiger Server. Dieser Schritt ist notwendig, um WordPress und begleitende Dienste sauber zu adressieren.

In der Anwendung „File Station“ wird ein neues Verzeichnis angelegt. Empfehlenswert ist der Pfad „/Container/wordpress“. Dieser Ordner dient als Speicher für alle persistente Daten wie Themes, Plug-ins und Uploads. Zusätzlich sollten Unterordner „db“ für die Datenbank und „redis“ für den optionalen Cache vorbereitet werden. Damit die PHP-Konfiguration anpassbar bleibt, wird außerdem eine Datei „uploads.ini“ erstellt und in diesem Verzeichnis abgelegt. Darin lassen sich Parameter wie maximale Upload-Größe oder Speicherlimit definieren.

Im „App Center“ werden anschließend die Pakete „MariaDB 10“ und „phpMyAdmin“ installiert. MariaDB 10 ist als Datenbankdienst erforderlich, phpMyAdmin stellt die Verwaltungsoberfläche bereit. Nach der Installation wird MariaDB gestartet und über phpMyAdmin eine neue Datenbank für WordPress eingerichtet. Dazu meldet man sich in „phpMyAdmin“ mit dem Root-Konto an, wählt „MariaDB 10“ und legt unter „Benutzerkonten“ einen neuen Benutzer an. Das Feld „Datenbank mit gleichem Namen anlegen und alle Rechte gewähren“ muss aktiviert werden. Auf diese Weise entstehen ein Benutzer, ein Passwort und eine eigene Datenbank, die ausschließlich für WordPress bestimmt sind. MariaDB 10 verwendet standardmäßig den Port 3307. Dieser Port muss später bei der Installation von WordPress korrekt angegeben werden.

WordPress im Container starten

Die Einrichtung erfolgt in „Container Station“. Dort wird im Bereich „Explore“ nach dem offiziellen WordPress-Image gesucht. Nach dem Auswählen wird die Option „Erweiterte Einstellungen“ geöffnet. Unter „Netzwerk“ wird der Modus „Bridge“ gewählt, anschließend der zuvor konfigurierte virtuelle Switch. Für den Container wird eine feste IP-Adresse vergeben, damit er dauerhaft erreichbar bleibt.

Unter „Speicher“ wird die Standardbindung entfernt. Stattdessen wird der Hostpfad „/Container/wordpress“ mit dem Zielpfad „/var/www/html“ im Container verbunden. Zusätzlich wird die Datei „uploads.ini“ mit dem Pfad „/usr/local/etc/php/conf.d/uploads.ini“ verbunden. Damit erhält WordPress dauerhaften Speicher und eine angepasste PHP-Konfiguration. Nach dem Start des Containers ist die Anwendung unter der vergebenen IP-Adresse erreichbar.

Beim ersten Aufruf erscheint die WordPress-Installationsmaske. Dort müssen Datenbankname, Benutzername und Passwort eingetragen werden. Als Datenbankhost wird die IP-Adresse des NAS zusammen mit dem Port „3307“ eingetragen, zum Beispiel „192.168.10.50:3307“. Nach Bestätigung wird die Installation fortgesetzt. Es folgen Angaben zu Seitentitel, Administratorkonto und E-Mail-Adresse. Danach kann die Verwaltung über „/wp-admin“ aufgerufen werden.

Redis für höhere Leistung

Für eine bessere Performance kann Redis als Cache-Server eingebunden werden. Dazu wird in „Container Station“ das offizielle Redis-Image gestartet. Der Hostpfad „/Container/redis“ wird dabei auf „/data“ im Container gebunden. Nach dem Start wird in der „File Station“ die Datei „wp-config.php“ im WordPress-Verzeichnis geöffnet. Unterhalb der Debug-Konstante werden folgende Zeilen ergänzt:

define("WP_REDIS_HOST", "IP-des-Redis-Containers");define("WP_REDIS_PORT", "6379");

In der WordPress-Oberfläche wird anschließend unter „Plugins“ das Plug-in „Redis Object Cache“ installiert und aktiviert. Im Menü „Einstellungen“ erscheint ein neuer Punkt „Redis“. Mit „Object Cache aktivieren“ wird die Verbindung hergestellt. Der Status wechselt auf „Connected“.

Zugriff über das Internet

Damit die Seite von außen erreichbar ist, müssen die Ports 80 und 443 über einen Reverse-Proxy verwaltet werden. Die QTS-Verwaltungsoberfläche sollte auf andere Ports verschoben werden, um Konflikte zu vermeiden. Im Router werden 80 und 443 auf die IP des NAS weitergeleitet. Ein sicherer Ansatz besteht darin, einen Nginx Proxy Manager als eigenen Container zu betreiben. In dessen Oberfläche wird ein neuer Proxy-Host angelegt. Als Quelle wird die öffentliche Domain mit Protokoll „https“ und Port „443“ eingetragen. Ziel ist die IP des WordPress-Containers mit Port „80“. In den SSL-Einstellungen wird ein gültiges Zertifikat eingebunden, außerdem werden „Force SSL“ und „HTTP to HTTPS“ aktiviert. Auf Wunsch kann „HSTS“ zugeschaltet werden.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Data-Storage und -Management

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung. Die Einwilligungserklärung bezieht sich u. a. auf die Zusendung von redaktionellen Newslettern per E-Mail und auf den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern (z. B. LinkedIn, Google, Meta).

Aufklappen für Details zu Ihrer Einwilligung

Alternativ lässt sich der integrierte QNAP-Webserver für einfache Weiterleitungen nutzen. Dort können virtuelle Hosts definiert werden, die Anfragen je nach Domain in unterschiedliche Verzeichnisse oder Container leiten. Für WordPress empfiehlt sich jedoch ein eigener Proxy, da nur so TLS, Weiterleitungen und WebSockets sauber verarbeitet werden.

Pflege und Backup

Regelmäßige Sicherungen sind Pflicht. Der Ordner „/Container/wordpress“ mit allen Inhalten sollte über Hybrid Backup Sync 3 auf ein externes Ziel repliziert werden. Die Datenbank wird mit phpMyAdmin exportiert und separat gesichert. Bei einer Wiederherstellung genügen das Einspielen des Dumps und das Zurückkopieren des WordPress-Verzeichnisses.

Updates erfolgen imagebasiert. In „Container Station“ wird das WordPress-Image aktualisiert. Anschließend wird der Container mit denselben Netz- und Speichereinstellungen neu erstellt. Der Reverse-Proxy bleibt unverändert, Ausfallzeiten sind minimal.

Alternative Installation mit Docker Compose und Portainer

Eine robuste Alternative zur QNAP-App ist die Bereitstellung von WordPress über Docker Compose. Dabei laufen WordPress, MariaDB, phpMyAdmin und Redis ebenfalls in eigenen Containern. Jeder Dienst ist klar getrennt, lässt sich unabhängig aktualisieren und speichert seine Daten in vorbereiteten Hostverzeichnissen. Zur Verwaltung kommt hier aber die Container-Verwaltungslösung Portainer zum Einsatz, die wiederum als Container innerhalb der Container-Station installiert wird.

Im Verzeichnis „/Container“ wird zunächst auch hier ein Unterordner mit dem Namen „wordpress“ erstellt. Innerhalb dieses Ordners sind noch die Verzeichnisse „db“ und „redis“ notwendig, die den persistenten Speicher für die Datenbank und den Cache übernehmen. In demselben Ordner wird außerdem eine Datei „uploads.ini“ abgelegt, die PHP-Parameter wie „upload_max_filesize = 64M“ und „post_max_size = 64M“ definiert. Im nächsten Schritt wird die Datei „docker-compose.yml“ in „/Container/wordpress“ gespeichert. Sie enthält die vollständige Konfiguration für alle Dienste:

version: "3.8"services: wordpress: image: wordpress:php8.4 container_name: wp_site hostname: wp-site depends_on: - db - redis ports: - "8280:80" volumes: - /Container/wordpress:/var/www/html:rw - /Container/wordpress/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini:rw environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wpadmin WORDPRESS_DB_PASSWORD: S3cur3WPPass WORDPRESS_DB_NAME: wp_prod restart: unless-stopped db: image: mariadb:11.4 container_name: wp_db hostname: wp-db environment: MYSQL_DATABASE: wp_prod MYSQL_USER: wpadmin MYSQL_PASSWORD: S3cur3WPPass MYSQL_ROOT_PASSWORD: S3cur3RootPass TZ: Europe/Berlin volumes: - /Container/wordpress/db:/var/lib/mysql:rw restart: unless-stopped redis: image: redis:7 container_name: wp_redis hostname: wp-redis command: ["redis-server", "--save", "60", "1000", "--appendonly", "yes"] environment: TZ: Europe/Berlin volumes: - /Container/wordpress/redis:/data:rw restart: unless-stopped phpmyadmin: image: phpmyadmin:5 container_name: wp_pma hostname: wp-pma depends_on: - db ports: - "2280:80" environment: PMA_HOST: db PMA_PORT: 3306 UPLOAD_LIMIT: 128M restart: unless-stoppednetworks: default: name: wp_stack_net

Nach dem Speichern der Datei gibt es zwei Wege zum Starten: in Portainer unter „Stacks“ den Menüpunkt „+ Add stack“ aufrufen, einen Namen vergeben, den Inhalt der „docker-compose.yml“ in den Editor einfügen und „Deploy the stack“ ausführen; alternativ per SSH in das Verzeichnis „/Container/wordpress“ wechseln und den Befehl „docker compose up -d“ starten. Beide Methoden erzeugen identische Container und binden die vorbereiteten Verzeichnisse automatisch ein.

Bildergalerie
Bildergalerie mit 8 Bildern

Der Dienst „wordpress“ läuft nach dem Start auf Port 8280 und lässt sich über „http://NAS-IP:8280“ erreichen. „phpmyadmin“ antwortet auf Port 2280 und bietet den grafischen Zugriff auf die Datenbank. Damit der Aufruf auch über eine eigene Domain und über HTTPS erfolgt, wird im QNAP-Kontrollzentrum der Reverse-Proxy eingerichtet. Dazu in den Einstellungen „Reverse Proxy“ öffnen, einen Eintrag anlegen, eingehende Verbindungen auf Port 443 annehmen und intern an http://NAS-IP:8280 weiterleiten. Anschließend ein gültiges SSL-Zertifikat importieren und die Optionen für „HTTP/2“ und „Kompression“ aktivieren.

Nach diesen Schritten steht die WordPress-Installationsseite bereit. Dort die Werte „wp_prod“ für den Datenbanknamen, „wpadmin“ als Benutzer und das Passwort eintragen. Die Erstinstallation legt automatisch die notwendigen Tabellen an. Sobald die Einrichtung abgeschlossen ist, öffnet sich das WordPress-Dashboard. Durch die Einbindung von Redis über den Container „wp_redis“ lässt sich die Leistung weiter steigern. Dafür in der „wp-config.php“ die Zeilen

define('WP_REDIS_HOST', 'wp-redis');define('WP_REDIS_PORT', '6379');

einfügen und im Backend das Plug-in „Redis Object Cache“ aktivieren. Ab diesem Zeitpunkt laufen wiederkehrende Datenbankabfragen im Speicher und beschleunigen den Seitenaufbau erheblich.

Aktuelles eBook

Storage-Software als Effizienzbooster

eBook Storage-Software als Effizienzbooster
eBook „Storage-Software als Effizienzbooster“
(Bild: Storage-Insider)

Mit der geeigneten Storage-Software kann sich ein Unternehmen einen Effizienzbooster ins Haus holen oder in der Cloud abonnieren. Dieser Booster steigert nicht nur die Performance der geschäftskritischen Anwendungen, sondern optimiert auch die Kosten der bereits installierten Speichersysteme.

Die Themen im Überblick:

  • Herausforderungen eines modernen Speichersystems
  • Methoden und Technologien effizienter Speichersysteme
  • Effizienter Speicher mit Pure Storage, AWS, Cohesity und Dell

(ID:50636982)