Die Website ist das Schaufenster des Vereins. WordPress läuft in seinem eigenen Container hinter dem Reverse Proxy, ganz klassisch mit Apache, PHP und MariaDB.
Was ist WordPress?
WordPress ist das meistgenutzte System für Websites weltweit. Seit einigen Versionen arbeitet es mit Blöcken: Seiten werden aus Absätzen, Bildern, Spalten und Buttons zusammengesetzt, und mit einem Block-Theme lässt sich auch das Layout im Browser bearbeiten. Ideal, wenn später andere im Verein Inhalte pflegen sollen.
Der Container
# auf dem Proxmox-Knoten
pct clone 9000 114 --hostname web --full
pct set 114 --cores 2 --memory 1536 --onboot 1 \
--net0 name=eth0,bridge=vmbr0,ip=192.168.178.44/24,gw=192.168.178.1
pct resize 114 rootfs 16G
pct start 114
pct exec 114 -- dpkg-reconfigure openssh-server
Installation
sudo apt install -y apache2 libapache2-mod-php mariadb-server \
php php-mysql php-gd php-curl php-xml php-mbstring php-zip php-intl php-imagick
sudo a2enmod rewrite
# Datenbank
sudo mariadb <<'SQL'
CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'HIER-EIN-STARKES-PASSWORT';
GRANT ALL ON wordpress.* TO 'wordpress'@'localhost';
SQL
# WordPress auf Deutsch herunterladen
cd /tmp
curl -fsSLO https://de.wordpress.org/latest-de_DE.tar.gz
tar xzf latest-de_DE.tar.gz
sudo rm -rf /var/www/html && sudo mv wordpress /var/www/html
sudo chown -R www-data: /var/www/html
Damit Permalinks funktionieren, braucht Apache für das Webverzeichnis AllowOverride All:
# /etc/apache2/conf-available/wordpress.conf
<Directory /var/www/html>
AllowOverride All
</Directory>
sudo a2enconf wordpress && sudo systemctl reload apache2
Der HTTPS-Trick hinter dem Proxy
Zwischen Proxy und WordPress läuft nur HTTP, der Besucher nutzt aber HTTPS. Damit WordPress das weiß, kommen diese Zeilen in die wp-config.php, direkt über „Das war’s, Schluss mit dem Bearbeiten“:
if (($_SERVER['HTTP_X_FORWARDED_PROTO'] ?? '') === 'https') {
$_SERVER['HTTPS'] = 'on';
}
define('WP_HOME', 'https://www.meinverein.de');
define('WP_SITEURL', 'https://www.meinverein.de');
define('DISALLOW_FILE_EDIT', true);
Ohne diese Zeilen gibt es Weiterleitungsschleifen oder unsichere Inhalte. Danach im Reverse Proxy www.meinverein.de auf http://192.168.178.44 zeigen lassen und im Browser die Installation abschließen. Datenbankserver ist localhost.
Einrichtung
- Permalinks unter Einstellungen → Permalinks auf „Beitragsname“.
- Ein schlankes Block-Theme wählen statt eines Page-Builders. Weniger Plugins, weniger Sicherheitslücken, schnellere Seite.
- Plugins sparsam: ein Spamschutz für Kommentare und ein Formular-Plugin reichen meist. Jedes Plugin ist Code, der gepflegt werden muss.
- Rechtliches: Impressum und Datenschutzerklärung sind Pflicht. Schriften und andere Dateien nicht von fremden Servern laden.
- Redakteure bekommen die Rolle „Redakteur“, nicht „Administrator“. Mit Keycloak und einem OpenID-Connect-Plugin melden sie sich mit ihrem Vereinskonto an.