Flarum auf einem VPS mit PHP installieren
Installieren Sie Flarum 1.x mit PHP, Composer und MariaDB, veröffentlichen Sie nur /public per TLS und beheben Sie Mail- sowie Extension-Upgrade-Fallen.
Flarum auf einem VPS mit PHP und MariaDB installieren
Wenn Sie Flarum auf einem VPS installieren, erhalten Sie ein Forum, das mit PHP und MariaDB läuft – ohne Docker, ohne Ruby und ohne separaten Job-Runner. Das ist der Grund, sich dafür zu entscheiden. Discourse auf einem VPS installieren bedeutet einen Docker-Stack mit Ruby, PostgreSQL, Redis und einem Hintergrund-Worker. 2 GB RAM sind dabei die praktische Untergrenze, bevor Sie Backups oder einen Maildienst hinzufügen. Bei einer stark genutzten Community mit Tausenden Beiträgen pro Tag rechtfertigt Discourse diesen Ressourcenbedarf. In einem Forum mit einigen Hundert Nutzern ist es jedoch zusätzliche Infrastruktur, für die Sie jeden Monat bezahlen, die Sie aber nie auslasten. Flarum passt in einen PHP-Stack, den Sie möglicherweise bereits betreiben. Daher kann ein VPS mit 1 GB RAM, nginx und MariaDB das Forum neben den bereits vorhandenen Diensten hosten. Wenn die Entscheidung noch offen ist, behandelt der ausführlichere Vergleich selbst gehosteter Forensoftware die übrigen Optionen.
Diese Anleitung verwendet Flarum 1.x, derzeit aus der 1.8-Serie. Im August 2026 ist Flarum 2.0 noch ein Release Candidate. Für ein Forum, auf das andere Personen angewiesen sind, sollten Sie daher Version 1.8 einsetzen. Die Erweiterungen sind hier wichtiger als die Version des Kerns. Die meisten Entwickler von Erweiterungen sind noch nicht auf 2.0 umgestiegen.
Was Flarum 1.8 auf dem Server benötigt
Die dokumentierten Anforderungen von Flarum sind PHP 7.3 oder neuer, MySQL 5.6+ oder MariaDB 10.0.5+ sowie nginx oder Apache mit mod_rewrite. Ubuntu 24.04 enthält PHP 8.3 und MariaDB 10.11. Die Pakete der Distribution erfüllen daher beide Anforderungen ohne ein Drittanbieter-Repository. Flarum benötigt die PHP-Erweiterungen curl, dom, fileinfo, gd, json, mbstring, openssl, pdo_mysql, tokenizer und zip. Sie benötigen außerdem Shell-Zugriff. Composer ist hier nicht optional: Jede Flarum-Erweiterung ist ein Composer-Paket. Ohne Composer lässt sich keine Erweiterung hinzufügen.
Flarum ist eine gewöhnliche PHP-Anwendung. Wenn Sie bereits einen LAMP-Stack auf Ubuntu 24.04 betreiben, ist der größte Teil der nächsten beiden Abschnitte bereits installiert. Sie können daher bis zum Abschnitt zur Datenbank übergehen.
PHP und die von Flarum benötigten Erweiterungen installieren
sudo apt update
sudo apt install -y nginx mariadb-server composer
sudo apt install -y php8.3-fpm php8.3-cli php8.3-curl php8.3-gd php8.3-mbstring php8.3-mysql php8.3-xml php8.3-zip
php -m | grep -E 'curl|dom|gd|mbstring|pdo_mysql|zip'
composer --versionDie Paketnamen entsprechen nicht genau der Liste von Flarum. Die Erweiterung dom ist Bestandteil von php8.3-xml. fileinfo, json, openssl und tokenizer sind in Ubuntu in PHP 8.3 einkompiliert. Dafür muss kein Paket installiert werden. grep sollte sechs Zeilen ausgeben. composer --version sollte eine Version aus der Reihe 2.x melden. Eine fehlende Erweiterung sollte jetzt behoben werden. Composer verweigert die Installation von Flarum ohne diese Erweiterung und nennt sie in der Fehlermeldung:
Problem 1
- flarum/core[v1.8.0, ..., v1.8.17] require ext-gd * -> it is missing from your system.
Install or enable PHP's gd extension.Prüfen Sie, ob das PHP der Befehlszeile und der FastCGI-Prozessmanager (PHP-FPM) dieselbe Version verwenden. Composer läuft unter dem Binärprogramm der Befehlszeile, während Ihr Forum unter FPM ausgeführt wird. Daher müssen php -v und sudo php-fpm8.3 -v übereinstimmen. Auf einem System, auf dem sich mehrere PHP-Versionen aus einem Drittanbieter-Repository angesammelt haben, können sie voneinander abweichen. Dann ist eine für die eine Version installierte Erweiterung für die andere nicht sichtbar.
Datenbank und dedizierten Datenbankbenutzer erstellen
sudo mariadb-secure-installation
sudo mariadbCREATE DATABASE flarum CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'flarum'@'localhost' IDENTIFIED BY 'use-a-long-random-password';
GRANT ALL PRIVILEGES ON flarum.* TO 'flarum'@'localhost';
FLUSH PRIVILEGES;
EXIT;Verwenden Sie für Flarum einen eigenen Datenbankbenutzer statt root. Die Berechtigung umfasst flarum.* und nichts anderes. Dadurch kann eine SQL-Injection-Schwachstelle in einer Erweiterung, die Sie nicht selbst geschrieben haben, Ihre anderen Datenbanken nicht lesen. Auch der Zeichensatz ist wichtig: utf8mb4 speichert Emojis und nichtlateinische Schriften korrekt, während das ältere MySQL-Format utf8 eine Drei-Byte-Kodierung verwendet und einen Beitrag beim ersten Vier-Byte-Zeichen abschneidet. Prüfen Sie, ob der Benutzer funktioniert, bevor Sie fortfahren.
mariadb -u flarum -p flarum -e 'SELECT DATABASE();'Die Ausgabe sollte flarum lauten. ERROR 1045 (28000): Access denied for user 'flarum'@'localhost' bedeutet, dass das Passwort nicht übereinstimmt oder der Benutzer für einen anderen Host als localhost angelegt wurde.
Flarum mit Composer installieren, auf Version 1.8 festlegen
Erstellen Sie zuerst einen Systembenutzer, dem der Code gehört. Wenn Sie Composer als root ausführen, bleiben Dateien in vendor/ und storage/ im Besitz von root. PHP kann später seinen eigenen Cache nicht schreiben, und das Forum beantwortet jede Anfrage mit einem 500-Fehler.
sudo useradd --system --home-dir /srv/flarum --shell /bin/bash flarum
sudo install -d -o flarum -g flarum -m 755 /srv/flarum
sudo -iu flarumDer letzte Befehl öffnet eine Shell als Benutzer flarum in /srv/flarum. Jeder Befehl bis zum Ende der Anleitung wird dort ausgeführt, sofern er nicht mit sudo beginnt.
composer create-project flarum/flarum:^1.8.0 .Die Einschränkung ^1.8.0 legt die Version fest. Sie akzeptiert Patch-Releases von 1.8.x und lehnt 2.0 ab. Das ist sinnvoll, solange 2.0 noch ein Release Candidate ist. Composer lädt das Grundgerüst herunter, löst flarum/core und dessen Abhängigkeiten auf und hinterlässt public/, storage/, vendor/, composer.json sowie ein flarum-Befehlszeilenskript.
Auf einem kleinen VPS treten in diesem Schritt häufig Fehler auf. Dabei sehen zwei unterschiedliche Fehlerbilder ähnlich aus. PHP Fatal error: Allowed memory size of 134217728 bytes exhausted ist das PHP-eigene memory_limit. Wenn Sie COMPOSER_MEMORY_LIMIT=-1 vor den Befehl setzen, wird diese Begrenzung für einen Durchlauf aufgehoben. Ein alleinstehendes Killed in einer eigenen Zeile ohne PHP-Fehler stammt vom Out-of-Memory-Killer des Kernels. Das können Sie mit dmesg | tail bestätigen. In diesem Fall ist der Arbeitsspeicher tatsächlich erschöpft. Fügen Sie daher Swap hinzu. Ein höheres PHP-Speicherlimit verschlimmert das Problem, weil PHP dann noch mehr Speicher anfordert, bevor der Kernel eingreift.
Warum nur /public aus dem Web erreichbar sein sollte
Das Projektverzeichnis enthält config.php mit Ihrem Datenbankpasswort im Klartext, vendor/ mit sämtlichen Abhängigkeiten und storage/ mit Logs und zwischengespeicherten Sitzungen. Nichts davon gehört ins öffentliche Internet. Flarum hält alle aus dem Web erreichbaren Dateien in einem Unterverzeichnis, public/. Dieses enthält index.php, einen Ordner assets/ und wenig mehr. Setzen Sie den Webserver-Root auf /srv/flarum/public. Damit ist der restliche Verzeichnisbaum konstruktionsbedingt nicht über HTTP erreichbar, statt von einer Regel abzuhängen, an die Sie sich erinnern müssen.
Setzen Sie den Root stattdessen auf /srv/flarum, sind die Folgen erheblich. Eine Anfrage an /config.php liefert nichts Verwertbares, weil PHP die Datei ausführt und sie lediglich ein Array zurückgibt. /storage/logs/flarum.log liefert einem Fremden jedoch Ihre Stacktraces und Datenbankfehler, und /composer.lock verrät die genaue Version jedes von Ihnen eingesetzten Pakets. Damit erhält er eine Liste bekannter Schwachstellen, die er ausprobieren kann.
PHP-FPM einen eigenen Pool zuweisen
Flarum benötigt Schreibzugriff auf drei Pfade: auf das Projektverzeichnis, damit der Installer config.php erstellen kann; auf storage/ für Logs und den Cache; sowie auf assets/ für hochgeladene Avatare und Logos. Die Dateien gehören dem Benutzer flarum. Daher ist ein eigener PHP-FPM-Pool die saubere Lösung, der als flarum ausgeführt wird. nginx läuft weiterhin als www-data und liest ausschließlich.
Schreiben Sie /etc/php/8.3/fpm/pool.d/flarum.conf:
[flarum]
user = flarum
group = flarum
listen = /run/php/php8.3-fpm-flarum.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
pm = ondemand
pm.max_children = 10
pm.process_idle_timeout = 30s
php_admin_value[memory_limit] = 256M
php_admin_value[upload_max_filesize] = 16M
php_admin_value[post_max_size] = 17Msudo systemctl restart php8.3-fpm
ls -l /run/php/php8.3-fpm-flarum.sockDer Socket muss als srw-rw---- 1 www-data www-data aufgeführt sein. Der Master-Prozess läuft als root und erstellt den Socket. Deshalb kann er den Besitz an www-data übergeben, während die Worker als flarum laufen. Wenn der Socket nicht vorhanden ist, gibt sudo journalctl -u php8.3-fpm -n 30 die Zeile FPM rejected aus. pm = ondemand startet Worker-Prozesse erst, wenn eine Anfrage eingeht. Ein wenig besuchtes Forum benötigt daher zwischen den Zugriffen nahezu keinen Speicher.
Der nginx-Serverblock
Flarum liefert im Projektstamm eine nginx-Snippet-Datei namens .nginx.conf mit. Sie enthält die Rewrite-Regel, die Cache-Header und die Komprimierungseinstellungen. Binden Sie sie ein, statt ihren Inhalt zu kopieren. Dadurch erreicht ein Flarum-Upgrade, das das Snippet ändert, Ihren Server, ohne dass Sie etwas bearbeiten müssen.
server {
listen 80;
listen [::]:80;
server_name forum.example.com;
root /srv/flarum/public;
index index.php;
client_max_body_size 16M;
include /srv/flarum/.nginx.conf;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm-flarum.sock;
}
}Speichern Sie die Datei als /etc/nginx/sites-available/flarum und aktivieren Sie sie anschließend.
sudo ln -s /etc/nginx/sites-available/flarum /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginxnginx -t sollte auf syntax is ok und test is successful antworten. Die Zeile include wird häufig weggelassen. Das führt zu einem ganz bestimmten Fehlerbild: Die Startseite wird vollständig geladen, aber jeder Link zu einer Diskussion liefert von nginx einen 404-Fehler. Flarum verarbeitet eine URL wie /d/1-hello-world innerhalb von PHP. Dieser Pfad ist keine Datei auf dem Datenträger. Ohne die try_files $uri $uri/ /index.php?$query_string-Regel des Snippets sucht nginx daher nach einem Verzeichnis namens d, findet es nicht und liefert den 404-Fehler, bevor PHP überhaupt aufgerufen wird. Apache verwendet dieselbe Weiterleitung aus der Datei .htaccess, die bereits in public/ liegt. Sie wird jedoch nur wirksam, wenn der passende <Directory>-Block AllowOverride All setzt.
TLS einrichten, bevor Sie das Installationsprogramm ausführen
Richten Sie das Zertifikat jetzt ein, nicht nachträglich. Flarum schreibt während der Installation seine Basis-URL in config.php und übernimmt diese URL aus der Adresse in Ihrem Browser. Wenn Sie Flarum über http:// installieren, beginnt jede von Flarum anschließend erzeugte Asset-URL mit http://. Sobald Sie TLS (Transport Layer Security) hinzufügen, blockiert der Browser diese Anfragen als gemischte Inhalte. Das Forum wird dann als unformatierter Text ohne JavaScript geladen. Arbeiten Sie zuerst die Certbot-Einrichtung für Let's Encrypt unter nginx durch. Bestätigen Sie, dass https://forum.example.com eine Seite bereitstellt, und kehren Sie anschließend hierher zurück.
Wenn Sie die Installation bereits über reines HTTP ausgeführt haben, besteht die Reparatur aus einer Zeile. Bearbeiten Sie /srv/flarum/config.php so, dass der Schlüssel url den Wert 'url' => 'https://forum.example.com', enthält. Führen Sie anschließend php flarum cache:clear als Benutzer flarum aus.
Installer ausführen und config.php absichern
Öffnen Sie https://forum.example.com in einem Browser. Der Webinstaller von Flarum fragt nach dem Datenbanknamen, dem von Ihnen erstellten Datenbankbenutzer und dessen Passwort, dem Forentitel sowie Ihrem Administratorkonto. Er schreibt config.php und erstellt die Tabellen. Sichern Sie nach Abschluss die Datei ab, die nun Ihr Datenbankpasswort enthält.
sudo chmod 640 /srv/flarum/config.phpDie Datei bleibt für flarum lesbar und beschreibbar. Dabei handelt es sich um den Benutzer, unter dem FPM ausgeführt wird. Für alle anderen Konten auf dem Server ist sie nicht lesbar. Prüfen Sie anschließend die Installation über die Shell.
php flarum infoDie Ausgabe enthält die Core-Version, die PHP-Version, die aktivierten Erweiterungen, den Mail-Treiber und die verwendeten Pfade. Dieser Befehl ist der erste Schritt, wenn sich etwas fehlerhaft verhält. Er ist auch das Erste, wonach eine Person fragt, die Sie bei der Fehlersuche unterstützt.
Warum E-Mails zur Registrierung und zum Zurücksetzen des Passworts unbemerkt fehlschlagen
Dieser Abschnitt entscheidet, ob Ihr Forum die erste Woche übersteht. Die ersten beiden E-Mails, die ein neues Forum versendet, sind die Registrierungsbestätigung und die E-Mail zum Zurücksetzen des Passworts. Beide werden genau in dem Moment versendet, in dem ein Fremder entscheidet, ob Ihre Community seriös ist. Beide schlagen unbemerkt fehl. Die Person, die die E-Mail nie erhalten hat, kann Sie nicht darüber informieren, und auf Ihrem Administrations-Dashboard wird kein Fehler angezeigt.
Flarum verfügt über vier Mail-Treiber, die Sie unter Administration und anschließend Email konfigurieren: smtp, mail, mailgun und log. Wählen Sie smtp und konfigurieren Sie ihn für einen Mail-Dienst, der Nachrichten tatsächlich zustellt. Der Treiber mail übergibt die Nachricht an eine lokale sendmail-Binärdatei. Diese ist auf einem frisch installierten Ubuntu-VPS nicht vorhanden. Deshalb wird die Nachricht nirgendwohin zugestellt, ohne dass ein Fehler ausgelöst wird. Der Treiber log schreibt den Nachrichteninhalt in storage/logs/ und versendet überhaupt nichts, weil er für die Entwicklung vorgesehen ist.
Speichern Sie die Einstellungen. Klicken Sie anschließend auf derselben Seite auf die Schaltfläche Send Test Mail. Diese Schaltfläche ist die einzige Rückmeldung, die Sie erhalten. Verwenden Sie sie daher, bevor Sie jemanden einladen. Wenn die Nachricht nicht ankommt, lesen Sie das Log.
tail -n 50 /srv/flarum/storage/logs/flarum.logEine abgelehnte Verbindung, eine zurückgewiesene Anmeldung und ein fehlgeschlagener TLS-Verbindungsaufbau werden dort jeweils mit dem verwendeten Host und Port protokolliert. Eine Zeile mit Connection could not be established with host smtp.example.com bedeutet, dass der Port blockiert oder falsch ist. Die häufigste Ursache ist, dass der Anbieter ausgehende Verbindungen über Port 25 standardmäßig blockiert. Port 587 mit dem Verschlüsselungsfeld auf tls gesetzt funktioniert mit nahezu jedem Mail-Dienst.
Wenn der Mailversand nicht funktioniert, sieht ein Besucher nach der Registrierung das allgemeine Flarum-Fehlerbanner Oops! Something went wrong. Please reload the page and try again., weil beim Versand der Bestätigung ein Fehler auftritt. In beiden Fällen kann sich diese Person nicht anmelden und wird Sie deshalb auch nicht darüber informieren.
Dass eine E-Mail angenommen wird, ist ein anderes Problem als ihr Versand. Eine E-Mail von einer VPS-Adresse ohne veröffentlichte SPF- oder DKIM-Einträge für Ihre Domain landet im Spam-Ordner oder wird ohne jegliche Bounce-Nachricht verworfen. Ihr Log zeigt dann einen erfolgreichen Versand, während der Empfänger die Nachricht weiterhin nicht sieht. E-Mails zuverlässig aus selbst gehosteten Anwendungen versenden beschreibt, welche DNS-Einträge Sie veröffentlichen sollten und welche Relay-Dienste empfehlenswert sind.
Erweiterungen sind Composer-Pakete. Aktualisierungen erfolgen daher über einen Befehl.
In Flarum ist eine Erweiterung ein Composer-Paket. Es gibt keine Upload-Schaltfläche und keine ZIP-Datei, die Sie in ein Verzeichnis kopieren. Das ist eine bewusste Designentscheidung: Versionen werden aufeinander abgestimmt, die genaue Paketmenge wird in composer.lock festgehalten, und eine Erweiterung, die von einer PHP-Bibliothek abhängt, installiert diese Bibliothek korrekt. Der Nachteil ist, dass das Hinzufügen als Benutzer flarum drei Befehle erfordert.
composer require 'fof/upload:*'
php flarum migrate
php flarum cache:clearAktivieren Sie die Erweiterung anschließend unter Administration und Extensions. Jeder Befehl hat eine eigene Aufgabe. composer require legt den Code auf dem Datenträger ab. php flarum migrate führt die Datenbankmigrationen der Erweiterung aus. Dadurch werden die benötigten Tabellen erstellt. php flarum cache:clear erstellt die kompilierten JavaScript- und CSS-Bundles neu, die der Browser lädt. Wenn Sie den letzten Befehl überspringen, entsteht die typische Verwirrung: Die Erweiterung wird angezeigt, der Schalter ist aktiviert, und im Browser ändert sich trotz beliebig vieler Neuladungen überhaupt nichts.
Beim Entfernen einer Erweiterung gehen Sie in umgekehrter Reihenfolge vor. Deaktivieren Sie sie zuerst im Administrationsbereich und entfernen Sie anschließend das Paket. Flarum lässt die Tabellen der Erweiterung absichtlich bestehen. Wenn Sie die Erweiterung später wieder aktivieren, gehen dadurch keine Daten verloren. Wenn Sie die Tabellen ebenfalls löschen möchten, setzen Sie die Migrationen zurück, bevor Sie den Code entfernen.
php flarum migrate:reset --extension fof-upload
composer remove fof/upload
php flarum cache:clearDie Erweiterungs-ID in diesem Befehl ist der Paketname, bei dem der Schrägstrich durch einen Bindestrich ersetzt wurde. Wenn Sie lieber klicken als tippen, fügt composer require 'flarum/extension-manager:*' eine offizielle Administrationsseite hinzu, die Composer kapselt. Sie führt dieselben Vorgänge wie der Webbenutzer aus, benötigt denselben Arbeitsspeicher und dieselben Schreibberechtigungen und schlägt aus denselben Gründen fehl. Wenn ein Problem auftritt, bleibt die Befehlszeile daher der zuverlässige Weg.
Warum composer update Flarum nicht aktualisieren kann
Die Aktualisierung von Flarum und aller Erweiterungen besteht aus einem Composer-Befehl, gefolgt von zwei Flarum-Befehlen. Sichern Sie zuerst die Datenbank.
composer update --prefer-dist --no-plugins --no-dev -a --with-all-dependencies
php flarum migrate
php flarum cache:clearLesen Sie die Ausgabe, statt von einem erfolgreichen Vorgang auszugehen. Entscheidend ist der Fall, in dem Composer jede Änderung ablehnt:
Your requirements could not be resolved to an installable set of packages.Diese Meldung bedeutet, dass eine installierte Erweiterung eine flarum/core-Abhängigkeit angibt, die die Version ausschließt, auf die Sie aktualisieren möchten. Composer verletzt diese Abhängigkeit nicht. Stattdessen belässt er die gesamte Installation auf der alten Version, anstatt eine Kombination zusammenzustellen, von der der Autor der Erweiterung angegeben hat, dass sie nicht funktioniert. Ermitteln Sie das verantwortliche Paket.
composer why-not flarum/core 1.8.17Die Ausgabe listet jedes Paket auf, das diese Version blockiert, sowie die von ihm angegebene Abhängigkeit. Anschließend können Sie entweder warten, bis der Autor eine kompatible Version veröffentlicht, oder die Erweiterung entfernen und ohne sie auskommen. Das ist der Preis des Composer-Modells. Sie sollten ihn verstehen, bevor Sie fünfzehn Erweiterungen in einem Forum installieren, auf das andere Personen angewiesen sind. Bevorzugen Sie Erweiterungen, für die kürzlich eine Version veröffentlicht wurde, und halten Sie die Liste so kurz, dass Sie sie lesen können.
Was Sie sichern sollten
Sichern Sie die Datenbank und das Projektverzeichnis. Alles andere lässt sich neu erstellen.
mariadb-dump -u flarum -p --single-transaction flarum > flarum-$(date +%F).sql
sudo tar czf flarum-files.tgz -C /srv flarumAuf älteren Systemen heißt mariadb-dump mysqldump; unter Ubuntu 24.04 funktionieren beide Bezeichnungen. Die Datenbank enthält jeden Beitrag, jeden Benutzer und jede Einstellung. Das Projektverzeichnis enthält config.php, composer.json, das die tatsächliche Liste der verwendeten Erweiterungen enthält, und assets/ mit hochgeladenen Avataren und Logos. vendor/ können Sie auslassen, weil composer install es aus composer.lock neu erstellt und storage/ sich selbst regeneriert. Kopieren Sie beide Dateien vom Server weg, denn ein Backup auf dem Rechner, den es schützen soll, ist kein Backup. Für eine Wiederherstellung benötigen Sie eine frische Flarum-Installation derselben Version, composer install, die gespeicherten Dateien an ihrem ursprünglichen Speicherort und die geladene SQL-Datei.
FAQ
Kann Flarum auf einem 1-GB-VPS ausgeführt werden?
Ja, für eine kleine Community. Flarum besteht im Normalbetrieb aus PHP-FPM, das Anfragen verarbeitet, und MariaDB. Mit pm = ondemand existieren die PHP-Worker nur, während jemand die Anwendung verwendet. Der höchste Speicherbedarf entsteht bei der Installation selbst: composer create-project löst den gesamten Abhängigkeitsgraphen im Arbeitsspeicher auf. Dieser Schritt wird am wahrscheinlichsten vom Out-of-Memory-Killer beendet. Legen Sie vor der Installation eine Swap-Datei an. Alternativ können Sie Composer einmal auf einem größeren Rechner ausführen und den Verzeichnisbaum anschließend übertragen.
Warum liefern Diskussionslinks 404, obwohl die Startseite funktioniert?
In Ihrem nginx-Serverblock fehlt include /srv/flarum/.nginx.conf;. Flarum verarbeitet URLs wie /d/1-hello-world innerhalb von PHP. Dieser Pfad ist keine Datei auf dem Datenträger. Ohne die try_files $uri $uri/ /index.php?$query_string-Regel aus dem Snippet sucht nginx nach einem Verzeichnis namens d, schlägt dabei fehl und liefert selbst 404 zurück, ohne PHP aufzurufen. Unter Apache wird dasselbe Routing durch public/.htaccess bereitgestellt. Dieses wird jedoch ignoriert, sofern der <Directory>-Block nicht AllowOverride All festlegt.
Warum hat mein Forum nach der Aktivierung von HTTPS seine gesamte Formatierung verloren?
Flarum speichert seine Basis-URL in config.php. Dieser Wert wird anhand der Adresse übernommen, die Sie bei der Ausführung des Installationsprogramms verwendet haben. Wenn Sie die Installation über HTTP ausgeführt haben, erzeugt Flarum weiterhin http://-URLs für Assets. Der Browser blockiert diese auf einer HTTPS-Seite als gemischte Inhalte. Dadurch wird nur unformatierter Text angezeigt. Ändern Sie den Schlüssel url in /srv/flarum/config.php auf die https://-Adresse. Führen Sie anschließend php flarum cache:clear als Benutzer aus, dem die Dateien gehören.
Warum erhält niemand die Bestätigungs-E-Mail für die Registrierung?
Prüfen Sie zuerst den Mail-Treiber. Der Treiber mail benötigt eine lokale sendmail-Binärdatei, die auf einem frisch eingerichteten Ubuntu-VPS nicht vorhanden ist. Der Treiber log schreibt in storage/logs/ und versendet keine E-Mails. Wechseln Sie zu smtp. Verwenden Sie Port 587 und setzen Sie die Verschlüsselung auf tls, da die meisten Anbieter ausgehenden Datenverkehr über Port 25 blockieren. Klicken Sie anschließend auf Send Test Mail. Wenn das Log einen erfolgreichen Versand anzeigt und die E-Mail trotzdem nicht ankommt, liegt das Problem bei der Zustellbarkeit und nicht bei der Konfiguration. Veröffentlichen Sie daher SPF- und DKIM-Einträge für Ihre Versanddomain.
Sollte ich Flarum 1.8 oder 2.0 installieren?
Installieren Sie 1.8. Im August 2026 ist Flarum 2.0 ein Release Candidate. Noch wichtiger ist, dass viele Erweiterungen weiterhin eine flarum/core-Anforderung deklarieren, die bei 1.x endet. Wenn Sie heute 2.0 installieren, betreiben Sie ein Forum, dessen Erweiterungen nicht gemeinsam aktualisiert werden können. Genau diesen Fehler soll composer why-not diagnostizieren. Setzen Sie die Version mit flarum/flarum:^1.8.0 fest. Prüfen Sie die Situation erneut, sobald die von Ihnen benötigten Erweiterungen Versionen für 2.0 veröffentlicht haben.