Оптика від провайдера → гігабітне «мідне» підключення → MikroTik — це надійна базова база для селф-хостингу. Головне зауваження на старті: переконайся, що у тебе підключена послуга статичної (фіксованої) IP-адреси, оскільки для повноцінного веб-сервера вона критично необхідна.

Нижче наведено детальний гайд з вибору заліза та покрокового розгортання софтверного стеку.

1. Залізо (Hardware)

Для продуктивного WordPress із Redis, який витримуватиме високі навантаження та матиме відмовостійкість даних, найкраще підходить компактний сервер або кастомна Micro-ATX / Mini-ITX збірка.

Рекомендована конфігурація:

  • Процесор (CPU): Intel Core i3 (12-го / 13-го generation) або AMD Ryzen 5 (5600G / 4650G). Потрібно 4–6 ядер із високою частотою на одне ядро (WordPress дуже чутливий до single-core продуктивності).
  • Оперативна пам’ять (RAM): 32 GB DDR4/DDR5 (Non-ECC або ECC, якщо підтримує плата).
    • Чому 32 GB: для Redis (кеш даних/сесій), MySQL/MariaDB (InnoDB buffer pool) та PHP-FPM воркерів.
  • Дискова система (RAID 1 – Дзеркалювання):
    • 2 × NVMe SSD по 512 GB або 1 TB (наприклад, Samsung 980 Pro, Kingston KC3000 або WD Black SN850X).
    • Важливо: Не використовуй апаратний RAID (FakeRAID) на материнській платі. Реалізуємо програмний RAID 1 через ZFS або mdadm безпосередньо в ОС. Це гарантує відновлення даних навіть при повній заміні материнської плати.
  • Мережева карта (NIC): 1 GbE Intel (наприклад, i210/i219-V). Контролери Realtek краще оминати через можливі нюанси з драйверами під навантаженням у Linux.
  • Джерело безперебійного живлення (ДБЖ / UPS): Обов’язково Smart-UPS (Line-Interactive) з USB-управлінням (наприклад, APC або Eaton на 650–850 VA), щоб сервер коректно гасився при вимкненні світла.

2. Мережеве налаштування (MikroTik)

Твій MikroTik виступатиме першим рубежем захисту (Firewall) та маршрутизатором:

  1. Статичний IP для сервера: У розділі IP -> DHCP Server -> Leases зроби IP-адресу сервера постійною (Static).
  2. Port Forwarding (NAT): У IP -> Firewall -> NAT додай правила прокидання портів на локальну IP-адресу сервера:
    • Port 80 (HTTP) -> для первинного запиту та видачі сертифікатів Let’s Encrypt.
    • Port 443 (HTTPS) -> для шифрованого веб-трафіку.
    • Port 22 (SSH) -> НЕ прокидай назовні. Доступайся до сервера через VPN (WireGuard), піднятий на тому ж MikroTik.
  3. Firewall Rules: Переконайся, що в Filter Rules дозволено тільки 80 та 443 порти ззовні, а всі інші запити до сервера з WAN-інтерфейсу блокуються.

3. Софтверний стек та покрокове встановлення

Найбільш стабільний та зручний стек для хостингу WordPress з Redis: Ubuntu Server LTS + Docker + Nginx Proxy Manager + Redis + MariaDB.

Крок 1. Встановлення ОС та Програмного RAID

  1. Завантаж Ubuntu Server 24.04 LTS.
  2. Під час інсталяції в розділі Storage Configuration:
    • Обери обидва NVMe диски.
    • Налаштуй Software RAID (mdadm) у режимі RAID 1 (Mirror) або обери файлову систему ZFS (RAIDZ1/Mirror).
    • Створи файлову систему / (root) на створеному RAID-масиві.
  3. Заверши інсталяцію та онови систему:Bashsudo apt update && sudo apt upgrade -y

Крок 2. Встановлення Docker та Docker Compose

Не встановлюй сервіси безпосередньо в систему — ізоляція в контейнерах спрощує бэкапи та оновлення.

Bash

sudo apt install -y ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
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

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

Крок 3. Створення конфігурації Docker Compose

Створи робочу директорію для проекту:

Bash

mkdir -p ~/wordpress-stack && cd ~/wordpress-stack
nano docker-compose.yml

Встави наступний конфіг (заміни паролі на власні складні значення):

YAML

version: '3.8'

services:
  db:
    image: mariadb:11.2
    container_name: wp_db
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: YourSuperSecretRootPassword
      MYSQL_DATABASE: wordpress_db
      MYSQL_USER: wp_user
      MYSQL_PASSWORD: YourSuperSecretUserPassword
    volumes:
      - db_data:/var/lib/mysql
    command: --innodb-buffer-pool-size=2G --innodb-flush-log-at-trx-commit=2

  redis:
    image: redis:7-alpine
    container_name: wp_redis
    restart: always
    command: redis-server --maxmemory 512mb --maxmemory-policy allkeys-lru --save 60 1
    volumes:
      - redis_data:/data

  wordpress:
    image: wordpress:cli-php8.2-fpm # або стандартний wordpress:latest
    image: wordpress:latest
    container_name: wp_app
    restart: always
    depends_on:
      - db
      - redis
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_NAME: wordpress_db
      WORDPRESS_DB_USER: wp_user
      WORDPRESS_DB_PASSWORD: YourSuperSecretUserPassword
    volumes:
      - wp_data:/var/www/html

  nginx-proxy:
    image: 'jc21/nginx-proxy-manager:latest'
    container_name: wp_proxy
    restart: always
    ports:
      - '80:80'
      - '443:443'
      - '81:81' # Панель управління Nginx Proxy Manager
    volumes:
      - npm_data:/data
      - npm_letsencrypt:/etc/letsencrypt

volumes:
  db_data:
  redis_data:
  wp_data:
  npm_data:
  npm_letsencrypt:

Запусти стек:

Bash

docker compose up -d

Крок 4. Налаштування Reverse Proxy та SSL (Nginx Proxy Manager)

  1. Відкрий у браузері http://<IP_вашого_сервера>:81.
  2. Логін за замовчуванням: admin@example.com / changeme (системно зміни їх при першому вході).
  3. Перейди в Hosts -> Proxy Hosts -> Add Proxy Host:
    • Domain Names: твій домен (наприклад, example.com та [www.example.com](https://www.example.com)).
    • Scheme: http
    • Forward Hostname / IP: wp_app (або локальна IP-адреса сервера)
    • Forward Port: 80
    • Увімкни Block Common Exploits та Websockets Support.
  4. У вкладці SSL:
    • Обери Request a new SSL Certificate.
    • Увімкни Force SSL та HTTP/2 Support.
    • Погодься з умовами Let’s Encrypt та натисни Save.

Крок 5. Підключення Redis у самому WordPress

  1. Зайди в адмін-панель WordPress ([https://example.com/wp-admin](https://example.com/wp-admin)).
  2. Установи плагін Redis Object Cache (від Till Krüss).
  3. Перейди в Налаштування -> Redis.
  4. Для того, щоб плагін бачив контейнер Redis, додай у файл wp-config.php (всередині volume wp_data) наступні рядки:PHPdefine('WP_REDIS_HOST', 'wp_redis'); define('WP_REDIS_PORT', 6379); define('WP_REDIS_TIMEOUT', 1); define('WP_REDIS_READ_TIMEOUT', 1);
  5. Натисни кнопку «Enable Object Cache» у панелі WordPress.

4. Резервне копіювання (Backups)

Оскільки ви використовуєте RAID 1, ви захищені від виходу з ладу одного диска, але RAID — це не бекап.

  • Налаштуй щоденне копіювання дампів бази даних MariaDB та папки wp_data на зовнішній носій, окремий NAS або хмарне сховище (Hetzner Storage Box / S3 / Google Drive) за допомогою утиліти Restic або BorgBackup.