Установка Flarum на Ubuntu 24.04 — пошаговое руководство

О чём это руководство
Это полное пошаговое руководство по установке Flarum — лёгкой, расширяемой системы форума на PHP с фронтом на Mithril. Мы пройдём все этапы от подготовки сервера до включения двухфакторной аутентификации, настройки отправки почты и обновления. Подойдёт для личных проектов и небольших сообществ.
В статье вы найдёте:
- минимальные требования и подготовку сервера;
- команды для установки Nginx, PHP, Composer и MariaDB;
- настройку Certbot для SSL;
- конфигурации Nginx и PHP-FPM, безопасные практики;
- инструкции по установке расширений (2FA, Extension Manager);
- инструкции по резервному копированию и восстановлению;
- дополнительные материалы: чеклисты, runbook восстановления, рекомендации по безопасности и дерево принятия решений.
Основные варианты использования (primary intent)
- установка Flarum на Ubuntu 24.04
- развёртывание Flarum на VPS
- настройка HTTPS и PHP-FPM для Flarum
Требования
- Сервер с Ubuntu 24.04 (x86_64).
- Нерoot-пользователь с правами sudo.
- Полное доменное имя (FQDN), например flarum.example.com, указывающее на сервер.
- Если RAM = 1 ГБ, убедитесь, что включена swap-память.
- Подключение к интернету для загрузки пакетов и сертификатов.
Прежде чем начать, обновите пакеты:
$ sudo apt update && sudo apt upgrade -yУстановите необходимые утилиты (часть пакетов может быть уже установлена):
$ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -yШаг 1 — Настройка брандмауэра (ufw)
Проверьте статус ufw:
$ sudo ufw statusЕсли статус inactive, откройте SSH перед включением, чтобы не потерять доступ:
$ sudo ufw allow OpenSSH
$ sudo ufw allow http
$ sudo ufw allow https
$ sudo ufw enableПроверьте статус снова:
$ sudo ufw statusВы увидите правила для OpenSSH, 80 и 443.
Важно: если вы используете нестандартный SSH-порт, открывайте именно его.
Шаг 2 — Установка Nginx (официальный репозиторий)
Ubuntu 24.04 может поставляться со старой версией Nginx. Чтобы установить актуальную стабильную версию, добавим официальный репозиторий Nginx.
Импорт ключа подписи:
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/nullДобавьте репозиторий стабильной ветки:
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.listНастройте pinning, чтобы приоритет был у официального репозитория:
$ echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \
| sudo tee /etc/apt/preferences.d/99nginxОбновите и установите Nginx:
$ sudo apt update
$ sudo apt install nginx -yПроверьте версию и статус:
$ nginx -v
$ sudo systemctl start nginx
$ sudo systemctl status nginxЕсли всё успешно, откройте IP-адрес сервера в браузере — вы увидите страницу по умолчанию Nginx.

ALT: Стандартная страница приветствия Nginx после установки на сервер
Шаг 3 — Установка PHP и расширений
Flarum требует PHP 8.1+; Ubuntu 24.04 поставляется с PHP 8.3. Установим PHP-FPM и необходимые расширения:
$ sudo apt install php-cli php-fpm php-mysql php-xml php-gd php-json php-mbstring php-zip php-curl -yЕсли вы хотите управлять несколькими версиями PHP или получать более свежие сборки, можно добавить PPA Ondřej Surý:
$ sudo add-apt-repository ppa:ondrej/php
$ sudo apt update
$ sudo apt install php8.3-cli php8.3-fpm php8.3-mysql php8.3-xml php8.3-gd php8.3-mbstring php8.3-zip php8.3-curl -yПроверьте версию PHP:
$ php --versionШаг 4 — Установка Composer
Composer — менеджер зависимостей PHP, необходим для установки Flarum и расширений.
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ php -r "if (hash_file('sha384', 'composer-setup.php') === 'dac665fdc30fdd8ec78b38b9800061b4150413ff2e3b6f88543c636f7cd84f6db9189d43a81e5503cda447da73c7e5b6') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
$ php composer-setup.php
$ php -r "unlink('composer-setup.php');"
$ sudo mv composer.phar /usr/local/bin/composerПроверьте установку:
$ composer --versionПримечание: хеш установщика может обновляться в будущем. Проверяйте официальную страницу Composer при необходимости.
Шаг 5 — Установка MariaDB
MariaDB — совместимая замена MySQL. Для стабильности можно подключить официальный репозиторий MariaDB.
Импорт ключа:
$ sudo curl -o /etc/apt/keyrings/mariadb-keyring.pgp 'https://mariadb.org/mariadb_release_signing_key.pgp'Добавьте репозиторий (пример для ветки 10.11):
$ echo "deb [signed-by=/etc/apt/keyrings/mariadb-keyring.pgp] https://deb.mariadb.org/10.11/ubuntu `lsb_release -cs` main" | sudo tee /etc/apt/sources.list.d/mariadb-server.list
$ sudo apt update
$ sudo apt install mariadb-server -yПроверьте версию и статус:
$ mysql --version
$ sudo systemctl status mariadbЗапустите скрипт безопасности:
$ sudo mariadb-secure-installationСледуйте подсказкам. Если запрашивает текущий пароль root и его нет — нажмите Enter. По умолчанию рекомендуют ответить “y” (да) на удаление анонимных пользователей, отключение удалённого входа root и удаление тестовой базы.
Шаг 6 — Подготовка базы данных для Flarum
Выполните вход в MariaDB и создайте базу/пользователя:
$ sudo mysql
MariaDB> CREATE DATABASE flarum;
MariaDB> CREATE USER 'flarumuser'@'localhost' IDENTIFIED BY 'yourpassword';
MariaDB> GRANT ALL PRIVILEGES ON flarum.* TO 'flarumuser'@'localhost';
MariaDB> GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
MariaDB> FLUSH PRIVILEGES;
MariaDB> exitЗамените flarum, flarumuser и yourpassword на свои значения. Выберите надёжный пароль.
Важно: аккаунт admin с глобальными привилегиями нужен не всегда; в продакшне лучше ограничить права.
Шаг 7 — Установка Flarum
Создайте папку для сайта и установите Flarum через Composer:
$ sudo mkdir -p /var/www/flarum
$ sudo chown -R $USER:$USER /var/www/flarum
$ sudo chmod 775 -R /var/www/flarum
$ cd /var/www/flarum
$ composer create-project flarum/flarum .После установки смените владельца на nginx (или www-data, если вы используете другой пользователь веб-сервера):
$ sudo chown -R nginx:nginx /var/www/flarumЕсли вы предпочитаете запускать Composer от своего пользователя, добавьте пользователя в группу nginx:
$ sudo usermod -a -G nginx $USER
$ su - ${USER}Это даст возможность работать с файлами без постоянного sudo.
Шаг 8 — SSL: Certbot и Let’s Encrypt
Рекомендовано защищать форум HTTPS. Установим Certbot из snap и запросим сертификат для домена.
$ sudo snap install core && sudo snap refresh core
$ sudo snap install --classic certbot
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
$ certbot --versionЗапрос сертификата для Nginx (замените email и домен):
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d flarum.example.comЭто создаст сертификаты в /etc/letsencrypt/live/flarum.example.com.
Создайте параметры Diffie-Hellman (dhparam) для повышения безопасности TLS:
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096Проверьте автопродление:
$ sudo systemctl list-timers
$ sudo certbot renew --dry-runЕсли dry-run прошёл успешно, сертификаты будут автоматически обновляться.
Шаг 9 — Настройка PHP-FPM
Откройте пул PHP-FPM и установите пользователя/группу nginx для процессов (файл для PHP 8.3):
$ sudo nano /etc/php/8.3/fpm/pool.d/www.confНайдите и измените:
user = nginx
group = nginx
listen.owner = nginx
listen.group = nginxУвеличьте upload_max_filesize до 8M:
$ sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 8M/' /etc/php/8.3/fpm/php.iniПерезапустите сервис и измените группу каталога сессий PHP:
$ sudo systemctl restart php8.3-fpm
$ sudo chgrp -R nginx /var/lib/php/sessionsШаг 10 — Конфигурация Nginx для Flarum
Создайте файл конфигурации сайта:
$ sudo nano /etc/nginx/conf.d/flarum.confВставьте (замените flarum.example.com на ваш домен):
server {
listen [::]:80;
listen 80;
server_name flarum.example.com;
# redirect http to https
return 301 https://flarum.example.com$request_uri;
}
server {
listen [::]:443 ssl;
listen 443 ssl;
http2 on;
server_name flarum.example.com;
access_log /var/log/nginx/flarum.access.log;
error_log /var/log/nginx/flarum.error.log;
root /var/www/flarum/public;
index index.php;
include /var/www/flarum/.nginx.conf;
client_max_body_size 8M;
if ($host != "flarum.example.com") {
return 301 $scheme://flarum.example.com$request_uri;
}
# SSL code
ssl_certificate /etc/letsencrypt/live/flarum.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/flarum.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/flarum.example.com/chain.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_prefer_server_ciphers off;
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001] 8.8.8.8 8.8.4.4 [2001:4860:4860::8888] [2001:4860:4860::8844] valid=60s;
resolver_timeout 2s;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
tcp_nopush on;
types_hash_max_size 2048;
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
include fastcgi_params;
}
}Добавьте строку в /etc/nginx/nginx.conf перед include /etc/nginx/conf.d/*.conf;:
server_names_hash_bucket_size 64;Проверьте конфигурацию и перезагрузите Nginx:
$ sudo nginx -t
$ sudo systemctl reload nginxШаг 11 — Доступ к установщику Flarum и завершение
Откройте https://flarum.example.com (или http если ещё не редиректите) и завершите установку через веб-интерфейс.

ALT: Форма установки Flarum в браузере для ввода базы данных и учётных данных администратора
Заполните поля базы данных ранее созданными параметрами. Оставьте префикс таблиц пустым или укажите свой (например flr_). Выберите имя администратора, пароль и email.
После завершения вы увидите домашнюю страницу форума.

ALT: Стартовая страница установленного Flarum с темой по умолчанию
Включение 2FA
Двухфакторная аутентификация повышает безопасность учётных записей. Flarum не включает её по умолчанию, но есть расширения.
Установим расширение 2FA (пример):
$ cd /var/www/flarum
$ composer require ianm/twofactor:"*"Затем включите расширение через админ-панель: Нажмите имя вверху справа -> Администрирование -> Расширения -> включите 2FA.

ALT: Меню пользователя с ссылкой на администрирование форума
Если хотите обязать модераторов использовать 2FA, включите параметр «2FA required» в настройках модов.
Процесс активации 2FA для пользователя: переход в Настройки -> Безопасность -> Включить 2FA -> сканируете QR-код и вводите код из приложения (Google Authenticator, Authy и т.д.). Сохраните резервные коды.

ALT: Страница профиля пользователя с настройками безопасности и опцией включения 2FA
Настройка почты
Перейдите в Администрирование -> Почта. Flarum поддерживает smtp и Mailgun. Для примера с Amazon SES выберите smtp, заполните хост, порт, логин и пароль.
Если требуется клиент HTTP (например для некоторых драйверов), установите Guzzle:
$ cd /var/www/flarum
$ composer require guzzlehttp/guzzle:^7.0Отправьте тестовое письмо через интерфейс настроек.
Шаг 12 — Обновление Flarum и расширений
Для обновлений из админ-панели установите Extension Manager:
$ cd /var/www/flarum
$ composer require flarum/extension-manager:*Включите Extension Manager в панели администратора. Перед обновлением поставьте форум в режим офлайн: откройте /var/www/flarum/config.php и добавьте
'offline' => true,после этого используйте Extension Manager для поиска и установки обновлений.
Резервное копирование и восстановление
Самый простой способ бэкапа — сохранить дамп базы и файлы сайта.
Создание дампа:
$ sudo mysqldump flarum > flarumbackup.sqlКопирование файлов:
$ sudo tar -czf flarum-files-$(date +%F).tar.gz /var/www/flarumВосстановление базы на новом сервере:
- Повторите шаги создания базы и пользователя (Шаг 6).
- Восстановите дамп:
$ sudo mysql flarum < flarumbackup.sql- Восстановите файлы сайта и настройте config.php, а также Nginx конфигурацию под новый домен, если требуется.
Полезные дополнительные разделы и рекомендации
Чеклист перед запуском (роль-based)
Для администратора сервера:
- Проверить DNS A/AAAA запись домена.
- Убедиться, что порты 80/443 открыты в firewall.
- Проверить доступ к серверу по SSH.
Для администратора форума:
- Создать учётную запись администратора и задать сильный пароль.
- Настроить почту и отправить тестовое письмо.
- Включить 2FA для учётной записи администратора.
Для модератора:
- Проверить права модератора.
- Ознакомиться с политикой модерирования.
Быстрая проверка работоспособности (smoke tests)
- Откройте HTTPS-страницу сайта — сертификат должен быть валиден.
- Проверьте создание нового пользователя и вход в систему.
- Отправьте тестовую почту.
- Проверьте загрузку вложения до 8 МБ.
Runbook: восстановление после сбоя базы данных
- Перевести сайт в режим обслуживания (offline => true в config.php).
- Остановить сайт (Nginx) и получить доступ к серверу.
- Провести восстановление из последнего дампа:
- mysql flarum < backup.sql
- Перезапустить MariaDB и PHP-FPM:
- sudo systemctl restart mariadb
- sudo systemctl restart php8.3-fpm
- Перезагрузить Nginx и снять сайт с обслуживания.
- Протестировать работу форума и отправку почты.
Безопасность и hardening
- Установите регулярные обновления ОС и пакетов.
- Отключите root SSH вход, используйте ключи SSH.
- Включите fail2ban для защиты от перебора паролей.
- Ограничьте привилегии баз данных: не давайте расширениям глобальных привилегий.
- Храните резервные копии вне сервера (облачное хранилище).
- Используйте strong TLS-профиль и регулярное обновление dhparam.
Отладка: распространённые проблемы и решения
Проблема: 502 Bad Gateway при обращении к PHP файлам. Решение: проверьте, что PHP-FPM запущен и путь unix:/run/php/php8.3-fpm.sock совпадает с конфигом.
Проблема: Ошибка при установке Composer зависимостей (permission denied). Решение: убедитесь, что права папок корректны и пользователь входит в группу nginx, либо используйте sudo с осторожностью.
Проблема: Certbot не может получить доступ к домену. Решение: проверьте DNS записи, открытые порты и редиректы, временно отключите редиректы на уровне Nginx для прохождения challenge.
Миграция: смена домена
- Обновите DNS на новый домен.
- Скопируйте файлы /var/www/flarum на новый сервер или домен.
- Обновите значение ‘url’ в /var/www/flarum/config.php на новый домен.
- Пересоздайте сертификат LetsEncrypt для нового домена.
- Проверьте Nginx конфигурацию и выполните перезагрузку.
Критерии приёмки
- Домен доступен по HTTPS с валидным сертификатом.
- Форма установки успешно сохранила параметры — форум работает.
- Уведомления по почте отправляются и доставляются (проверка тестовым письмом).
- Вход и регистрация пользователей функционируют.
Факты и числа (фактбокс)
- Минимальная версия PHP: 8.1 (рекомендуется 8.3 на Ubuntu 24.04).
- Рекомендуемый лимит загрузки: 8 МБ (можно изменить в php.ini и Nginx).
- Типичный набор пакетов: Nginx + PHP-FPM + MariaDB + Certbot + Composer.
Дерево принятия решения (Mermaid)
flowchart TD
A[Есть домен и сервер?] -->|Да| B{Установлен Nginx?}
A -->|Нет| Z[Зарегистрируйте домен и подготовьте сервер]
B -->|Нет| C[Установите Nginx]
B -->|Да| D{Есть PHP-FPM?}
C --> D
D -->|Нет| E[Установите PHP и расширения]
D -->|Да| F{Есть база данных MariaDB?}
E --> F
F -->|Нет| G[Установите MariaDB и создайте базу]
F -->|Да| H[Установите Composer и Flarum]
G --> H
H --> I{SSL нужен?}
I -->|Да| J[Установите Certbot и запросите сертификат]
I -->|Нет| K[Запустите Flarum без SSL 'не рекомендуется']
J --> L[Завершите установку через веб UI]
K --> LКогда этот подход не сработает
- Если у вас ограниченный хостинг без доступа к sudo — понадобится другой план размещения (shared hosting с поддержкой Composer или managed hosting для PHP).
- Если трафик ожидается очень большой, потребуется масштабирование: балансировщики, кластер баз данных, CDN.
Заключение
Вы установили Flarum на Ubuntu 24.04: настроили веб-сервер, PHP-FPM, базу данных, SSL, Composer и основные расширения. Для продолжения рекомендуем периодически обновлять компоненты, настраивать бэкапы и включить двухфакторную аутентификацию для администраторов и модераторов.
Если остались вопросы или нужны примеры конфигураций под конкретный хостинг/инфраструктуру, опишите ваш стек — помогу адаптировать шаги.
Ключевые ресурсы и полезные команды собраны выше. Удачного развёртывания!