Как установить и настроить Flarum на VPS
Если вам нужен форум без раздутой админки phpBB и без тяжеловесности Discourse, Flarum — разумный выбор: он написан на современном PHP, грузится быстро даже на слабом VPS и выглядит как чат, а не как форум из 2008 года. Здесь — рабочий процесс установки с нуля: от чистого сервера до работающего форума с HTTPS и первыми расширениями.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Требования к серверу и версии ПО
Flarum — лёгкий движок, но у него конкретные требования к окружению, и их стоит свести в таблицу, чтобы не гадать на старте.
| Компонент | Минимум | Рекомендуется |
|---|---|---|
| PHP | 8.1 | 8.2 или 8.3 |
| СУБД | MySQL 5.6 / MariaDB 10.0.5 | MariaDB 10.6+ |
| ОЗУ | 512 МБ | 1 ГБ и выше |
| Диск | 5 ГБ | 10+ ГБ (с запасом под аватары и бэкапы) |
| Веб-сервер | Nginx или Apache | Nginx + 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 ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →