MAATRIX / Блог / Как установить и настроить Flarum на VPS

Как установить и настроить Flarum на VPS

MAATRIX

Если вам нужен форум без раздутой админки phpBB и без тяжеловесности Discourse, Flarum — разумный выбор: он написан на современном PHP, грузится быстро даже на слабом VPS и выглядит как чат, а не как форум из 2008 года. Здесь — рабочий процесс установки с нуля: от чистого сервера до работающего форума с HTTPS и первыми расширениями.

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

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

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

Требования к серверу и версии ПО

Flarum — лёгкий движок, но у него конкретные требования к окружению, и их стоит свести в таблицу, чтобы не гадать на старте.

КомпонентМинимумРекомендуется
PHP8.18.2 или 8.3
СУБДMySQL 5.6 / MariaDB 10.0.5MariaDB 10.6+
ОЗУ512 МБ1 ГБ и выше
Диск5 ГБ10+ ГБ (с запасом под аватары и бэкапы)
Веб-серверNginx или ApacheNginx + PHP-FPM

Обязательные PHP-расширения: curl, dom, mbstring, gd, json, openssl, pdo_mysql, tokenizer, zip, fileinfo, intl, exif, xml. Без intl и exif установщик Flarum пройдёт, но некоторые расширения потом откажутся работать — лучше поставить сразу все.

Для теста форума на 100–500 активных пользователей хватит 1 vCPU и 1 ГБ RAM. Если планируете сообщество с несколькими тысячами участников и активной загрузкой файлов — закладывайте 2 vCPU и 2–4 ГБ RAM с запасом под MariaDB и кэш.

Дальше всё показано на чистом Ubuntu 24.04, но шаги почти идентичны для Debian 12.

Подготовка VPS: PHP, Composer, MariaDB

Обновите систему и поставьте базовый набор пакетов:

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

Добавьте репозиторий Ondřej Surý для свежего PHP и поставьте PHP 8.3 с нужными расширениями:

add-apt-repository ppa:ondrej/php -y
apt update
apt install -y php8.3-fpm php8.3-cli php8.3-mysql php8.3-curl \
  php8.3-gd php8.3-mbstring php8.3-xml php8.3-zip php8.3-intl \
  php8.3-exif php8.3-bcmath

Проверьте версию:

php -v

Поставьте Composer (пакетный менеджер PHP, через него ставится и обновляется сам Flarum):

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

Установите MariaDB и запустите базовую защиту:

apt install -y mariadb-server
mysql_secure_installation

На вопросы mysql_secure_installation отвечайте: удалить анонимных пользователей — да, запретить удалённый вход root — да, удалить тестовую БД — да, перечитать привилегии — да. Это закрывает самые очевидные дыры сразу после установки.

Поставьте Nginx:

apt install -y nginx
systemctl enable --now nginx php8.3-fpm mariadb

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

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

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

Установка Flarum и настройка базы данных

Создайте отдельную базу и пользователя — не используйте root для приложения:

mysql -u root -p
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;
EXIT;

Создайте каталог под сайт и разверните Flarum через Composer — это единственный поддерживаемый способ установки, скачивать zip-архив с GitHub не нужно:

mkdir -p /var/www/flarum
cd /var/www/flarum
composer create-project flarum/flarum . --stability=beta

Composer подтянет ядро, зависимости и базовый набор официальных расширений (упоминания, лайки, теги подписки и т.д.). Процесс займёт пару минут в зависимости от скорости сети до packagist.org.

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

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

Каталог storage должен оставаться доступным на запись веб-серверу постоянно — туда пишутся логи, кэш и загруженные файлы.

Nginx и PHP-FPM для Flarum

Создайте конфиг виртуального хоста:

nano /etc/nginx/sites-available/flarum
server {
    listen 80;
    server_name forum.example.com;
    root /var/www/flarum/public;
    index index.php;

    client_max_body_size 20M;

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

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
        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 ~ /\.(?!well-known) {
        deny all;
    }
}

Замените forum.example.com на реальный домен и убедитесь, что его A-запись уже указывает на IP вашего VPS — без этого Let's Encrypt на следующем шаге не выдаст сертификат. Активируйте сайт и проверьте конфиг:

ln -s /etc/nginx/sites-available/flarum /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx

Обратите внимание на client_max_body_size — стандартный лимит nginx в 1 МБ слишком мал для загрузки аватаров и вложений, 20 МБ — разумный старт, который потом можно поднять.

HTTPS через Let's Encrypt и завершение мастера установки

Поставьте certbot и получите сертификат:

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

Certbot сам допишет блок listen 443 ssl и настроит редирект с 80 на 443. Если хотите более детально разобраться в механике выпуска и продления сертификатов, у нас есть отдельный разбор — Let's Encrypt SSL на VPS.

Теперь откройте https://forum.example.com в браузере — вы попадёте в веб-установщик Flarum. Он спросит:

  • название форума и базовый URL (должен совпадать с реальным доменом, иначе будут проблемы со ссылками и ассетами);
  • параметры подключения к БД — хост localhost, имя базы flarum, пользователь flarum_user и пароль, заданные на шаге выше;
  • логин, email и пароль администратора форума.

После завершения мастер сам пропишет config.php в корне и удалит доступ к установщику. Если что-то пошло не так и нужно переустановить с нуля — просто удалите config.php и повторите процесс, данные в БД при этом останутся, так что для чистого старта стоит предварительно очистить и таблицы.

Проверьте права ещё раз после установки — мастер мог создать новые файлы от имени www-data, но лучше перестраховаться:

chown -R www-data:www-data /var/www/flarum

Расширения, очередь задач и бэкапы

Расширения в Flarum ставятся через Composer, а не загрузкой архивов — это одно из главных отличий от WordPress-подхода, к которому многие привыкли. Например, чтобы поставить расширение с поддержкой Markdown-редактора:

cd /var/www/flarum
composer require flarum/markdown
php flarum cache:clear

Включаются и настраиваются расширения в панели администратора по адресу /admin — там же управление темами, локализацией (есть официальный русский перевод) и правами групп пользователей.

Часть расширений (отправка почты, обработка очереди уведомлений) работает эффективнее через очередь задач, а не синхронно при каждом запросе. Настройте cron:

crontab -e -u www-data
* * * * * php /var/www/flarum/flarum schedule:run >> /dev/null 2>&1

Это тот же принцип, что и у Laravel-приложений — если раньше настраивали cron для похожих задач, ничего нового здесь нет.

Резервные копии — это дамп базы и содержимое storage (там лежат загруженные аватары и файлы). Простой скрипт для ежедневного бэкапа:

mysqldump -u flarum_user -p flarum > /root/backups/flarum_$(date +%F).sql
tar -czf /root/backups/flarum_storage_$(date +%F).tar.gz /var/www/flarum/storage

Более развёрнутый подход к автоматизации бэкапов MySQL-баз описан в статье про бэкап MySQL на VPS — там же нюансы ротации и хранения вне сервера.

Если форум начнёт расти и станет заметен из внешней сети, стоит закрыть базовые точки входа — SSH по ключу вместо пароля и fail2ban против перебора: см. SSH-ключи вместо пароля на VPS и Fail2ban на VPS.

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

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

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

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

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

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

Flarum подходит для форума с десятками тысяч сообщений?

Да, движок написан с расчётом на масштабирование — узкое место обычно не сам Flarum, а конфигурация MariaDB и объём диска под вложения. При росте нагрузки в первую очередь смотрите на индексы БД и кэш OPcache для PHP.

Можно ли перенести форум с phpBB или vBulletin на Flarum?

Готовых официальных импортёров из коробки нет, но сообщество поддерживает сторонние скрипты миграции для нескольких популярных движков — перед переездом стоит проверить актуальность конкретного скрипта под вашу версию исходного форума и обязательно снять бэкап до начала переноса.

Нужен ли Redis для нормальной работы?

Нет, по умолчанию Flarum использует файловый кэш и БД для очереди, этого достаточно для большинства проектов. Redis имеет смысл добавить, когда форум растёт и файловый кэш становится узким местом на дисковых операциях.

Что делать, если после установки не грузятся стили или иконки?

Почти всегда это неверный базовый URL, указанный в мастере установки, либо права на storage/cache — если веб-сервер не может туда писать, ассеты не пересобираются. Проверьте config.php на предмет правильного url и права на каталог storage.

Можно ли ставить платные (premium) расширения через Composer так же, как бесплатные?

Да, разработчики платных расширений обычно выдают приватный репозиторий или токен для Composer — команда установки та же, composer require, отличается только источник пакета.

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

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

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