DEV Community

Cover image for WordPress с Docker за 15 минути: Пълна настройка с SSL и Cloudflare Tunnel[BG]
Fedya
Fedya

Posted on

WordPress с Docker за 15 минути: Пълна настройка с SSL и Cloudflare Tunnel[BG]

Стартирайте професионален WordPress сайт на Ubuntu за 15 минути с Docker, автоматичен SSL и безплатен Cloudflare Tunnel. Включва готов docker-compose.yml файл и стъпка по стъпка инструкции - без нужда от порт forwarding или статичен IP адрес! 🎯

Искали ли сте някога да стартирате WordPress сайт от вкъщи, но сте се отказвали заради сложната настройка на портове и SSL сертификати? 🤔 Тази статия ще ви покаже как да направите това за 15 минути с помощта на Docker и Cloudflare Tunnel - напълно безплатно!

🎯 Какво ще постигнем

✅ Работещ WordPress сайт с MySQL база данни
✅ Автоматичен SSL сертификат
✅ Достъп от интернет без порт forwarding
✅ Професионален домейн (безплатен от Cloudflare)
✅ Автоматични backup-и
✅ Лесно мащабиране и поддръжка

🛠️ Необходими неща

Ubuntu 20.04+ сървър или desktop

Домейн (може да бъде безплатен от Freenom)

Cloudflare акаунт (безплатен)

10-15 минути свободно време

📋 Стъпка 1: Подготовка на системата

🔄 Обновяване на Ubuntu

sudo apt update && sudo apt upgrade -y
sudo apt install curl wget git nano -y
Enter fullscreen mode Exit fullscreen mode

📁 Създаване на работна директория

mkdir ~/wordpress-docker
cd ~/wordpress-docker
Enter fullscreen mode Exit fullscreen mode

🐳 Стъпка 2: Инсталиране на Docker

📥 Автоматична инсталация

# Свалете официалния Docker скрипт
curl -fsSL https://get.docker.com -o get-docker.sh

# Инсталирайте Docker
sudo sh get-docker.sh

# Добавете потребителя си към docker групата
sudo usermod -aG docker $USER

# Излезте и влезте отново в терминала или изпълнете:
newgrp docker

# Проверете инсталацията
docker --version
docker-compose --version
Enter fullscreen mode Exit fullscreen mode

✅ Тест на Docker

docker run hello-world
Enter fullscreen mode Exit fullscreen mode

Ако видите "Hello from Docker!", всичко е наред! 🎉

🗄️ Стъпка 3: Създаване на Docker Compose файл

Създайте файл docker-compose.yml:

services:
  # 🗄️ MySQL база данни
  mysql:
    image: mysql:8.0
    container_name: wordpress_mysql
    restart: unless-stopped
    environment:
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: secure_password_123
      MYSQL_ROOT_PASSWORD: root_password_456
    volumes:
      - mysql_data:/var/lib/mysql
    networks:
      - wordpress_network

  # 🌐 WordPress
  wordpress:
    image: wordpress:latest
    container_name: wordpress_site
    restart: unless-stopped
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: mysql:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: secure_password_123
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - wordpress_data:/var/www/html
    depends_on:
      - mysql
    networks:
      - wordpress_network

  # 🔧 phpMyAdmin (опционално)
  phpmyadmin:
    image: phpmyadmin:latest
    container_name: wordpress_phpmyadmin
    restart: unless-stopped
    ports:
      - "8081:80"
    environment:
      PMA_HOST: mysql
      MYSQL_ROOT_PASSWORD: root_password_456
    depends_on:
      - mysql
    networks:
      - wordpress_network

volumes:
  mysql_data:
  wordpress_data:

networks:
  wordpress_network:
    driver: bridge
Enter fullscreen mode Exit fullscreen mode

🚀 Стъпка 4: Стартиране на WordPress

▶️ Стартиране на контейнерите

# Стартирайте всички услуги
docker-compose up -d

# Проверете статуса
docker-compose ps
Enter fullscreen mode Exit fullscreen mode

🌐 Първоначална настройка

Отворете браузър и идете на http://localhost:8080

Изберете език и попълнете данните:

Заглавие на сайта: Моя WordPress сайт

Потребителско име: admin

Парола: (използвайте силна парола)

Email: your-email@example.com

☁️ Стъпка 5: Настройка на Cloudflare Tunnel

🔐 Създаване на Cloudflare акаунт

Идете на cloudflare.com и създайте безплатен акаунт

Добавете вашия домейн

Променете nameserver-ите към Cloudflare

📥 Инсталиране на cloudflared

# Свалете cloudflared
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb

# Инсталирайте го
sudo dpkg -i cloudflared-linux-amd64.deb

# Влезте в Cloudflare акаунта си
cloudflared tunnel login
Enter fullscreen mode Exit fullscreen mode

🛤️ Създаване на tunnel

# Създайте tunnel
cloudflared tunnel create wordpress-tunnel

# Запишете Tunnel ID-то (ще го видите в изхода)
# Пример: Created tunnel wordpress-tunnel with id: 12345678-1234-1234-1234-123456789012
Enter fullscreen mode Exit fullscreen mode

⚙️ Конфигуриране на tunnel

Създайте файл ~/.cloudflared/config.yml:

tunnel: wordpress-tunnel
credentials-file: /home/YOUR_USERNAME/.cloudflared/12345678-1234-1234-1234-123456789012.json

ingress:
  - hostname: yourdomain.com
    service: http://localhost:8080
  - hostname: admin.yourdomain.com
    service: http://localhost:8081
  - service: http_status:404
Enter fullscreen mode Exit fullscreen mode

⚠️ Не забравяйте да замените:
YOUR_USERNAME с вашето потребителско име

12345678-1234-1234-1234-123456789012 с вашето Tunnel ID

yourdomain.com с вашия домейн

🌐 DNS настройки

# Добавете DNS записи
cloudflared tunnel route dns wordpress-tunnel yourdomain.com
cloudflared tunnel route dns wordpress-tunnel admin.yourdomain.com
Enter fullscreen mode Exit fullscreen mode

▶️ Стартиране на tunnel

# Стартирайте tunnel-а
cloudflared tunnel run wordpress-tunnel

# За да работи постоянно, създайте systemd service
sudo cloudflared service install
sudo systemctl enable cloudflared
sudo systemctl start cloudflared
Enter fullscreen mode Exit fullscreen mode

🔒 Стъпка 6: SSL и сигурност

🛡️ Cloudflare SSL настройки

В Cloudflare Dashboard → SSL/TLS

Изберете "Full (strict)" режим

Активирайте "Always Use HTTPS"

Активирайте "HTTP Strict Transport Security (HSTS)"

🔧 WordPress SSL настройки

Добавете в wp-config.php файла:

# Влезте в WordPress контейнера
docker exec -it wordpress_site bash

# Редактирайте wp-config.php
nano wp-config.php

Добавете тези редове преди /* That's all, stop editing! */:

php// 🔒 SSL настройки за Cloudflare
if (isset($_SERVER['HTTP_CF_VISITOR']) && 
    strpos($_SERVER['HTTP_CF_VISITOR'], 'https')) {
    $_SERVER['HTTPS'] = 'on';
}

define('FORCE_SSL_ADMIN', true);
define('WP_HOME','https://yourdomain.com');
define('WP_SITEURL','https://yourdomain.com');
Enter fullscreen mode Exit fullscreen mode

📊 Стъпка 7: Полезни Docker команди

🔍 Мониторинг

# Преглед на логовете
docker-compose logs -f wordpress
docker-compose logs -f mysql

# Статус на контейнерите
docker-compose ps

# Използвани ресурси
docker stats
Enter fullscreen mode Exit fullscreen mode

🛠️ Поддръжка

# Спиране на услугите
docker-compose stop

# Стартиране на услугите
docker-compose start

# Рестартиране
docker-compose restart

# Обновяване на images
docker-compose pull

docker-compose up -d
Enter fullscreen mode Exit fullscreen mode

🗑️ Почистване

# Премахване на контейнерите (БЕЗ данните)
docker-compose down

# Премахване на контейнерите И данните
docker-compose down -v
Enter fullscreen mode Exit fullscreen mode

🔧 WordPress оптимизации

W3 Total Cache - за кеширане

WP Rocket - премиум кеширане (препоръчително)

Smush - оптимизация на изображения

Cloudflare - интеграция с Cloudflare

📋 Checklist за успешна инсталация

Ubuntu е обновен

Docker е инсталиран и работи

docker-compose.yml файлът е създаден

WordPress контейнерите са стартирани

WordPress е достъпен на localhost:8080

Cloudflare акаунт е създаден

Домейнът е добавен в Cloudflare

cloudflared е инсталиран

Tunnel е създаден и конфигуриран

DNS записите са добавени

SSL е активиран (Full strict)

WordPress е достъпен през домейна

Backup скриптът е създаден

Health check скриптът работи

🎯 Заключение

Поздравления! 🎉 Вече имате напълно функционален WordPress сайт с:

✅ Професионален домейн с SSL сертификат
✅ Cloudflare защита и ускорение
✅ Автоматични backup-и
✅ Лесна поддръжка с Docker
✅ Мащабируемост при нужda

🚀 Следващи стъпки

Изберете тема за вашия сайт

Инсталирайте нужните плъгини

Настройте SEO с Yoast или RankMath

Добавете Google Analytics

Създайте първите си страници/публикации

📚 Полезни ресурси

🐳 Docker Documentation

☁️ Cloudflare Docs

🌐 WordPress Codex

🔧 Docker Compose Reference

💡 Съвети за поддръжка

Редовно обновявайте Docker images

Мониторирайте ресурсите с docker stats

Проверявайте backup-ите ежемесечно

Следете Cloudflare алертите

Използвайте staging среда за тестове

🎯 Успех! Вашият WordPress сайт е готов за света! Споделете в коментарите какво ще градите с тази настройка! 💪

Top comments (0)