bolt Valebyte VPS від $4/міс — NVMe, запуск за 60 секунд.

Отримати VPS arrow_forward

Flarum на VPS: встановлення, налаштування та обслуговування

calendar_month June 21, 2026 schedule 20 хв. читання visibility 66 переглядів
person
Valebyte Team
Flarum на VPS: встановлення, налаштування та обслуговування

Flarum на VPS — це сучасна платформа для створення форумів, яку можна встановити та налаштувати на віртуальному приватному сервері (VPS) для повного контролю над продуктивністю, безпекою та масштабованістю, що забезпечує гнучке та ефективне рішення для вашої спільноти.

Що таке Flarum і чому варто вибрати VPS для його розгортання?

Flarum — це елегантний, швидкий і сучасний форумний рушій, розроблений з нуля для простоти використання та розширюваності. Він написаний на PHP з використанням фреймворку Laravel та React для фронтенду, що забезпечує динамічний та чуйний користувацький інтерфейс. Flarum відрізняється мінімалістичним дизайном, інтуїтивно зрозумілим керуванням та потужною системою плагінів, що дозволяє адаптувати функціональність під будь-які потреби. На відміну від громіздких рішень минулого, Flarum прагне бути легким і швидким, пропонуючи сучасний підхід до створення онлайн-спільнот.

Переваги Flarum для спільноти

Вибір Flarum для вашої онлайн-спільноти надає низку значних переваг:

  • Сучасний інтерфейс: Flarum пропонує чистий, чуйний та інтуїтивно зрозумілий дизайн, який чудово виглядає на будь-якому пристрої. Це підвищує залученість користувачів та спрощує навігацію по форуму.
  • Висока продуктивність: Оптимізована архітектура та використання сучасних технологій забезпечують швидке завантаження сторінок та плавну взаємодію, що критично важливо для утримання користувачів.
  • Простота використання: Як для адміністраторів, так і для пересічних користувачів, Flarum максимально простий в освоєнні. Керування контентом, модерація та участь у дискусіях не викликають труднощів.
  • Розширюваність: Завдяки потужній системі плагінів, Flarum легко розширюється. Ви можете додавати нові функції, інтегрувати сторонні сервіси та налаштовувати форум під специфічні вимоги вашої спільноти.
  • Активний розвиток: Проєкт Flarum активно розвивається спільнотою, регулярно виходять оновлення, виправляються помилки та додаються нові можливості.

Чому Flarum self-hosted на VPS — оптимальний вибір?

Хоча існують хмарні платформи для хостингу форумів, Flarum self-hosted на VPS пропонує неперевершений рівень контролю та гнучкості. Розміщення Flarum на власному віртуальному приватному сервері від Valebyte.com дозволяє:

  • Повний контроль: Ви повністю контролюєте серверне середовище, встановлене програмне забезпечення, налаштування безпеки та дані. Це критично важливо для проєктів з високими вимогами до конфіденційності та кастомізації.
  • Масштабованість: У міру зростання вашої спільноти, ви можете легко масштабувати ресурси VPS (CPU, RAM, сховище) без необхідності міграції на іншу платформу. Це забезпечує плавне зростання та стабільну роботу при будь-якому навантаженні.
  • Оптимізація продуктивності: Ви можете тонко налаштувати серверне оточення (веб-сервер, PHP, базу даних) для максимальної продуктивності Flarum, виходячи зі специфіки вашого трафіку та використання.
  • Економічна ефективність: У довгостроковій перспективі, хостинг на VPS часто виявляється вигіднішим, ніж підписки на спеціалізовані хмарні платформи, особливо при зростанні аудиторії.
  • Безпека: Ви самостійно керуєте заходами безпеки, встановлюєте фаєрволи, системи виявлення вторгнень та регулярно оновлюєте програмне забезпечення, що забезпечує високий рівень захисту даних.
  • Інтеграція: На VPS простіше інтегрувати Flarum з іншими вашими сервісами або додатками, будь то єдина система авторизації (SSO), аналітика або кастомні інструменти.

Використання Docker для розгортання Flarum на VPS додатково спрощує процес, ізолюючи додаток та його залежності, що підвищує стабільність та полегшує керування.

Системні вимоги для Flarum на сервері

Перш ніж приступити до встановлення Flarum на сервері, важливо переконатися, що ваш VPS відповідає мінімальним системним вимогам. Flarum, як сучасний PHP-додаток, має певні залежності, які повинні бути задоволені для його коректної роботи.

Мінімальні та рекомендовані характеристики VPS

Вибір VPS-конфігурації залежить від очікуваного навантаження та кількості активних користувачів. Для початку роботи з невеликою спільнотою підійдуть мінімальні вимоги, але для зростаючого або вже активного форуму знадобиться більш потужний сервер.

Мінімальні вимоги для Flarum (до 50-100 активних користувачів):

  • Процесор (CPU): 1 vCPU з частотою 2.0+ GHz.
  • Оперативна пам'ять (RAM): 1 GB. Цього достатньо для роботи PHP-FPM, бази даних та веб-сервера при невисокому навантаженні.
  • Дисковий простір: 10-20 GB NVMe SSD. NVMe значно прискорює операції введення-виведення, що важливо для бази даних та кешування.
  • Пропускна здатність: 500 GB - 1 TB/місяць.
  • Операційна система: Ubuntu 22.04 LTS, Debian 11/12 або CentOS 8/Stream.

Рекомендовані вимоги для Flarum (100-500 активних користувачів):

  • Процесор (CPU): 2 vCPU з частотою 2.5+ GHz.
  • Оперативна пам'ять (RAM): 2-4 GB. Дозволяє краще кешувати дані та обробляти більше одночасних запитів.
  • Дисковий простір: 50 GB NVMe SSD. Забезпечує достатній обсяг для даних, логів та потенційного зростання.
  • Пропускна здатність: 2-4 TB/місяць.
  • Операційна система: Ubuntu 22.04 LTS, Debian 12.

Для дуже великих спільнот з тисячами активних користувачів знадобляться більш потужні конфігурації, можливо, з окремими серверами для бази даних та веб-сервера, а також балансуванням навантаження. Однак для більшості випадків VPS середнього рівня буде достатньо.

Необхідне програмне забезпечення

Для успішного встановлення Flarum на VPS, крім операційної системи, вам знадобиться наступне програмне забезпечення. Використання Docker значно спрощує керування цими залежностями.

  • Docker Engine: Основний компонент для запуску контейнерів.
  • Docker Compose: Інструмент для визначення та запуску багатоконтейнерних Docker-додатків.
  • Веб-сервер: Nginx або Apache (для роботи Flarum потрібен PHP-FPM, який взаємодіятиме з веб-сервером). У нашій статті ми будемо використовувати Nginx як зворотний проксі для Docker-контейнера.
  • База даних: MySQL 5.6+ / MariaDB 10.0.5+. Flarum зберігає всі свої дані в реляційній базі даних.
  • PHP: PHP 8.1+ з розширеннями:
    • php-fpm (для Nginx)
    • php-mysql
    • php-json
    • php-gd
    • php-dom
    • php-mbstring
    • php-tokenizer
    • php-zip
    • php-xml
    • php-bcmath
    • php-gmp

    При використанні Docker, всі ці PHP-розширення вже включені в офіційний образ Flarum.

  • Composer: PHP-менеджер залежностей (хоча при використанні Docker, він часто не потрібен для кінцевого користувача, оскільки використовується всередині контейнера).
  • Git: Для клонування репозиторіїв (корисно, але не строго обов'язково для Docker-встановлення).

У цій статті ми зосередимося на встановленні Flarum з використанням Docker та Docker Compose, що значно спрощує керування всіма цими залежностями, оскільки вони будуть інкапсульовані в контейнерах.

Шукаєте надійний сервер для ваших проєктів?

VPS від $10/міс та виділені сервери від $9/міс з NVMe, DDoS-захистом та підтримкою 24/7.

Дивитися пропозиції →

Підготовка VPS до встановлення Flarum Docker: Базові кроки

Перед тим як приступити до встановлення Flarum, необхідно підготувати ваш VPS. Ці кроки є стандартними для більшості Linux-серверів та забезпечують безпечну та стабільну основу для вашого додатка.

Оновлення системи та встановлення Docker Engine

Насамперед, підключіться до вашого VPS по SSH як користувач root або з правами sudo. Рекомендується використовувати користувача з sudo-правами для повсякденної роботи, але для встановлення Docker часто зручніше тимчасово використовувати root.

Оновіть список пакетів та встановлені пакети до актуальних версій:

sudo apt update && sudo apt upgrade -y

Встановіть необхідні пакети для Docker:

sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release

Додайте офіційний GPG-ключ Docker:

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

Додайте репозиторій Docker до APT-джерел:

echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Знову оновіть список пакетів та встановіть Docker Engine, Docker CLI та Containerd:

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Перевірте, що Docker встановлено та працює:

sudo docker run hello-world

Ви повинні побачити повідомлення "Hello from Docker!".

Додайте поточного користувача до групи docker, щоб не використовувати sudo щоразу при роботі з Docker. Замініть your_username на ваше ім'я користувача:

sudo usermod -aG docker your_username
newgrp docker # Перезапустіть сесію або виконайте цю команду для застосування змін

Тепер встановіть Docker Compose (якщо він не був встановлений як плагін):

sudo apt install -y docker-compose

Перевірте версію Docker Compose:

docker compose version

Налаштування файрволу та створення користувача

Для підвищення безпеки вашого VPS, налаштуйте файрвол (UFW - Uncomplicated Firewall) для дозволу лише необхідних портів.

Дозвольте SSH (порт 22), HTTP (порт 80) та HTTPS (порт 443):

sudo ufw allow OpenSSH
sudo ufw allow http
sudo ufw allow https
sudo ufw enable

Підтвердіть увімкнення файрволу, ввівши y.

Перевірте статус файрволу:

sudo ufw status

Ви повинні побачити дозволені порти.

Хоча ви можете працювати як root, для безпеки та зручності рекомендується створити окремого користувача з обмеженими правами та використовувати sudo для виконання адміністративних завдань. Якщо ви вже працюєте під таким користувачем, пропустіть цей крок.

sudo adduser flarumuser
sudo usermod -aG sudo flarumuser
sudo usermod -aG docker flarumuser # Додати користувача до групи docker

Тепер ви можете вийти з root та увійти під новим користувачем flarumuser.

exit

Потім знову увійдіть по SSH:

ssh flarumuser@your_vps_ip

Після входу в систему, ви будете працювати під flarumuser. Усі команди, що вимагають прав root, виконуйте з sudo.

rocket_launch Швидкий вибір

Шукаєте сервер, який просто працює?

Valebyte VPS — NVMe, підтримка 24/7, розгортання за 60 секунд.

Переглянути тарифи VPS arrow_forward

Покрокове встановлення Flarum на VPS за допомогою Docker Compose

Використання Docker Compose — найбільш рекомендований спосіб встановлення Flarum на VPS. Він дозволяє визначити всі сервіси (Flarum, Nginx, MariaDB) та їх залежності в одному файлі, спрощуючи розгортання та керування.

Створення файлу docker-compose.yml для Flarum

Створіть директорію для вашого проєкту Flarum та перейдіть до неї:

mkdir flarum_forum
cd flarum_forum

Створіть файл docker-compose.yml:

nano docker-compose.yml

Вставте наступний вміст. Цей файл визначає три сервіси: flarum (сам додаток), db (база даних MariaDB) та nginx (веб-сервер/зворотний проксі).

version: '3.8'

services:
  flarum:
    image: flarum/flarum:1.8.0 # Використовуйте актуальну версію Flarum
    container_name: flarum_app
    restart: always
    volumes:
      - ./app:/app
    environment:
      - DB_HOST=db
      - DB_DATABASE=flarum
      - DB_USERNAME=flarum
      - DB_PASSWORD=your_db_password # Замініть на надійний пароль
      - APP_URL=http://localhost:8000 # Тимчасово, буде змінено на домен
      - PHP_MEMORY_LIMIT=256M # Рекомендується збільшити за необхідності
    depends_on:
      - db

  db:
    image: mariadb:10.6
    container_name: flarum_db
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=your_root_db_password # Замініть на надійний пароль
      - MYSQL_DATABASE=flarum
      - MYSQL_USER=flarum
      - MYSQL_PASSWORD=your_db_password # Повинен збігатися з паролем Flarum
    volumes:
      - ./db_data:/var/lib/mysql

  nginx:
    image: nginx:stable-alpine
    container_name: flarum_nginx
    restart: always
    ports:
      - "80:80" # Відкриваємо порт 80
      # - "443:443" # Буде активовано після налаштування HTTPS
    volumes:
      - ./nginx.conf:/etc/nginx/conf.d/default.conf
      - ./app:/var/www/flarum # Flarum assets для Nginx
    depends_on:
      - flarum

volumes:
  db_data:
  app:

Важливі зауваження:

  • Замініть your_db_password та your_root_db_password на надійні унікальні паролі.
  • image: flarum/flarum:1.8.0 – переконайтеся, що ви використовуєте актуальну версію Flarum. Перевірити можна на Docker Hub.
  • APP_URL=http://localhost:8000 – це тимчасовий URL. Після налаштування домену та HTTPS ми змінимо його.
  • PHP_MEMORY_LIMIT=256M – для невеликих форумів достатньо, але при активному використанні плагінів або великій кількості користувачів може знадобитися 512M або 1G.

Тепер створіть файл конфігурації Nginx nginx.conf у тій самій директорії flarum_forum:

nano nginx.conf

Вставте наступний вміст:

server {
    listen 80;
    server_name your_domain.com www.your_domain.com; # Замініть на ваш домен

    root /var/www/flarum/public;
    index index.php index.html index.htm;

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

    location ~ \.php$ {
        fastcgi_pass flarum:9000; # Ім'я сервісу Flarum та порт PHP-FPM
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
        expires max;
        log_not_found off;
    }
}

Важливе зауваження: Замініть your_domain.com www.your_domain.com на ваш реальний домен. Якщо у вас немає домену, поки можете використовувати IP-адресу вашого VPS, але для повноцінної роботи та HTTPS домен необхідний.

Запуск контейнерів та початкове налаштування Flarum

Після створення файлів docker-compose.yml та nginx.conf, ви готові до запуску Flarum. Переконайтеся, що ви знаходитесь в директорії flarum_forum.

Запустіть усі сервіси Docker Compose у фоновому режимі:

docker compose up -d

Ця команда створить та запустить контейнери flarum_app, flarum_db та flarum_nginx. Процес може зайняти деякий час, оскільки Docker завантажуватиме образи.

Перевірте статус запущених контейнерів:

docker compose ps

Ви повинні побачити, що всі три контейнери знаходяться у статусі "Up".

Тепер необхідно виконати початкове встановлення Flarum всередині контейнера. Це робиться за допомогою команди php flarum install. Вам знадобляться дані, які ви вказали в docker-compose.yml:

  • Database Host: db (ім'я сервісу бази даних)
  • Database Name: flarum
  • Database Username: flarum
  • Database Password: your_db_password
  • Table Prefix: (можна залишити порожнім)
  • Admin Username: (виберіть ім'я для адміністратора)
  • Admin Email: (вкажіть пошту адміністратора)
  • Admin Password: (виберіть надійний пароль для адміністратора)
  • Base URL: http://your_domain.com (або IP вашого VPS, поки без HTTPS)

Виконайте команду встановлення. Замініть плейсхолдери на свої значення:

docker compose exec flarum php flarum install \
  --database_host=db \
  --database_name=flarum \
  --database_user=flarum \
  --database_pass=your_db_password \
  --url=http://your_domain.com \
  --admin_user=admin_username \
  --admin_pass=admin_password \
  [email protected]

Після успішного виконання цієї команди, Flarum буде встановлено та ініціалізовано з базовою конфігурацією.

Тепер ви можете відкрити ваш браузер та перейти за адресою http://your_domain.com (або IP вашого VPS). Ви повинні побачити встановлений Flarum. Увійдіть до панелі адміністратора, використовуючи облікові дані, які ви вказали при встановленні.

На цьому етапі Flarum працює на HTTP. Наступний крок — налаштування HTTPS для забезпечення безпеки.

Налаштування Reverse Proxy та HTTPS для Flarum на сервері

Для забезпечення безпеки та довіри користувачів, а також для відповідності сучасним стандартам веб-розробки, вкрай важливо налаштувати HTTPS для вашого Flarum-форуму. Ми розглянемо два популярні варіанти зворотного проксі: Nginx (з ручним налаштуванням Let's Encrypt) та Caddy (з автоматичним HTTPS).

Інтеграція Nginx як Reverse Proxy з Let's Encrypt

Якщо ви використовуєте Nginx як зворотний проксі, як це було в нашому docker-compose.yml, вам знадобиться налаштувати Let's Encrypt для отримання та автоматичного оновлення SSL-сертифікатів.

1. Встановлення Certbot

Certbot — це інструмент від Electronic Frontier Foundation (EFF), який спрощує отримання та встановлення SSL-сертифікатів Let's Encrypt.

sudo apt install -y certbot python3-certbot-nginx

2. Налаштування Nginx для Certbot

Нам потрібно, щоб Nginx слухав порт 80 і був доступний Certbot для перевірки домену. У файлі nginx.conf, який ми створили, вже є прослуховування порту 80. Переконайтеся, що server_name відповідає вашому домену.

Якщо ви хочете, щоб Nginx обробляв HTTPS, вам потрібно буде змінити docker-compose.yml, щоб Nginx прослуховував порт 443 та перенаправляв запити на Flarum. Однак, більш чистий підхід — це використовувати Nginx лише як зворотний проксі для внутрішнього HTTP-трафіку від Flarum, а SSL-термінацію виконувати на зовнішньому Nginx, який не знаходиться в Docker-контейнері. Це складніше, але дає більше контролю.

Для простоти, ми будемо використовувати Nginx всередині Docker-контейнера для обробки HTTPS. Для цього нам потрібно змінити наш nginx.conf та docker-compose.yml.

Оновіть docker-compose.yml:

Закоментуйте рядок - "80:80" та розкоментуйте - "443:443", а також додайте порт 80 для Certbot challenge.

services:
  nginx:
    # ...
    ports:
      - "80:80" # Для Certbot challenge та перенаправлення на HTTPS
      - "443:443" # Для HTTPS трафіку
    # ...

Перезапустіть Docker Compose:

docker compose down
docker compose up -d

Оновіть nginx.conf:

Вам потрібно буде додати конфігурацію для HTTPS та перенаправлення HTTP на HTTPS. Certbot автоматично зробить це для вас, але спочатку потрібно згенерувати сертифікат.

Тимчасово приберіть секцію location ~ \.php$ та location ~ /\.ht та location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ з nginx.conf для першого запуску Certbot, щоб він міг створити тимчасовий файл для перевірки домену. Після отримання сертифіката, ми повернемо їх.

Тимчасово, ваш nginx.conf може виглядати так:

server {
    listen 80;
    server_name your_domain.com www.your_domain.com; # Замініть на ваш домен

    location / {
        proxy_pass http://flarum:8000; # Направляємо на Flarum
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Перезапустіть Nginx-контейнер, щоб застосувати зміни:

docker compose restart nginx

3. Отримання SSL-сертифіката з Certbot

Виконайте команду Certbot. Замініть your_domain.com на ваш домен та [email protected] на вашу адресу електронної пошти:

sudo certbot --nginx -d your_domain.com -d www.your_domain.com --email [email protected] --agree-tos --no-eff-email

Certbot автоматично змінить ваш nginx.conf, додавши секції для HTTPS та перенаправлення HTTP на HTTPS.

4. Фінальна конфігурація Nginx

Після того, як Certbot додасть HTTPS-конфігурацію, ваш nginx.conf буде містити дві секції server: одну для HTTP (що перенаправляє на HTTPS) та одну для HTTPS. Вам потрібно буде модифікувати HTTPS-секцію, щоб вона правильно проксіювала запити до контейнера Flarum.

Приклад фінального nginx.conf (частина, яка стосується HTTPS):

server {
    listen 443 ssl http2;
    server_name your_domain.com www.your_domain.com;

    ssl_certificate /etc/letsencrypt/live/your_domain.com/fullchain.pem; # Шлях до сертифіката
    ssl_certificate_key /etc/letsencrypt/live/your_domain.com/privkey.pem; # Шлях до приватного ключа

    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    root /var/www/flarum/public; # Шлях до Flarum public директорії
    index index.php index.html index.htm;

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

    location ~ \.php$ {
        fastcgi_pass flarum:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
    }

    location ~ /\.ht {
        deny all;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
        expires max;
        log_not_found off;
    }
}

# Додано Certbot для перенаправлення HTTP на HTTPS
server {
    listen 80;
    server_name your_domain.com www.your_domain.com;
    return 301 https://$host$request_uri;
}

Важливо: Certbot за замовчуванням розміщує сертифікати в /etc/letsencrypt/live/your_domain.com/. Щоб контейнер Nginx міг отримати до них доступ, вам потрібно або монтувати цю директорію в контейнер, або скопіювати сертифікати. Найпростіше монтувати.

Оновіть docker-compose.yml знову для монтування сертифікатів:

services:
  nginx:
    # ...
    volumes:
      - ./nginx.conf:/etc/nginx/conf.d/default.conf
      - ./app:/var/www/flarum
      - /etc/letsencrypt:/etc/letsencrypt # Монтуємо директорію з сертифікатами

Перезапустіть Docker Compose:

docker compose down
docker compose up -d

Тепер ваш Flarum повинен бути доступний по HTTPS. Не забудьте оновити APP_URL у файлі docker-compose.yml та в налаштуваннях Flarum (якщо є) на https://your_domain.com.

Для автоматичного оновлення сертифікатів Certbot створить cron-завдання. Перевірити його можна командою sudo systemctl status certbot.timer.

Використання Caddy для автоматичного HTTPS

Caddy — це потужний веб-сервер, який за замовчуванням автоматично отримує та оновлює SSL-сертифікати Let's Encrypt. Це значно спрощує налаштування HTTPS.

1. Зміна docker-compose.yml

Видаліть сервіс nginx з docker-compose.yml та додайте сервіс caddy:

version: '3.8'

services:
  flarum:
    image: flarum/flarum:1.8.0
    container_name: flarum_app
    restart: always
    volumes:
      - ./app:/app
    environment:
      - DB_HOST=db
      - DB_DATABASE=flarum
      - DB_USERNAME=flarum
      - DB_PASSWORD=your_db_password
      - APP_URL=https://your_domain.com # Одразу вказуємо HTTPS
      - PHP_MEMORY_LIMIT=256M
    depends_on:
      - db

  db:
    image: mariadb:10.6
    container_name: flarum_db
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=your_root_db_password
      - MYSQL_DATABASE=flarum
      - MYSQL_USER=flarum
      - MYSQL_PASSWORD=your_db_password
    volumes:
      - ./db_data:/var/lib/mysql

  caddy:
    image: caddy:latest
    container_name: flarum_caddy
    restart: always
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - ./site:/srv # Для статичних файлів, якщо потрібно
      - caddy_data:/data # Для зберігання сертифікатів Caddy
    environment:
      - CADDY_DOMAIN=your_domain.com # Передаємо домен у Caddyfile
    depends_on:
      - flarum

volumes:
  db_data:
  app:
  caddy_data: # Оголошуємо volume для даних Caddy

Важливе зауваження: Оновіть your_db_password, your_root_db_password та your_domain.com. Переконайтеся, що APP_URL у Flarum сервісі тепер вказує на https://your_domain.com.

2. Створення Caddyfile

Створіть файл Caddyfile у тій самій директорії flarum_forum:

nano Caddyfile

Вставте наступний вміст:

{env.CADDY_DOMAIN} {
    root * /srv/public # Якщо Flarum буде розташовуватися в /srv/public
    php_fastcgi flarum:9000 {
        root /app/public # Шлях до public директорії Flarum всередині flarum-контейнера
    }

    file_server

    # Додаткові налаштування для Flarum
    rewrite /api(.*) /api$1
    rewrite /flarum(.*) /flarum$1
    rewrite /assets(.*) /assets$1
    rewrite /vendor(.*) /vendor$1

    # Захист від доступу до конфіденційних файлів
    @forbidden {
        path /.git/*
        path /.env
        path /composer.*
        path /storage/*
        path /vendor/*
    }
    respond @forbidden 403

    # Логування (опціонально)
    log {
        output stdout
        format json
    }
}

Важливе зауваження: php_fastcgi flarum:9000 { root /app/public } вказує Caddy, де шукати public директорію Flarum всередині контейнера flarum. {env.CADDY_DOMAIN} буде замінено на ваш домен зі змінної оточення Docker Compose.

3. Запуск Flarum з Caddy

Переконайтеся, що ви знаходитесь в директорії flarum_forum. Опустіть старі контейнери та запустіть нові:

docker compose down
docker compose up -d

Caddy автоматично виявить ваш домен, отримає SSL-сертифікат від Let's Encrypt та налаштує HTTPS. Це може зайняти кілька хвилин при першому запуску.

Перевірте статус контейнерів:

docker compose ps

Потім відкрийте ваш домен у браузері з https://. Ваш Flarum тепер повинен працювати за захищеним протоколом.

Caddy автоматично оновлює сертифікати, тому вам не потрібно турбуватися про ручне оновлення.

Обслуговування Flarum: бекапи, оновлення та моніторинг

Регулярне обслуговування Flarum на VPS критично важливе для забезпечення його стабільності, безпеки та актуальності. Це включає в себе створення резервних копій, своєчасні оновлення та моніторинг продуктивності.

Стратегії резервного копіювання Flarum на VPS

Бекапи — це ваша страховка від втрати даних. Для Flarum потрібне резервне копіювання двох основних компонентів: бази даних та файлів додатка.

1. Резервне копіювання бази даних

База даних MariaDB містить усі повідомлення, користувачів, налаштування та іншу важливу інформацію. Ви можете створити дамп бази даних за допомогою mysqldump зсередини контейнера бази даних.

docker compose exec db sh -c "exec mariadb-dump -u flarum -pyour_db_password flarum > /tmp/flarum_db_backup.sql"

Ця команда створить дамп бази даних всередині контейнера db. Тепер вам потрібно скопіювати його на хост-систему:

docker cp flarum_db:/tmp/flarum_db_backup.sql ./backups/flarum_db_backup_$(date +%F_%H-%M-%S).sql

Не забудьте створити директорію ./backups заздалегідь.

Для автоматизації цього процесу, ви можете створити cron-завдання, яке буде виконувати ці команди регулярно.

2. Резервне копіювання файлів додатка

Файли додатка Flarum включають ядро Flarum, плагіни, завантажені файли (аватари, вкладення) та конфігураційні файли. Оскільки ми монтуємо директорію ./app з хоста в контейнер Flarum, резервне копіювання цієї директорії на хості достатньо.

tar -czvf ./backups/flarum_app_backup_$(date +%F_%H-%M-%S).tar.gz ./app

Ця команда створить стислий архів директорії ./app.

3. Комплексний скрипт бекапу та зовнішнє сховище

Для надійності, рекомендується створити скрипт, який буде виконувати обидві операції та зберігати бекапи в безпечне місце, наприклад, на віддалений сервер або в хмарне сховище. Розгляньте використання інструментів на кшталт Restic для інкрементальних та зашифрованих бекапів, або rsync для синхронізації з віддаленим сховищем.

#!/bin/bash

BACKUP_DIR="./backups"
DATE=$(date +%F_%H-%M-%S)
DB_USER="flarum"
DB_PASS="your_db_password"
DB_NAME="flarum"
APP_DIR="./app"
DB_CONTAINER="flarum_db"

mkdir -p $BACKUP_DIR

echo "Створення дампу бази даних..."
docker compose exec $DB_CONTAINER sh -c "exec mariadb-dump -u $DB_USER -p$DB_PASS $DB_NAME > /tmp/flarum_db_backup.sql"
docker cp $DB_CONTAINER:/tmp/flarum_db_backup.sql $BACKUP_DIR/flarum_db_backup_$DATE.sql
docker compose exec $DB_CONTAINER rm /tmp/flarum_db_backup.sql # Видаляємо тимчасовий файл з контейнера
echo "Дамп бази даних створено: $BACKUP_DIR/flarum_db_backup_$DATE.sql"

echo "Архівування файлів додатка..."
tar -czvf $BACKUP_DIR/flarum_app_backup_$DATE.tar.gz $APP_DIR
echo "Архів файлів додатка створено: $BACKUP_DIR/flarum_app_backup_$DATE.tar.gz"

# Приклад відправки бекапів на віддалений сервер (замініть на свої дані)
# scp -r $BACKUP_DIR/* user@remote_server:/path/to/remote/backups/

echo "Бекап завершено."

Збережіть цей скрипт як backup_flarum.sh, зробіть його виконуваним (chmod +x backup_flarum.sh) та додайте в cron для щоденного виконання.

Процес оновлення Flarum та Docker-контейнерів

Оновлення важливі для отримання нових функцій, виправлень безпеки та покращення продуктивності.

1. Оновлення Docker-образів

Регулярно оновлюйте Docker-образи до останніх стабільних версій. Це можна зробити, змінивши теги образів у docker-compose.yml (наприклад, flarum/flarum:latest або конкретну нову версію) та потім виконавши:

docker compose pull # Завантажити нові версії образів
docker compose up -d # Перестворити контейнери з новими образами

Перед оновленням завжди робіть бекап!

2. Оновлення Flarum

Якщо ви використовуєте конкретну версію Flarum (наприклад, flarum/flarum:1.8.0), то для оновлення до нової версії 1.9.0 вам потрібно буде змінити тег образу в docker-compose.yml. Однак, Flarum має також свою внутрішню процедуру оновлення, особливо для міграції бази даних та оновлення плагінів.

Після оновлення образу Flarum у docker-compose.yml та перезапуску контейнерів, вам може знадобитися виконати команду міграції Flarum:

docker compose exec flarum php flarum migrate
docker compose exec flarum php flarum cache:clear

Також не забудьте оновити плагіни Flarum через панель адміністратора або за необхідності через Composer (якщо ви використовуєте кастомні плагіни, не включені в основний образ).

Моніторинг продуктивності та ресурсів

Моніторинг вашого VPS та Flarum допоможе виявити проблеми до того, як вони стануть критичними.

  • Використання ресурсів VPS: Використовуйте команди htop, free -h, df -h для відстеження CPU, RAM та дискового простору. Якщо ви бачите постійне високе завантаження, можливо, настав час масштабувати ваш VPS.
  • Логи Docker-контейнерів: Перевіряйте логи Flarum, Nginx/Caddy та бази даних на наявність помилок.
  • docker compose logs flarum
    docker compose logs nginx # або caddy
    docker compose logs db
  • Моніторинг Flarum: Встановіть плагіни для моніторингу продуктивності, якщо вони доступні. Слідкуйте за часом відгуку сторінок та кількістю помилок у панелі адміністратора.
  • Uptime Monitoring: Використовуйте зовнішні сервіси для моніторингу доступності вашого сайту (наприклад, UptimeRobot), щоб отримувати сповіщення, якщо ваш форум стане недоступним.

Регулярний моніторинг дозволяє оперативно реагувати на проблеми та підтримувати ваш Flarum в оптимальному стані.

rocket_launch Швидкий вибір

Шукаєте сервер, який просто працює?

Valebyte VPS — NVMe, підтримка 24/7, розгортання за 60 секунд.

Переглянути тарифи VPS arrow_forward

Оптимальний VPS-конфіг для Flarum під реальне навантаження

Вибір відповідної конфігурації VPS для Flarum критично важливий для забезпечення стабільної роботи та швидкого завантаження сторінок у міру зростання вашої спільноти. Недооцінка потреб може призвести до повільної роботи, відмов та поганого користувацького досвіду, тоді як надлишкові ресурси — до невиправданих витрат. Оптимальний VPS-конфіг залежить від кількості активних користувачів, інтенсивності їх взаємодії та кількості встановлених плагінів.

Підбір ресурсів залежно від кількості користувачів

При підборі VPS для Flarum необхідно враховувати кілька ключових факторів:

  • Кількість активних користувачів: Це не загальна кількість зареєстрованих користувачів, а кількість тих, хто одночасно переглядає або взаємодіє з форумом.
  • Інтенсивність використання: Форум, де користувачі в основному читають, буде менш вимогливим, ніж форум з частими публікаціями, завантаженням зображень та активним пошуком.
  • Кількість плагінів: Кожен плагін додає своє навантаження на PHP та базу даних.
  • Обсяг контенту: Велика кількість тем, повідомлень та вкладень вимагає більше дискового простору та може впливати на продуктивність бази даних.
  • Тип диска: NVMe SSD значно перевершує звичайні SSD та HDD за швидкістю операцій введення-виведення, що критично для бази даних та кешування.

Valebyte.com пропонує високопродуктивні VPS з NVMe-дисками, які ідеально підходять для таких вимогливих до I/O додатків, як Flarum.

Таблиця: Рекомендації щодо VPS для Flarum

Ця таблиця допоможе вам вибрати відповідний тарифний план Valebyte.com для вашого Flarum-форуму, виходячи з передбачуваного навантаження.

Навантаження (Активні користувачі) CPU (vCores) RAM (GB) Диск (NVMe SSD) Пропускна здатність Орієнтовна вартість ($/міс.) Примітки
Старт/Малий форум
(до 50-100)
1 1-2 20-40 GB 1-2 TB 5-10 Підходить для тестування, особистих проєктів та невеликих спільнот.
Середній форум
(100-300)
2 2-4 50-80 GB 2-4 TB 10-25 Оптимально для зростаючих спільнот з помірною активністю.
Активний форум
(300-800)
4 4-8 100-160 GB 4-8 TB 25-50 Для форумів з високою відвідуваністю та активною взаємодією.
Великий форум
(800-2000+)
6-8+ 8-16+ 200-400+ GB 8-16+ TB 50-100+ Вимагає оптимізації бази даних та, можливо, кешування (Redis/Memcached).

Додаткові рекомендації:

  1. NVMe SSD: Завжди вибирайте VPS з NVMe SSD. Різниця у швидкості операцій введення-виведення порівняно зі звичайними SSD або HDD величезна і критична для продуктивності бази даних Flarum.
  2. Розташування сервера: Вибирайте дата-центр, який географічно близький до вашої основної аудиторії для мінімізації затримок.
  3. Кешування: Для середніх та великих форумів розгляньте інтеграцію систем кешування, таких як Redis або Memcached, для Flarum. Це значно знизить навантаження на базу даних та прискорить завантаження сторінок. Flarum має вбудовану підтримку кешування.
  4. PHP-FPM Workers: Оптимізуйте кількість PHP-FPM воркерів залежно від доступної RAM та CPU. Занадто багато воркерів можуть призвести до вичерпання пам'яті, занадто мало — до затримок.
  5. Оптимізація бази даних: Регулярно проводьте оптимізацію таблиць MySQL/MariaDB та індексування.
  6. CDN: Для форумів з великою кількістю зображень та статичних файлів розгляньте використання CDN (Content Delivery Network) для прискорення їх доставки користувачам по всьому світу.

Починаючи з меншого тарифу та поступово масштабуючи ресурси в міру зростання, ви зможете ефективно керувати витратами та забезпечувати оптимальну продуктивність для вашого Flarum-форуму на VPS від Valebyte.com.

Висновки

Розгортання Flarum на VPS з використанням Docker Compose є потужним та гнучким рішенням для створення сучасної онлайн-спільноти. Такий підхід забезпечує повний контроль над інфраструктурою, високу продуктивність завдяки NVMe-дискам та легку масштабованість у міру зростання вашого проєкту. Вибираючи VPS від Valebyte.com, ви отримуєте надійну основу для вашого форуму, а дотримання рекомендацій щодо встановлення, налаштування HTTPS та регулярного обслуговування гарантує стабільну та безпечну роботу Flarum.

Готові вибрати сервер?

VPS та виділені сервери в 72+ країнах з миттєвою активацією та повним root-доступом.

Почати зараз →
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.