Свой блог в Docker на Ubuntu 24.04LTS + WordPress + Nginx proxy manager

Дзен — это ресурс, используемый мною до недавнего времени как площадка для личного блога и в качестве записной книжки, который стал совсем неадекватно себя вести и вот в чем это выражается:

  • Блокировка статей под надуманным предлогом — незаконная информация
  • Блокировка в продвижении материалов, был ежедневный серьезный рост просмотров, а через день и так на протяжении остального времени тишина — мне кажется эта площадка слишком перегружена блогерами и публикациями, лидирующую позицию естественно занимают копипастные новостные товарищи с бешенными просмотрами, куда уж там ленте до нас простых смертных, такими темпами никогда не охватишь все IT сообщество, тем более что из поисковых систем — посетителей блога раз в 10 больше, чем с ленты Дзен.
  • Ревностное отношение Дзена к повторным публикациям, а также использование материала на сторонних площадках
  • Левая техподдержка ничего не решающая и ничем не помогающая

Я давно уже задумываюсь по поводу личного блога на собственной vds машинке в связке с хорошим движком, подальше от всех запрещальщиков сверху и наверное пора уже запускать, напоминаю вам этот проект не преследует коммерческих целей, для меня важнее собственный опыт, знания и возможность делиться своими наработками и опытом с вами.

Мой основной и главный блог будет доступен по адресу:

https://tuning-admina.ru

Туда я планирую потихонечку мигрировать пока только новые статьи, материалы в статусе update(обновление в связи с выходом новых версий дистрибутивов) и заблокированные дзеном.

Канал на Дзене так и будет висеть — есть не просит и ладно, тем более там собран большой материал:

  • Опубликовано: 115 статей
  • В черновиках: 120+, причем многие готовы уже на 50%

В статье мною будет развернут образ Ubuntu 24.04LTS на VDS хостинге, установлен Docker, напишем сценарий развертывания контейнеров с такими компонентами как MariaDB, Nginx Proxy Manager, WordPress, описаны сопутствующие вопросы по регистрации сайта в поисковиках и резервному копированию.

Надеюсь подобная тематика вам нравится, приятного чтения.

Содержание статьи

  • Мои требования к решению
  • Что такое WordPress
  • Почему стоит остановиться на этом варианте
  • Компоненты в составе предлагаемого решения
  • Системные требования
  • Хостинговая площадка
  • Настройка DNS записей
  • Подготовка системы
  • Установка Docker
  • Создание папок под проект и написание конфигурационного файла
  • Настройка решения
  • Настройка обратного прокси сервера на nginx
  • Получение SSL сертификатов
  • Оптимизация производительности
  • Резервное копирование и восстановление
  • Заключение

Мои требования к решению

  • Низкие системные требования
  • Вся связка компонентов должна крутиться в Docker
  • Надежный и функциональный движок для блога
  • Удобный в настройке обратный прокси сервер

Что такое WordPress

WordPress — это бесплатная CMS с открытым исходным кодом написанная на php, первичное предназначение которой создание блогов и сайтов. Функционал системы наращивается за счет плагинов, также под систему написано огромное количество шаблонов тем.

WordPress одна из самых популярных CMS и используется более чем на 60 миллионах сайтов, мне кажется одно это уже является слишком весомым аргументом.

Почему стоит остановиться на этом варианте

  • Стабильное и проверенное годами решение
  • Есть как бесплатные так и платные видеокурсы, помимо документации и статей, которые научат вас всему от установки CMS до создания тем и плагинов
  • Огромное количество плагинов и тем оформления
  • Такого масштаба сообществу пользователей и разработчиков позавидует любая CMS

Компоненты в составе предлагаемого решения

  • Контейнер с Nginx Proxy Manager — удобный обратный прокси сервер с удобным web интерфейсом управления, встроенной возможностью получения и автоматического продления сертификата SSL от Let’s Encrypt
  • Контейнер MariaDB — сервер баз данных
  • Контейнер с WordPress

Системные требования

  • Процессор: от 2-х ядер
  • Оперативная память: от 2ГБ
  • Накопитель: от 10ГБ

Потребление ресурсов:

Хостинговая площадка

В качестве хостинг провайдера я пользуюсь услугами https://nuxt.cloud/ — оплата в рублях, хостинг площадки в Москве, Германии и Нидерландах.

В моем случае выбираю следующий тариф:

Кому не нравится идея с VDS и вы хотите развернуть решение внутри своей локальной сети, то вам потребуется:

  • Статический ip адрес на порту Wan вашего маршрутизатора
  • Пробросить 80 и 443 порты на вашем роутере с помощью правила типа dstNAT с указанием ip адреса хоста с прокси.
  • В DNS панели администрирования вашего доменного хостинг провайдера прописать запись типа А с указанием внешнего ip адреса маршрутизатора
  • На вашем гипервизоре или ПК создать виртуальную машинку и установить Ubuntu 24.04LTS, а уж затем по пунктам этой статьи добиваться задуманного.

Настройка DNS записей

В DNS панели управления вашего хостинг провайдера добавляем учетную запись типа А и в поле значение указываем ip адрес нашей VDS

Должно получиться так:

Подготовка системы

Все действия в системе я произвожу под root:

sudo -s

Обновляем систему:

apt update -y && apt upgrade -y

Устанавливаем имя нашему серверу:

hostnamectl set-hostname tuning-admina.ru

Устанавливаем дополнительные пакеты:

apt install mc net-tools git curl 

apt-transport-https ca-certificates software-properties-common -y

Перезагружаем машинку:

reboot

Установка Docker Compose

Добавим GPG key от репозитория Docker:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg —dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Добавим репозиторий Docker:

echo «deb [arch=$(dpkg —print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable» | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Обновим сведения о пакетах в репозиториях:

apt update

Устанавливаем Docker:

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

Стартуем службу Docker:

systemctl start docker

Проверяем статус службы Docker:

systemctl status docker

Создание папок под проект и написание конфигурационного файла

Первым делом создаем корневой каталог Docker:

mkdir /Docker

Создаем папки под Nginx Proxy Manager:

mkdir /Docker/Nginx

mkdir /Docker/Nginx/{data,letsencrypt}

Создаем папку под WordPress:

mkdir /Docker/Wordpress

Создаем папку под MariaDB:

mkdir /Docker/MariaDB

Создаем конфигурационный файл для Docker Compose с описанием необходимых нам контейнеров с настройками:

nano /Docker/docker-compose.yml

services:

#Контейнер с Nginx Proxy Manager#

Proxy:

image: ‘jc21/nginx-proxy-manager:latest’

container_name: proxy_nginx

restart: unless-stopped

ports:

— ’80:80′

— ‘443:443’

— ’81:81′ # WEB Консоль управления Nginx Proxy Manager

volumes:

— ./Nginx/data:/data

— ./Nginx/letsencrypt:/etc/letsencrypt

#Контейнер с MariaDB#

MariaDB:

image: mariadb:latest

container_name: mysql

restart: always

environment:

MYSQL_ROOT_PASSWORD: root_pass

MYSQL_DATABASE: wordpress

MYSQL_USER: user

MYSQL_PASSWORD: pass

volumes:

— ./MariaDB:/var/lib/mysql

#Контейнер с WordPress#

WordPress:

image: wordpress:latest

container_name: wordpress

volumes:

— ./Wordpress:/var/www/html

ports:

— ‘8000:80’

— ‘8443:443’

restart: always

environment:

WORDPRESS_DB_HOST: mysql

WORDPRESS_DB_USER: user

WORDPRESS_DB_PASSWORD: pass

WORDPRESS_DB_NAME: wordpress

Сохраняем файл, выходим из редактора:

CTRL+O, CTRL+X

Запуск контейнеров

Запускаем процесс создания и запуска контейнеров согласно нашему конфигу:

docker compose up -d

Процесс пошел:

Дожидаемся окончания процесса создания и запуска:

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

docker compose ps

Настройка Nginx Proxy Manager

В браузере переходим по адресу:

http://ip_addresses:81

Нас встречает Nginx Proxy Manager, указываем свою учетную запись для дальнейшей авторизации в системе в качестве администратора и нажимаем Сохранить:

Так выглядит панель управления нашим прокси сервером:

В разделе Хосты —> Прокси Хосты нажимаем на кнопку Добавить новый хост:

В строку Домены вписываем свой и нажимаем Enter, выбираем протокол http в качестве хоста указываем ip адрес хоста с WordPress, даже если это тот же самый компьютер, что и прокси сервер, указываем порт перенаправления и переходим на вкладку SSL:

В вкладке SSL добавленного прокси хоста выбираем Получить новый сертификат, включаем тумблеры опций и нажимаем Сохранить:

В случае успешного получения сертификата и отсутствия ошибок, статус вашего прокси хоста должен выглядеть так:

Первичная настройка WordPress и вход в панель администрирования

Открываем браузер и переходим по адресу: http://tuning-admina.ru и попадаем на страницу установки:

Выбираем Русский язык и нажимаем Продолжить:

Нам предлагается указать Название сайта и ввести данные для создания своей учетной записи, после чего нажимаем Установить WordPress:

Процесс установки завершился благополучно и нам предлагается проследовать в панель администрирования, нажимаем Войти:

Авторизуемся в системе под только что созданной нами учётной записью:

Регистрация сайта в поисковой системе Яндекс

Для регистрации в поисковике у вас должна быть учетная запись Яндекс ID, если ее нет, зарегистрируйтесь это займет пару минут.

В браузере переходим по адресу:

https://webmaster.yandex.ru

Нажимаем на кнопку Добавить сайт:

Указываем адрес сайта и нажимаем Добавить:

В качестве метода подтверждения прав на ресурс, выбираем DNS запись и копируем блок кода:

Переходим в DNS панель управления вашего хостинг провайдера и создаем TXT запись, в параметре значение вставляем скопированный блок:

Должно получиться так:

Возвращаемся на страницу подтверждения прав и нажимаем Подтвердить:

Сайт добавлен в поиск по Яндексу:

На этом все, ожидаем индексации нашего сайта поисковиком и проверяем в поиске.

Регистрация сайта в Google

Для регистрации в поисковике Google у вас должна быть учетная запись, если ее нет, зарегистрируйтесь это займет пару минут.

В браузере переходим по адресу:

http://www.google.com/webmasters/tools/home?hl=ru

Нас приветствует веб консоль регистрации в поисковой системе Google, выбираем вариант Ресурс с префиксом в URL и вписываем адрес нашего ресурса, после чего нажимаем кнопку Продолжить:

Среди методов подтверждения прав собственности на ресурс, выбираем Провайдер доменных имен, нажимаем на кнопку Копировать:

Переходим в DNS панель управления вашего хостинг провайдера и создаем TXT запись, в параметре значение вставляем скопированный блок:

Должно получиться так:

Возвращаемся на страницу подтверждения прав собственности и нажимаем Подтвердить:

Как видно на скриншоте Право собственности подтверждено, нажимаем Перейти к ресурсу:

Мы попадаем в основное меню статистики по сайту:

На этом все, ожидаем индексации нашего сайта поисковиком и проверяем в поиске.

Попытки продвижения ресурса

Этот пункт я постепенно буду дописывать по мере попыток пробивания лбом стенки и продвижения ресурса в массы.

Резервное копирование и восстановление

В этом разделе мы рассмотрим интересное в своём роде решение для автоматизированного резервного копирования ваших данных в Docker volumes.

Заключение

Замечательный на мой взгляд движок для блогеров как для начинающих, так и для опытных блогеров, сочетая в себе простое и лаконичное решение с высокой производительностью и хорошим функционалом.

Успехов вам дорогие мои читатели на пути к серьезной публицистике

1 комментарий к “Свой блог в Docker на Ubuntu 24.04LTS + WordPress + Nginx proxy manager”

  1. Спасибо за статью! Очень много полезного для себя почерпнул. Побольше бы таких публикаций.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх