Оптика від провайдера → гігабітне «мідне» підключення → 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) та маршрутизатором:
- Статичний IP для сервера: У розділі
IP -> DHCP Server -> Leasesзроби IP-адресу сервера постійною (Static). - Port Forwarding (NAT): У
IP -> Firewall -> NATдодай правила прокидання портів на локальну IP-адресу сервера:- Port 80 (HTTP) -> для первинного запиту та видачі сертифікатів Let’s Encrypt.
- Port 443 (HTTPS) -> для шифрованого веб-трафіку.
- Port 22 (SSH) -> НЕ прокидай назовні. Доступайся до сервера через VPN (WireGuard), піднятий на тому ж MikroTik.
- Firewall Rules: Переконайся, що в
Filter Rulesдозволено тільки 80 та 443 порти ззовні, а всі інші запити до сервера з WAN-інтерфейсу блокуються.
3. Софтверний стек та покрокове встановлення
Найбільш стабільний та зручний стек для хостингу WordPress з Redis: Ubuntu Server LTS + Docker + Nginx Proxy Manager + Redis + MariaDB.
Крок 1. Встановлення ОС та Програмного RAID
- Завантаж Ubuntu Server 24.04 LTS.
- Під час інсталяції в розділі Storage Configuration:
- Обери обидва NVMe диски.
- Налаштуй Software RAID (mdadm) у режимі RAID 1 (Mirror) або обери файлову систему ZFS (RAIDZ1/Mirror).
- Створи файлову систему
/(root) на створеному RAID-масиві.
- Заверши інсталяцію та онови систему:Bash
sudo 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)
- Відкрий у браузері
http://<IP_вашого_сервера>:81. - Логін за замовчуванням:
admin@example.com/changeme(системно зміни їх при першому вході). - Перейди в 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.
- Domain Names: твій домен (наприклад,
- У вкладці SSL:
- Обери Request a new SSL Certificate.
- Увімкни Force SSL та HTTP/2 Support.
- Погодься з умовами Let’s Encrypt та натисни Save.
Крок 5. Підключення Redis у самому WordPress
- Зайди в адмін-панель WordPress (
[https://example.com/wp-admin](https://example.com/wp-admin)). - Установи плагін Redis Object Cache (від Till Krüss).
- Перейди в
Налаштування -> Redis. - Для того, щоб плагін бачив контейнер Redis, додай у файл
wp-config.php(всередині volumewp_data) наступні рядки:PHPdefine('WP_REDIS_HOST', 'wp_redis'); define('WP_REDIS_PORT', 6379); define('WP_REDIS_TIMEOUT', 1); define('WP_REDIS_READ_TIMEOUT', 1); - Натисни кнопку «Enable Object Cache» у панелі WordPress.
4. Резервне копіювання (Backups)
Оскільки ви використовуєте RAID 1, ви захищені від виходу з ладу одного диска, але RAID — це не бекап.
- Налаштуй щоденне копіювання дампів бази даних MariaDB та папки
wp_dataна зовнішній носій, окремий NAS або хмарне сховище (Hetzner Storage Box / S3 / Google Drive) за допомогою утиліти Restic або BorgBackup.