MAATRIX / Блог / Flarum на Ubuntu 24.04: пошаговая установка

Flarum на Ubuntu 24.04: пошаговая установка

MAATRIX

Классические форумные движки вроде phpBB и vBulletin выглядят и работают как привет из 2008 года — тяжёлая вёрстка, медленные страницы, неудобная админка. Flarum сделан по-другому: это одностраничное приложение на PHP и Mithril.js, которое грузит форум целиком за один запрос и дальше работает без перезагрузок, как мессенджер. Ниже — рабочая установка с нуля на чистом сервере Ubuntu 24.04: PHP 8.3, MySQL, Nginx и SSL, без панелей управления и лишних абстракций.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Что понадобится и почему именно так

Flarum — довольно скромный по требованиям проект, но у него специфичные зависимости, которые стоит закрыть заранее, чтобы не ловить непонятные ошибки composer'а на середине установки.

Минимальный набор:

  • Ubuntu 24.04 LTS, 1 vCPU / 1 GB RAM хватает для старта, от 2 GB — комфортнее под composer install;
  • PHP 8.2 или 8.3 (в Ubuntu 24.04 в стандартных репозиториях идёт 8.3 — это и берём) с расширениями curl, dom, mbstring, gd, json, openssl, pdo_mysql, tokenizer, zip, intl, fileinfo;
  • MySQL 8 или MariaDB 10.6+;
  • Nginx как веб-сервер (у Flarum нет собственного приложения-сервера, всё через PHP-FPM);
  • Composer — Flarum ставится и обновляется через него, а не через git clone;
  • домен с A-записью на IP сервера — без него не получится честного SSL от Let's Encrypt.

Свежий сервер под такую задачу проще взять сразу с нужной конфигурацией и IP в нужной локации — под русскоязычный форум обычно логичнее RU или европейская площадка по задержке до аудитории.

Подготовка сервера: система и PHP

Сначала обновляем систему и ставим базовые пакеты:

apt update && apt upgrade -y
apt install -y software-properties-common curl unzip git

PHP 8.3 из стандартного репозитория Ubuntu 24.04 обычно уже доступен, но для контроля версий и своевременных апдейтов удобнее подключить PPA Ondřej Surý:

add-apt-repository ppa:ondrej/php -y
apt update

Ставим PHP-FPM и все нужные расширения одной командой:

apt install -y php8.3-fpm php8.3-cli php8.3-curl php8.3-dom \
  php8.3-mbstring php8.3-gd php8.3-mysql php8.3-zip \
  php8.3-intl php8.3-xml php8.3-bcmath

Проверяем, что FPM поднялся:

systemctl status php8.3-fpm

Полезно сразу поднять лимиты в /etc/php/8.3/fpm/php.ini — форумы с картинками и загрузкой файлов быстро упираются в дефолты:

upload_max_filesize = 20M
post_max_size = 20M
memory_limit = 256M
max_execution_time = 120

После правки перезапускаем FPM:

systemctl restart php8.3-fpm

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Composer и загрузка Flarum

Composer нужен не только для установки, но и для последующих обновлений форума и плагинов — держите его в актуальном виде.

curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
chmod +x /usr/local/bin/composer
composer --version

Теперь создаём проект форума. Официальный способ — через composer create-project, он сам подтягивает актуальный релиз Flarum со всеми зависимостями:

mkdir -p /var/www
cd /var/www
composer create-project flarum/flarum forum

Команда скачает ядро Flarum и базовые пакеты в /var/www/forum. Процесс может занять пару минут — composer резолвит довольно большое дерево зависимостей.

Выставляем владельца в пользу пользователя, от которого работает PHP-FPM (обычно www-data):

chown -R www-data:www-data /var/www/forum
find /var/www/forum -type d -exec chmod 755 {} \;
find /var/www/forum -type f -exec chmod 644 {} \;

База данных MySQL

Ставим сервер MySQL, если его ещё нет на сервере (подробный разбор установки и тюнинга — в отдельной статье про MySQL на Ubuntu 24.04):

apt install -y mysql-server
mysql_secure_installation

Создаём отдельную базу и пользователя под форум — не заводите Flarum под root от MySQL, это плохая практика даже для одного проекта на сервере:

CREATE DATABASE flarum CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'flarum_user'@'localhost' IDENTIFIED BY 'СЮДА_СЛОЖНЫЙ_ПАРОЛЬ';
GRANT ALL PRIVILEGES ON flarum.* TO 'flarum_user'@'localhost';
FLUSH PRIVILEGES;

Кодировка utf8mb4 обязательна — иначе эмодзи и часть юникода в постах будут ломаться или обрезаться.

Веб-установщик Flarum

Flarum настраивается через собственный веб-мастер, а не через ручную правку конфигов — но для этого сначала нужен рабочий Nginx с проксированием на PHP-FPM.

Ставим Nginx:

apt install -y nginx

Конфиг сайта /etc/nginx/sites-available/forum.example.com:

server {
    listen 80;
    server_name forum.example.com;
    root /var/www/forum/public;
    index index.php;

    client_max_body_size 20M;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff2?)$ {
        expires 30d;
        access_log off;
    }

    location ~ /\.ht {
        deny all;
    }
}

Обратите внимание: root указывает на public, а не на корень проекта — Flarum, как и большинство современных PHP-приложений, отдаёт наружу только эту папку, всё остальное закрыто от прямого доступа.

Активируем сайт и проверяем конфиг:

ln -s /etc/nginx/sites-available/forum.example.com /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx

Если конфиг Nginx когда-нибудь откажется применяться после правки — типовые причины разобраны в статье про ошибки Nginx после правки конфига.

Открываем в браузере http://forum.example.com — должен появиться веб-установщик Flarum. Он проверит расширения PHP, попросит данные базы (хост localhost, имя flarum, пользователь и пароль, которые вы создали выше) и данные администратора форума. После завершения мастер сам создаёт файл config.php в корне проекта.

SSL-сертификат

Форум без HTTPS в 2026 году — плохая идея и по безопасности, и по SEO. Ставим Certbot и получаем сертификат Let's Encrypt:

apt install -y certbot python3-certbot-nginx
certbot --nginx -d forum.example.com

Certbot сам допишет блок listen 443 ssl в конфиг Nginx и настроит редирект с 80 на 443. Автообновление сертификата уже включено через systemd-таймер, проверить его можно так:

systemctl status certbot.timer

Если сертификат позже перестанет обновляться сам — разберитесь по чек-листу в статье «Let's Encrypt сертификат не обновляется автоматически». Общая логика получения и продления сертификатов на VPS расписана в материале про настройку Let's Encrypt SSL.

После установки сертификата зайдите в админку Flarum (/admin) и в разделе Basics поменяйте Base URL на https://forum.example.com — если этого не сделать, форум продолжит генерировать ссылки на http и браузер будет ругаться на смешанный контент.

Планировщик задач и фоновые очереди

Flarum использует очереди для отправки email-уведомлений, обработки изображений и некоторых плагинов — без настроенного крона они просто копятся необработанными. Добавьте задачу в cron пользователя www-data:

crontab -u www-data -e

И впишите строку, которая раз в минуту прогоняет очередь:

* * * * * php /var/www/forum/flarum queue:work --once >> /dev/null 2>&1

Такой вариант с --once безопаснее долгоживущего queue:work без флага — процесс не накапливается и не съедает память при большом потоке уведомлений на небольшом VPS.

Обновление и бэкапы

Flarum обновляется через тот же composer, которым вы его ставили — не через git pull и не вручную поверх файлов:

cd /var/www/forum
composer update
php flarum migrate
php flarum cache:clear

Перед любым обновлением обязательно снимайте дамп базы и копию каталога — плагины сторонних разработчиков иногда ломаются на новых минорных версиях ядра:

mysqldump -u flarum_user -p flarum > /root/flarum_backup_$(date +%F).sql
tar -czf /root/flarum_files_$(date +%F).tar.gz /var/www/forum

Если хотите, чтобы бэкапы MySQL снимались сами по расписанию, а не «когда вспомнил» — механику ротации и автоматизации смотрите в статье про бэкап MySQL на сервере.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.

Частые вопросы

Можно ли поставить Flarum через панель управления вроде aaPanel или ISPmanager?

Технически да — Flarum умеет работать под любой панелью, где есть PHP 8.2+ и MySQL, но веб-установщик всё равно нужно будет пройти вручную через браузер, панель этот шаг за вас не сделает.

Flarum поддерживает PostgreSQL?

Официально и стабильно — только MySQL/MariaDB. Поддержка PostgreSQL существует в виде стороннего расширения, но для продакшена это не рекомендуемый путь, лучше не рисковать.

Почему после установки не приходят email-уведомления?

Чаще всего дело в двух местах: не настроен SMTP в разделе Mail админки (по умолчанию используется php mail(), который на большинстве VPS просто не работает без дополнительной настройки) или не запущен cron для очередей, описанный выше.

Хватит ли самого дешёвого VPS с 1 GB RAM?

Для форума с небольшой и средней посещаемостью — да, ядро Flarum лёгкое. Узкое место обычно не оперативная память, а лимиты composer install/update на слабом CPU и диске — если сборка зависимостей регулярно виснет, есть смысл подрасти по тарифу хотя бы на время апдейтов.

Как перенести уже работающий форум на новый сервер?

Копируете весь каталог проекта (включая .env-подобный config.php и папку storage), переносите дамп базы через mysqldump/mysql, поднимаете тот же стек PHP-FPM + Nginx и меняете DNS. Дополнительно ничего пересоздавать не нужно — Flarum не привязан к конкретному пути жёстко, если пути в config.php актуальны.

Обязательно ли использовать Nginx, а не Apache?

Нет, Flarum одинаково хорошо работает и под Apache с mod_php или PHP-FPM через mod_proxy_fcgi — Nginx выбран здесь как более лёгкий и предсказуемый вариант для одного PHP-приложения на сервере.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →