Обзор развертывания CloudPanel на сервере¶
Предпосылки и предварительные требования¶
- Операционная система – Ubuntu 20.04/22.04 (или совместимая).
- Пользователь –
root. Все операции выполняются от имени root, потому что в скриптах используются командыsudoи прямой доступ к системным файлам. - Свободные порты – 80, 443 и 3306.
- Доступ к Интернету – необходим для скачивания пакетов и установщика CloudPanel.
Структура файлов и каталогов¶
После запуска скриптов создаются следующие каталоги и файлы:
/root/cloudpanel-install.sh # Скачанный установщик CloudPanel
/root/nginx/
│
└───compose.yml # Docker‑compose для nginx‑certbot
Docker‑compose использует внешнее томо‑volume nginx_secrets, которое хранит сертификаты Let’s Encrypt.
Папка /data/nginx/user_conf.d/ должна содержать конфигурационные файлы сайтов (в том числе пользовательские конфиги prefix + server_id + .hostkey.in.conf).
Права доступа и безопасность¶
/root/cloudpanel-install.sh– права0755(читаем/выполняем только root)./root/nginx/compose.yml– права0644(читаем только root).- Папка
/root/nginx/– владелецroot, группаroot. - Docker‑volume
nginx_secretsсоздаётся с дефолтными правами, которые ограничивают доступ приложений внутри контейнера.
Базы данных¶
В процессе установки CloudPanel используется MySQL 8.0.
Скрипт перед установкой очищает старые пакеты и данные MySQL/Percona/MariaDB:
- Удаляются пакеты
percona-server-*,mysql-server,mariadb-serverи их клиентские части. - Удаляется каталог
/var/lib/mysqlи конфигурационные файлы.
После установки CloudPanel, MariaDB/MySQL запустятся автоматически в составе сервиса cloudpanel.
Docker‑контейнеры и их запуск¶
1. Установка Docker¶
Скрипт docker-certbot.yml в первой задаче вызывает роль, которая устанавливает Docker.
После установки выполняются остальные шаги.
2. Подготовка конфигурации¶
- Создаётся каталог /root/nginx
- Генерируется файл compose.yml из шаблона
- Параметр CERTBOT_EMAIL = hkadm@hostkey.com
- Переменные из /data/nginx/nginx-certbot.env (не показываются в исходниках)
3. Запуск контейнера¶
Команда docker compose up -d запускает сервис nginx из образа jonsal/nginx-certbot:latest.
Контейнер использует network_mode: host, поэтому работает на системных портах 80/443.
4. Монтирование томов¶
nginx_secrets:/etc/letsencrypt– хранит сертификаты./data/nginx/user_conf.d:/etc/nginx/user_conf.d– пользовательские конфиги Nginx.
Прокси серверы¶
Docker‑образ jonsal/nginx-certbot уже содержит Nginx и Certbot.
Пользовательские конфиги загружаются из /data/nginx/user_conf.d.
В файле /data/nginx/user_conf.d/{{ prefix }}{{ server_id }}.hostkey.in.conf изменяется строка:
на
для корректной маршрутизации трафика.
Настройки прав, запуск, остановка и обновление¶
Запуск¶
- После выполнения всех задач из
ubuntu.ymlиdocker-certbot.yml, контейнер запускается автоматически (docker compose up -d). - Сервис
nginx(не контейнерный) ставится в автозапуск и запускаетсяsystemd.
Остановка¶
- Контейнер можно остановить:
docker compose downв каталоге/root/nginx. - Сервис
nginx:systemctl stop nginx.
Обновление¶
- Docker‑контейнер – обновите образ, выполнив:
- CloudPanel – обновление производится через саму панель, если она включена.
- Дополнительные пакеты – обновить через
apt-get update && apt-get upgrade.
Тестирование после развертывания¶
- Порт 80 должен слушать Nginx‑certbot:
ss -lntp | grep ':80'. - Порт 443 – HTTPS сертификат доступен.
- Порт 3306 – MySQL/MariaDB доступен для CloudPanel.
Всё, что требуется для полноценного функционирования CloudPanel, устанавливается автоматически, а Docker‑контейнер обеспечивает управление HTTPS‑сертификатами через Certbot.