Гид по технологиям

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

8 min read Tutorial Обновлено 29 Nov 2025
Установка Flarum на Ubuntu 24.04
Установка Flarum на Ubuntu 24.04

Логотип Flarum и схема развертывания

О чём это руководство

Это полное пошаговое руководство по установке 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.

Страница по умолчанию 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 если ещё не редиректите) и завершите установку через веб-интерфейс.

Экран установки Flarum

ALT: Форма установки Flarum в браузере для ввода базы данных и учётных данных администратора

Заполните поля базы данных ранее созданными параметрами. Оставьте префикс таблиц пустым или укажите свой (например flr_). Выберите имя администратора, пароль и email.

После завершения вы увидите домашнюю страницу форума.

Главная страница Flarum после установки

ALT: Стартовая страница установленного Flarum с темой по умолчанию

Включение 2FA

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

Установим расширение 2FA (пример):

$ cd /var/www/flarum
$ composer require ianm/twofactor:"*"

Затем включите расширение через админ-панель: Нажмите имя вверху справа -> Администрирование -> Расширения -> включите 2FA.

Меню администратора Flarum

ALT: Меню пользователя с ссылкой на администрирование форума

Если хотите обязать модераторов использовать 2FA, включите параметр «2FA required» в настройках модов.

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

Настройка 2FA в учётной записи

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

Восстановление базы на новом сервере:

  1. Повторите шаги создания базы и пользователя (Шаг 6).
  2. Восстановите дамп:
$ sudo mysql flarum < flarumbackup.sql
  1. Восстановите файлы сайта и настройте config.php, а также Nginx конфигурацию под новый домен, если требуется.

Полезные дополнительные разделы и рекомендации

Чеклист перед запуском (роль-based)

Для администратора сервера:

  • Проверить DNS A/AAAA запись домена.
  • Убедиться, что порты 80/443 открыты в firewall.
  • Проверить доступ к серверу по SSH.

Для администратора форума:

  • Создать учётную запись администратора и задать сильный пароль.
  • Настроить почту и отправить тестовое письмо.
  • Включить 2FA для учётной записи администратора.

Для модератора:

  • Проверить права модератора.
  • Ознакомиться с политикой модерирования.

Быстрая проверка работоспособности (smoke tests)

  • Откройте HTTPS-страницу сайта — сертификат должен быть валиден.
  • Проверьте создание нового пользователя и вход в систему.
  • Отправьте тестовую почту.
  • Проверьте загрузку вложения до 8 МБ.

Runbook: восстановление после сбоя базы данных

  1. Перевести сайт в режим обслуживания (offline => true в config.php).
  2. Остановить сайт (Nginx) и получить доступ к серверу.
  3. Провести восстановление из последнего дампа:
    • mysql flarum < backup.sql
  4. Перезапустить MariaDB и PHP-FPM:
    • sudo systemctl restart mariadb
    • sudo systemctl restart php8.3-fpm
  5. Перезагрузить Nginx и снять сайт с обслуживания.
  6. Протестировать работу форума и отправку почты.

Безопасность и 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.

Миграция: смена домена

  1. Обновите DNS на новый домен.
  2. Скопируйте файлы /var/www/flarum на новый сервер или домен.
  3. Обновите значение ‘url’ в /var/www/flarum/config.php на новый домен.
  4. Пересоздайте сертификат LetsEncrypt для нового домена.
  5. Проверьте 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 и основные расширения. Для продолжения рекомендуем периодически обновлять компоненты, настраивать бэкапы и включить двухфакторную аутентификацию для администраторов и модераторов.

Если остались вопросы или нужны примеры конфигураций под конкретный хостинг/инфраструктуру, опишите ваш стек — помогу адаптировать шаги.


Ключевые ресурсы и полезные команды собраны выше. Удачного развёртывания!

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как создать блок‑схему в LibreOffice Draw
Гайды

Как создать блок‑схему в LibreOffice Draw

Как слушать подкасты на колонках Sonos
Аудио

Как слушать подкасты на колонках Sonos

Удаление файлов с «слишком длинными» именами
Windows

Удаление файлов с «слишком длинными» именами

Переименование файлов в числа в Linux
Linux

Переименование файлов в числа в Linux

Удаление лишней установки Windows — пошагово
Windows

Удаление лишней установки Windows — пошагово

Настройка веб‑почты на Android через Gmail
Почта

Настройка веб‑почты на Android через Gmail