Instalacja Flarum na VPS: PHP i MariaDB
Instalacja Flarum 1.x na VPS z PHP, Composerem i MariaDB: tylko /public przez TLS oraz poprawki błędów poczty i aktualizacji rozszerzeń.
Instalacja Flarum na VPS z PHP i MariaDB
Instalacja Flarum na serwerze VPS pozwala uzyskać forum działające w oparciu o PHP i MariaDB, bez konieczności używania Docker, Ruby czy oddzielnego procesora zadań. Jest to główny powód wyboru tego oprogramowania. Instalacja Discourse na VPS oznacza stos Docker zawierający Ruby, PostgreSQL, Redis oraz proces tła, a oficjalny przewodnik instalacji Discourse zaleca 2 GB pamięci RAM (1 GB działa tylko z użyciem swap), zanim dodane zostaną kopie zapasowe lub usługa pocztowa. Discourse uzasadnia takie zapotrzebowanie na zasoby w przypadku dużych społeczności generujących tysiące postów dziennie. Na forum liczącym kilkuset użytkowników jest to infrastruktura, za którą płaci się co miesiąc, nie wykorzystując jej potencjału. Flarum mieści się w stosie PHP, który może być już uruchomiony, więc VPS o pojemności 1 GB z nginx i MariaDB może hostować je obok innych usług. Jeśli wybór nadal pozostaje otwarty, szersze porównanie oprogramowania forum do samodzielnego hostowania obejmuje pozostałe rozwiązania.
Niniejszy przewodnik dotyczy instalacji Flarum w wersji 1.x, obecnie serii 1.8. Flarum 2.0.0 stało się stabilnym wydaniem 9 października 2026 roku, jednak według stanu na 12 października 2026 roku oficjalny przewodnik aktualizacji Flarum wskazuje, że wiele rozszerzeń posiada jedynie wersje beta dla 2.0, a linia 1.x nadal otrzymuje poprawki krytycznych błędów i luk bezpieczeństwa. Rozszerzenia mają w tym przypadku większe znaczenie niż wersja rdzenia, dlatego 1.8 pozostaje bezpieczniejszą wersją dla forum, które jest od nich zależne. Jeśli nie są wymagane rozszerzenia firm trzecich, 2.0 jest bieżącym wydaniem: wymaga ono PHP 8.3 lub nowszego, które jest dostarczane z Ubuntu 24.04, a dokumentacja Flarum instaluje je za pomocą composer create-project flarum/flarum:^2.0.0 .. Poniższe polecenia zostały przygotowane dla wersji 1.8.
Wymagania Flarum 1.8 dla serwera
Dokumentacja Flarum określa wymagania jako PHP 7.3 lub nowszy, MySQL 5.6+ lub MariaDB 10.0.5+ oraz nginx lub Apache z mod_rewrite. Ubuntu 24.04 dostarcza PHP 8.3 oraz MariaDB 10.11, więc pakiety dystrybucyjne spełniają oba wymagania bez konieczności korzystania z zewnętrznych repozytoriów. Flarum 2.0 podnosi te wymagania do PHP 8.3+, MySQL 5.7+ / 8.0.30+ lub MariaDB 10.3+, co również jest zapewnione przez te same pakiety Ubuntu. Rozszerzenia PHP wymagane przez Flarum to curl, dom, fileinfo, gd, json, mbstring, openssl, pdo_mysql, tokenizer oraz zip. Wymagany jest również dostęp do powłoki, ponieważ Composer jest tutaj niezbędny: każde rozszerzenie Flarum jest pakietem Composer i nie ma możliwości dodania go bez uruchomienia narzędzia Composer.
Flarum jest standardową aplikacją PHP. Jeśli na serwerze działa już stos LAMP na Ubuntu 24.04, większość elementów opisanych w dwóch kolejnych sekcjach jest już zainstalowana i można przejść bezpośrednio do sekcji dotyczącej bazy danych.
Instalacja PHP oraz rozszerzeń wymaganych przez Flarum
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 --versionNazwy pakietów nie odpowiadają jeden do jednego liście wymagań Flarum. Rozszerzenie dom znajduje się wewnątrz php8.3-xml, natomiast fileinfo, json, openssl oraz tokenizer są wbudowane w PHP 8.3 na systemie Ubuntu lub są dostarczane wraz z php8.3-common, który jest pobierany przez powyższe pakiety, więc nie wymagają dodatkowej instalacji. Polecenie grep powinno wyświetlić siedem linii: sześć rozszerzeń oraz random, moduł ładowany zawsze przez PHP 8.3, którego nazwa zawiera dom. composer --version powinno wskazywać na wydanie 2.x. Brakujące rozszerzenie należy naprawić natychmiast. Pominięcie php8.3-xml spowoduje, że Composer odmówi instalacji Flarum, ponieważ jedna z zależności deklaruje ext-dom, a komunikat błędu wskaże brakujące rozszerzenie. Istotna linia kończy się w następujący sposób:
require ext-dom * -> it is missing from your system. Install or enable PHP's dom extension.Composer nie weryfikuje jednak wszystkich rozszerzeń z listy Flarum. Biblioteka graficzna używana przez Flarum 1.8 jedynie sugeruje gd, więc serwer bez tego pakietu przejdzie instalację poprawnie, ale zgłosi błąd w momencie, gdy Flarum podejmie próbę przetworzenia przesłanego awatara lub logo.
Należy sprawdzić, czy wersja PHP dla linii komend oraz menedżer procesów FastCGI (PHP-FPM) są identyczne. Composer działa w oparciu o binaria linii komend, podczas gdy forum korzysta z FPM, dlatego php -v oraz sudo php-fpm8.3 -v muszą być zgodne. Wersje te mogą się rozbiec na maszynie, w której zgromadzono kilka wersji PHP z zewnętrznych repozytoriów, co sprawia, że rozszerzenie zainstalowane dla jednej wersji staje się niewidoczne dla drugiej.
Utworzenie bazy danych i dedykowanego użytkownika bazy danych
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;Należy przydzielić Flarum własnego użytkownika bazy danych zamiast root. Przyznane uprawnienie obejmuje flarum.* i nic więcej. Dzięki temu błąd SQL injection w rozszerzeniu, którego nie napisano samodzielnie, nie pozwoli odczytać pozostałych baz danych. Zestaw znaków również ma znaczenie: utf8mb4 prawidłowo przechowuje emoji i skrypty inne niż łaciński, natomiast starsze kodowanie MySQL utf8 używa trzech bajtów i obcina wpis przy pierwszym znaku wymagającym czterech bajtów. Przed przejściem dalej należy potwierdzić, że użytkownik działa.
mariadb -u flarum -p flarum -e 'SELECT DATABASE();'Powinien zostać wyświetlony komunikat flarum. ERROR 1045 (28000): Access denied for user 'flarum'@'localhost' oznacza, że hasło się nie zgadza albo użytkownik został utworzony dla innego hosta niż localhost.
Instalacja Flarum na VPS przy użyciu Composer z przypięciem do wersji 1.8
Najpierw należy utworzyć użytkownika systemowego, który będzie właścicielem kodu. Uruchamianie Composer jako root powoduje, że pliki w vendor/ oraz storage/ stają się własnością root, przez co PHP nie może później zapisać własnej pamięci podręcznej, a forum odpowiada na każde żądanie błędem 500.
sudo useradd --system --home-dir /srv/flarum --shell /bin/bash flarum
sudo install -d -o flarum -g flarum -m 755 /srv/flarum
sudo -iu flarumOstatnie polecenie otwiera powłokę jako użytkownik flarum w katalogu /srv/flarum. Każde polecenie od tego miejsca do końca przewodnika jest wykonywane z tego poziomu, chyba że zaczyna się od sudo.
composer create-project flarum/flarum:^1.8.0 .Ograniczenie ^1.8.0 to przypięcie wersji. Akceptuje ono wydania poprawkowe 1.8.x i odrzuca 2.0, co ma znaczenie teraz, gdy 2.0.0 jest wydaniem stabilnym: bez tego ograniczenia composer create-project zainstaluje wersję 2.0. Composer pobiera szkielet, rozwiązuje flarum/core oraz zależności i pozostawia public/, storage/, vendor/, composer.json oraz skrypt linii poleceń flarum.
Na małym VPS ten krok jest miejscem, w którym proces często kończy się niepowodzeniem, a dwie różne awarie wyglądają podobnie. PHP Fatal error: Allowed memory size of 134217728 bytes exhausted to wewnętrzny limit memory_limit języka PHP, a dodanie COMPOSER_MEMORY_LIMIT=-1 przed poleceniem usuwa to ograniczenie dla pojedynczego uruchomienia. Puste Killed w osobnej linii bez błędu PHP oznacza działanie mechanizmu OOM Killer jądra systemu, co można potwierdzić za pomocą dmesg | tail. Taki przypadek oznacza, że maszynie faktycznie zabrakło pamięci RAM, więc należy dodać swap: zwiększanie limitu PHP pogarsza sytuację, ponieważ PHP zażąda wtedy jeszcze więcej pamięci, zanim jądro przerwie proces.
Dlaczego tylko /public powinno być dostępne z sieci
Katalog główny projektu zawiera config.php z hasłem do bazy danych zapisanym jawnym tekstem, vendor/ ze wszystkimi zależnościami oraz storage/ z dziennikami i buforowanymi sesjami. Żadne z tych danych nie powinny być dostępne w publicznym Internecie. Flarum udostępnia przez sieć wszystkie elementy wymagające dostępu HTTP w jednym podkatalogu, public/, który zawiera index.php, katalog assets/ i niewiele więcej. Ustaw katalog główny serwera WWW na /srv/flarum/public. Wtedy pozostała część drzewa jest z założenia niedostępna przez HTTP, a nie chroniona regułą, o której trzeba pamiętać.
Ustawienie katalogu głównego na /srv/flarum powoduje rzeczywiste zagrożenie. Żądanie /config.php nie zwraca użytecznych danych, ponieważ PHP wykonuje ten plik, a on zwraca tylko tablicę. Jednak /storage/logs/flarum.log ujawnia osobie postronnej ślady stosu i błędy bazy danych, a /composer.lock podaje dokładną wersję każdego używanego pakietu. Jest to lista znanych luk, które można wykorzystać.
Nadaj PHP-FPM własną pulę
Flarum wymaga dostępu do zapisu w trzech ścieżkach: w katalogu głównym projektu, aby instalator mógł utworzyć config.php; w storage/, na logi i pamięć podręczną; oraz w assets/, na przesyłane awatary i logotypy. Pliki należą do użytkownika flarum, dlatego właściwym rozwiązaniem jest pula PHP-FPM uruchamiana jako flarum. nginx nadal działa jako www-data i wykonuje wyłącznie operacje odczytu.
Utwórz /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.sockGniazdo powinno być wyświetlane jako srw-rw---- 1 www-data www-data. Proces główny działa jako root i tworzy gniazdo, dlatego może nadać jego własność użytkownikowi www-data, podczas gdy procesy robocze działają jako flarum. Jeśli gniazdo nie istnieje, sudo journalctl -u php8.3-fpm -n 30 wyświetla wiersz FPM odrzucił. pm = ondemand uruchamia procesy robocze dopiero po nadejściu żądania, dlatego nieaktywne forum zużywa między wizytami niemal żadną pamięć.
Blok server nginx
Flarum dostarcza fragment konfiguracji nginx w katalogu głównym projektu. Nazywa się .nginx.conf. Zawiera regułę przepisywania adresów, nagłówki pamięci podręcznej oraz ustawienia kompresji. Należy go dołączyć zamiast kopiować jego zawartość. Dzięki temu aktualizacja Flarum, która zmieni ten fragment, zostanie uwzględniona na serwerze bez ręcznej edycji konfiguracji.
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;
}
}Należy zapisać konfigurację jako /etc/nginx/sites-available/flarum, a następnie ją włączyć.
sudo ln -s /etc/nginx/sites-available/flarum /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginxnginx -t powinien odpowiadać na syntax is ok i test is successful. Wiersz include jest często pomijany. Jego brak powoduje konkretny objaw: strona główna ładuje się prawidłowo, a każdy odsyłacz do dyskusji zwraca błąd 404 z nginx. Flarum obsługuje adres taki jak /d/1-hello-world w PHP. Ta ścieżka nie wskazuje pliku na dysku. Bez reguły try_files $uri $uri/ /index.php?$query_string z fragmentu konfiguracji nginx szuka katalogu o nazwie d, nie znajduje go i zwraca błąd 404, zanim PHP zostanie wywołane. Apache korzysta z tej samej obsługi routingu z pliku .htaccess znajdującego się już w public/. Zadziała ona tylko wtedy, gdy pasujący blok <Directory> ustawia AllowOverride All.
Dodaj TLS przed uruchomieniem instalatora
Skonfiguruj certyfikat teraz, a nie później. Podczas instalacji Flarum zapisuje własny podstawowy adres URL w config.php. Pobiera ten adres z adresu wyświetlanego w przeglądarce. Jeśli instalacja zostanie wykonana przez http://, każdy adres zasobu generowany później przez Flarum będzie zaczynał się od http://. Po dodaniu TLS (transport layer security) przeglądarka zablokuje te żądania jako mixed content. Forum załaduje się wtedy jako nieostylowany tekst bez JavaScript. Najpierw wykonaj konfigurację certbota dla Let's Encrypt w nginx, potwierdź, że https://forum.example.com wyświetla stronę, a następnie wróć do instalacji.
Jeśli instalacja została już wykonana przez zwykły HTTP, naprawa wymaga jednej zmiany. Edytuj /srv/flarum/config.php, aby klucz url miał wartość 'url' => 'https://forum.example.com',, a następnie uruchom php flarum cache:clear jako użytkownik flarum.
Uruchom instalator i zablokuj plik config.php
Otwórz https://forum.example.com w przeglądarce. Instalator internetowy Flarum poprosi o nazwę bazy danych, nazwę użytkownika bazy danych i utworzone hasło, tytuł forum oraz konto administratora. Zapisze config.php i utworzy tabele. Po zakończeniu zaostrz uprawnienia do pliku, który zawiera teraz hasło do bazy danych.
sudo chmod 640 /srv/flarum/config.phpPlik pozostanie możliwy do odczytu i zapisu dla flarum, czyli użytkownika, z którego konta działa FPM, oraz niedostępny do odczytu dla wszystkich pozostałych kont w systemie. Następnie sprawdź instalację z poziomu powłoki.
php flarum infoPolecenie wyświetla wersję komponentu core, wersję PHP, włączone rozszerzenia, sterownik poczty oraz używane ścieżki. Należy uruchomić je jako pierwsze, gdy coś działa nieprawidłowo. Jest to również pierwsza informacja, o którą poprosi osoba pomagająca w rozwiązaniu problemu.
Dlaczego wiadomości e-mail dotyczące rejestracji i resetowania hasła nie kończą się błędem
Ta sekcja decyduje o tym, czy forum przetrwa pierwszy tydzień. Dwie pierwsze wiadomości e-mail wysyłane przez nowe forum to potwierdzenie rejestracji i wiadomość dotycząca resetowania hasła. Obie są wysyłane dokładnie wtedy, gdy nowy użytkownik ocenia, czy społeczność rzeczywiście działa. Obie mogą zawieść bez żadnego komunikatu. Osoba, która nie otrzymała wiadomości, nie ma jak tego zgłosić, a na panelu administracyjnym nie pojawia się żadne ostrzeżenie.
Flarum udostępnia cztery sterowniki poczty, które można ustawić w sekcji Administration, a następnie Email: smtp, mail, mailgun i log. Należy wybrać smtp i wskazać usługę pocztową, która faktycznie dostarcza wiadomości. Sterownik mail przekazuje wiadomość do lokalnego pliku binarnego sendmail. Pliku tego nie ma w świeżo utworzonej instancji Ubuntu VPS, więc wiadomość nie jest nigdzie dostarczana i nie jest zgłaszany żaden błąd. Sterownik log zapisuje treść wiadomości w storage/logs/ i nie wysyła jej w ogóle, ponieważ służy do programowania.
Należy zapisać ustawienia, a następnie nacisnąć przycisk Send Test Mail na tej samej stronie. Ten przycisk jest jedynym dostępnym mechanizmem weryfikacji, dlatego należy go użyć przed zaproszeniem kogokolwiek. Jeśli wiadomość nie dotrze, należy odczytać dziennik.
tail -n 50 /srv/flarum/storage/logs/flarum.logOdrzucone połączenie, odrzucone logowanie i nieudane uzgadnianie TLS są zapisywane razem z hostem i portem, z którymi nawiązano próbę połączenia. Wiersz zawierający Connection could not be established with host smtp.example.com oznacza, że port jest zablokowany albo nieprawidłowy. Zwykle przyczyną jest domyślne blokowanie wychodzącego portu 25 przez dostawcę. Port 587 z polem szyfrowania ustawionym na tls działa z prawie każdą usługą pocztową.
Gdy poczta nie działa, użytkownik rejestrujący się w forum widzi ogólny baner błędu Flarum: Oops! Something went wrong. Please reload the page and try again., ponieważ podczas wysyłania potwierdzenia występuje błąd żądania. W obu przypadkach użytkownik nie może się zalogować i nie zgłosi tego problemu.
Zaakceptowanie wiadomości przez serwer odbiorcy jest odrębnym problemem od jej wysłania. Wiadomość wysłana z adresu VPS, dla którego nie opublikowano rekordów SPF ani DKIM w domenie, trafi do folderu spamu albo zostanie odrzucona bez komunikatu zwrotnego. W takiej sytuacji dziennik pokazuje pomyślne wysłanie, ale odbiorca nadal niczego nie widzi. Niezawodne wysyłanie poczty z aplikacji hostowanych samodzielnie opisuje, które rekordy DNS należy opublikować i które usługi relay warto wykorzystać.
Rozszerzenia są pakietami Composer, dlatego ich aktualizacja odbywa się za pomocą polecenia
W Flarum rozszerzenie jest pakietem Composer. Nie ma przycisku przesyłania ani pliku zip do umieszczenia w katalogu. Jest to celowa decyzja projektowa: wersje są wzajemnie rozwiązywane, dokładny zestaw jest zapisywany w composer.lock, a biblioteka PHP, od której zależy rozszerzenie, jest instalowana prawidłowo. Ceną jest to, że dodanie rozszerzenia wymaga trzech poleceń wykonywanych jako użytkownik flarum.
composer require 'fof/upload:*'
php flarum migrate
php flarum cache:clearNastępnie należy włączyć rozszerzenie w sekcji Administration, a potem Extensions. Każde polecenie wykonuje odrębne zadanie. composer require umieszcza kod na dysku. php flarum migrate uruchamia migracje bazy danych dostarczone przez rozszerzenie, dzięki czemu może ono utworzyć własne tabele. php flarum cache:clear ponownie buduje skompilowane pakiety JavaScript i CSS ładowane przez przeglądarkę. Pominięcie ostatniego polecenia powoduje typowe nieporozumienie: rozszerzenie jest widoczne na liście, przełącznik jest włączony, ale w przeglądarce nic się nie zmienia, niezależnie od liczby odświeżeń.
Usuwanie rozszerzenia przebiega w odwrotnej kolejności. Najpierw należy wyłączyć je w panelu administracyjnym, a następnie usunąć pakiet. Flarum celowo pozostawia tabele rozszerzenia, aby jego późniejsze ponowne włączenie nie powodowało utraty danych. Aby usunąć również te tabele, należy wycofać migracje rozszerzenia przed usunięciem kodu.
php flarum migrate:reset --extension fof-upload
composer remove fof/upload
php flarum cache:clearIdentyfikator rozszerzenia w tym poleceniu jest nazwą pakietu, w której ukośnik zastąpiono łącznikiem. Jeśli preferowane jest klikanie zamiast wpisywania poleceń, composer require 'flarum/extension-manager:*' dodaje oficjalną stronę administracyjną, która korzysta z Composer. Wykonuje ona te same operacje co użytkownik webowy, wymaga tej samej ilości pamięci i tych samych uprawnień do zapisu oraz kończy działanie z tych samych powodów. Dlatego w przypadku problemów wiersz poleceń pozostaje niezawodną metodą.
Dlaczego composer update odmawia aktualizacji Flarum
Aktualizacja Flarum oraz wszystkich rozszerzeń wymaga wykonania jednego polecenia Composer, a następnie dwóch poleceń Flarum. Wcześniej należy wykonać kopię zapasową bazy danych.
composer update --prefer-dist --no-plugins --no-dev -a --with-all-dependencies
php flarum migrate
php flarum cache:clearNależy przeanalizować wynik polecenia zamiast zakładać, że operacja przebiegła pomyślnie, ponieważ kluczowy przypadek występuje, gdy Composer odmawia wykonania jakichkolwiek zmian:
Your requirements could not be resolved to an installable set of packages.Ten komunikat oznacza, że jedno z zainstalowanych rozszerzeń deklaruje ograniczenie flarum/core, które wyklucza wersję, do której planowana jest migracja. Composer nie naruszy tego ograniczenia, więc utrzymuje całą instalację w starej wersji, zamiast tworzyć kombinację, która według autora rozszerzenia nie będzie działać. Należy zidentyfikować pakiet odpowiedzialny za ten stan.
composer why-not flarum/core 1.8.20Wynik polecenia zawiera listę wszystkich pakietów blokujących daną wersję oraz deklarowane przez nie ograniczenia. Dostępne opcje to oczekiwanie na opublikowanie przez autora kompatybilnego wydania lub usunięcie rozszerzenia i rezygnacja z jego funkcjonalności. Jest to koszt modelu pracy narzędzia Composer, który warto zrozumieć przed zainstalowaniem piętnastu rozszerzeń na forum, z którego korzystają inni użytkownicy. Należy preferować rozszerzenia, które otrzymały niedawno nowe wydanie, oraz ograniczyć ich liczbę do poziomu umożliwiającego bieżącą kontrolę.
Powyższe polecenia utrzymują system w ramach wersji 1.x. Przejście z 1.8 na 2.0 to duża aktualizacja, posiadająca własny przewodnik w dokumentacji Flarum: wymaga ona PHP 8.3, edycji pliku composer.json, zmiany driver w config.php dla instalacji opartych na MariaDB oraz usunięcia każdego rozszerzenia, które nie posiada wersji dla wydania 2.0.
Co należy uwzględnić w kopii zapasowej
Należy wykonać kopię zapasową bazy danych i katalogu projektu. Wszystkie pozostałe elementy można odtworzyć.
mariadb-dump -u flarum -p --single-transaction flarum > flarum-$(date +%F).sql
sudo tar czf flarum-files.tgz -C /srv flarumW starszych systemach mariadb-dump nosi nazwę mysqldump; w Ubuntu 24.04 działają obie nazwy. Baza danych zawiera wszystkie wpisy, wszystkich użytkowników i wszystkie ustawienia. Katalog projektu zawiera config.php, composer.json (który jest rzeczywistym wykazem używanych rozszerzeń) oraz assets/ z przesłanymi awatarami i logo. Można pominąć vendor/, ponieważ composer install odtwarza go na podstawie composer.lock, a storage/ generuje się ponownie automatycznie. Oba pliki należy skopiować poza serwer, ponieważ kopia zapasowa przechowywana na chronionej przez nią maszynie nie jest kopią zapasową. Odtwarzanie wymaga nowej instalacji Flarum w tej samej wersji, composer install, przywrócenia zapisanych plików na miejsce oraz zaimportowania pliku SQL.
FAQ
Czy Flarum może działać na VPS z 1 GB pamięci RAM?
Tak, w przypadku małej społeczności. Flarum w normalnym trybie pracy to PHP-FPM obsługujący żądania oraz MariaDB, a dzięki pm = ondemand procesy PHP istnieją tylko wtedy, gdy ktoś przegląda forum. Największe obciążenie występuje podczas samej instalacji: composer create-project rozwiązuje cały graf zależności w pamięci operacyjnej i jest to etap, w którym najczęściej dochodzi do przerwania procesu przez mechanizm out-of-memory killer. Przed instalacją należy dodać plik wymiany (swap) lub uruchomić Composer na mocniejszej maszynie i skopiować gotowe drzewo plików.
Dlaczego linki do dyskusji zwracają błąd 404, mimo że strona główna działa?
W bloku serwera nginx brakuje include /srv/flarum/.nginx.conf;. Flarum obsługuje adresy URL, takie jak /d/1-hello-world, wewnątrz PHP, a ścieżka ta nie jest fizycznym plikiem na dysku. Bez reguły try_files $uri $uri/ /index.php?$query_string z tego fragmentu konfiguracji, nginx szuka katalogu o nazwie d, nie znajduje go i zwraca błąd 404, nie przekazując żądania do PHP. W przypadku Apache za to samo routowanie odpowiada public/.htaccess, które jest ignorowane, chyba że blok <Directory> ma ustawione AllowOverride All.
Dlaczego forum straciło wszystkie style po włączeniu HTTPS?
Flarum przechowuje swój bazowy adres URL w config.php, pobrany podczas instalacji. Jeśli instalacja odbyła się przez zwykłe HTTP, Flarum nadal generuje adresy zasobów z przedrostkiem http://, a przeglądarka blokuje je jako treść mieszaną (mixed content) na stronie HTTPS, co skutkuje wyświetleniem tekstu bez stylów. Należy zmienić wartość klucza url w pliku /srv/flarum/config.php na adres https:// i uruchomić php flarum cache:clear jako użytkownik będący właścicielem plików.
Dlaczego nikt nie otrzymuje e-maila z potwierdzeniem rejestracji?
W pierwszej kolejności należy sprawdzić sterownik poczty. Sterownik mail wymaga lokalnego pliku binarnego sendmail, którego świeży VPS z Ubuntu nie posiada, a sterownik log zapisuje wiadomości do storage/logs/ i nigdzie ich nie wysyła. Należy przełączyć się na smtp, użyć portu 587 z szyfrowaniem ustawionym na tls, ponieważ większość dostawców blokuje wychodzący port 25, a następnie nacisnąć Send Test Mail. Jeśli dziennik wskazuje na poprawne wysłanie, a wiadomość nadal nie dociera, problem leży po stronie dostarczalności, a nie konfiguracji – należy opublikować rekordy SPF i DKIM dla domeny nadawcy.
Czy zainstalować Flarum 1.8 czy 2.0?
Jeśli forum zależy od rozszerzeń firm trzecich, na razie należy zainstalować wersję 1.8. Flarum 2.0.0 stało się wydaniem stabilnym 9 października 2026 roku, jednak według stanu na 12 października 2026 roku przewodnik aktualizacji Flarum wskazuje, że wiele rozszerzeń posiada jedynie wersje beta dla 2.0, a każde rozszerzenie bez wydania 2.0 deklaruje ograniczenie flarum/core, które kończy się na wersji 1.x. Instalacja 2.0 dzisiaj oznacza, że Composer odrzuci takie rozszerzenia, co jest tym samym konfliktem zależności, który pomaga zdiagnozować composer why-not. Należy pozostać przy wersji 1.x z flarum/flarum:^1.8.0 i przejść na 2.0 zgodnie z przewodnikiem aktualizacji Flarum, gdy używane rozszerzenia otrzymają stabilne wersje 2.0. Należy pamiętać, że wersja 1.x otrzymuje obecnie tylko poprawki krytycznych błędów i luki bezpieczeństwa. Forum, które nie wymaga żadnych zewnętrznych rozszerzeń, może rozpocząć pracę na 2.0 już dziś za pomocą flarum/flarum:^2.0.0.