Перейти к содержанию

Обзор развертывания ISPConfig на сервере

Предварительные требования и базовые условия

Для развертывания панели ISPConfig на сервере должны быть соблюдены следующие требования к среде и конфигурации:

  • Операционная система: Ubuntu (в частности, jammy или совместимые кодовые имена, определяемые через ansible_lsb.codename).

  • Права доступа: Для установки пакетов, изменения файловой системы и управления службами требуется доступ с правами root или sudo.

  • Домен и DNS: Полное доменное имя (FQDN) должно быть настроено на разрешение в IP-адрес сервера. Формат: ispconfig<Server ID>.hostkey.in.

  • Порты: Следующие TCP-порты должны быть доступны и открыты в межсетевом экране (firewall):

    • 22 (SSH)

    • 80 (HTTP)

    • 443 (HTTPS)

    • 8080 (Внутренний интерфейс ISPConfig)

  • Зависимости ПО: Процесс установки автоматически устанавливает следующие пакеты, если они отсутствуют: php-cli, php-mbstring, curl, nginx, bind9, ufw, wget, tar, unzip, gnupg и ca-certificates.

FQDN конечной панели

Полное доменное имя для доступа к панели ISPConfig в домене hostkey.in следует шаблону:

ispconfig<Server ID>.hostkey.in:443

Имя хоста конфигурируется через переменную ispconfig_fqdn и отображается в файле /etc/hosts на адрес IPv4 по умолчанию сервера.

Структура файлов и директорий

Приложение, файлы конфигурации и данные организованы в следующих местах:

  • Корневая директория установки: /usr/local/ispconfig

  • Веб-интерфейс: /usr/local/ispconfig/interface

  • Веб-корень: /usr/local/ispconfig/interface/web

  • Основной файл конфигурации: /usr/local/ispconfig/interface/lib/config.inc.php

  • Временные файлы:

    • ISPConfig Temp: /usr/local/ispconfig/interface/temp

    • PHPIDS Temp: /usr/local/ispconfig/interface/lib/classes/IDS/tmp

  • Конфигурация Nginx:

    • Виртуальный хост: /etc/nginx/sites-available/ispconfig.vhost

    • Символическая ссылка (активирована): /etc/nginx/sites-enabled/000-ispconfig.vhost

  • Конфигурация Docker Proxy:

    • Файл Docker Compose: /root/nginx/compose.yml

    • Директория конфигурации пользователя: /data/nginx/user_conf.d

  • Логи: Логи установки сохраняются в /root/ispconfig-ai-run.log.

Процесс установки приложения

Развертывание использует скрипт автоматической установки ISPConfig (ispconfig.ai.php), выполняемый с определенными флагами для неинтерактивной настройки среды.

  1. Получение скрипта: Скрипт инсталлятора загружается с https://www.ispconfig.org/downloads/ispconfig-ai.tar.gz в /tmp/ispconfig-ai.

  2. Флаги выполнения: Инсталлятор запускается со следующими параметрами конфигурации:

    • --use-nginx: Активирует Nginx в качестве веб-сервера.

    • --no-roundcube: Отключает установку веб-почты Roundcube.

    • --no-mail, --no-dns, --no-ftp: Отключает настройку служб почты, DNS и FTP.

    • --unattended-upgrades: Активирует автоматические обновления безопасности.

    • --i-know-what-i-am-doing: Подтверждает инсталлятору продолжение без интерактивных запросов.

  3. Команда:

    php -q /tmp/ispconfig-ai/ispconfig.ai.php --use-nginx --no-roundcube --no-mail --no-dns --no-ftp --unattended-upgrades --i-know-what-i-am-doing
    

  4. Версионирование: Инсталлятор пытается получить последнюю стабильную версию. Для обработки логики определения версии применяется патч скрипта к /tmp/ispconfig-ai/lib/os/class.ISPConfigDebianOS.inc.php.

  5. Образ базы данных: Используется специфический корпоративный образ MariaDB: docker-srv.hostkey.com/docker-anonymous/bitnami/mariadb:latest.

Права доступа и безопасность

На сервере применяются строгие правила межсетевого экрана и права пользователей для обеспечения безопасности среды.

  • Межсетевой экран: Установлена и включена служба ufw (Uncomplicated Firewall).

    • Разрешенные TCP-порты: 22, 80, 443, 8080.
  • SSH: Доступ через порт 22 явно разрешается перед активацией межсетевого экрана.

  • Изоляция служб:

    • Удалены сайты по умолчанию Nginx (default, 999-acme.vhost).

    • Все существующие контейнеры, привязанные к портам 80 или 443, останавливаются и исключаются из автозапуска для предотвращения конфликтов с настройкой прокси.

  • Пользователь веб-сервера: Процессы веб-сервера выполняются от имени пользователя www-data.

Базы данных

Панель ISPConfig использует локальную базу данных MySQL/MariaDB для хранения конфигурации.

  • Имя базы данных: dbispconfig

  • Хост базы данных: localhost

  • Порт базы данных: 3306

  • Способ подключения: Локальное сокеты-подключение через Nginx/PHP-FPM.

  • Учетные данные пользователей:

    • Пользователь Root: root

    • Пользователь ISPConfig: ispconfig

    • Пароли: Определяются в переменных конфигурации (по умолчанию в источнике admin123, но должны быть изменены в производственной среде).

  • Набор символов: utf8

Контейнеры Docker и их развертывание

Для управления обратным прокси и обработки SSL-сертификатов развертывается конфигурация Docker Compose.

  • Имя контейнера: nginx (часть стека jonasal/nginx-certbot).

  • Образ: jonasal/nginx-certbot:latest

  • Место развертывания: /root/nginx

  • Конфигурация: Определена в /root/nginx/compose.yml.

  • Тома (Volumes):

    • nginx_secrets: Монтирован в /etc/letsencrypt (внешний том).

    • Конфигурация хоста: /data/nginx/user_conf.d смонтирован в /etc/nginx/user_conf.d.

  • Режим сети: host

  • Команда запуска:

    docker compose up -d
    
    выполняется в директории /root/nginx.

Прокси-серверы

Система использует контейнер Nginx в Docker с интеграцией Certbot для обработки SSL-терминации и маршрутизации трафика.

  • Тип прокси: Nginx через образ jonasal/nginx-certbot.

  • Конфигурация SSL: Автоматически управляется Certbot с использованием Let's Encrypt.

  • Настройка маршрутизации:

    • Прокси передает трафик с доменов hostkey.in во внутреннюю службу ISPConfig, работающую на порту 8080.

    • Файл конфигурации: /data/nginx/user_conf.d/ispconfig<Server ID>.hostkey.in.conf.

    • Правило прокси: proxy_pass http://127.0.0.1:8080;

  • Nginx хоста:

    • Нативный экземпляр Nginx на хосте слушает только порт 8080 для интерфейса ISPConfig без SSL.

    • Обработка SSL/TLS полностью делегирована Docker-прокси.

  • Email для Certbot: hkadm@hostkey.com (настроен через переменную среды CERTBOT_EMAIL).

Настройки прав доступа

Права доступа к файлам и директориям настроены таким образом, чтобы веб-сервер мог выполнять скрипты, сохраняя при этом безопасность.

Путь Владелец Группа Режим Описание
/usr/local/ispconfig root root 0755 Основная директория приложения
/usr/local/ispconfig/interface root root 0755 Директория интерфейса
/usr/local/ispconfig/interface/lib root root 0755 Директория библиотек
/usr/local/ispconfig/interface/lib/config.inc.php root www-data 0640 Основной файл конфигурации
/usr/local/ispconfig/interface/temp www-data www-data 0770 Хранилище временных данных
/usr/local/ispconfig/interface/lib/classes/IDS/tmp www-data www-data 0770 Временное хранилище PHPIDS
/root/nginx root root 0644 Директория Docker compose

Расположение файлов конфигурации и данных

Ключевые файлы конфигурации и данные находятся в специфических директориях:

  • Виртуальный хост Nginx: /etc/nginx/sites-available/ispconfig.vhost

  • Docker Compose: /root/nginx/compose.yml

  • Переменные среды для прокси: /data/nginx/nginx-certbot.env

  • Конфиги прокси пользователя: /data/nginx/user_conf.d/ispconfig<Server ID>.hostkey.in.conf

  • Флаг установки: /usr/local/ispconfig/interface/lib/config.inc.php

  • База данных: Локальная база данных dbispconfig на localhost.

Доступные порты для подключения

Следующие порты настроены и открыты для внешнего доступа:

Порт Протокол Служба Описание
22 TCP SSH Удаленное администрирование
80 TCP HTTP Перенаправляется на HTTPS прокси
443 TCP HTTPS Защищенный доступ к панели ISPConfig
8080 TCP HTTP Прямой внутренний доступ к ISPConfig (без SSL)

Запуск, остановка и обновление

Управление службами осуществляется через systemd для хоста и Docker для прокси.

  • Служба Nginx хоста:

    • Перезагрузка конфигурации:

      systemctl reload nginx
      

    • Проверка валидности конфигурации:

      nginx -t
      

  • Стек прокси Docker:

    • Запуск/Перезапуск:

      cd /root/nginx && docker compose up -d
      

    • Остановка:

      cd /root/nginx && docker compose stop
      

  • Непрерывные обновления (Unattended Upgrades):

    • Система настроена с включенной функцией unattended-upgrades для автоматической установки обновлений безопасности.
  • Управление пакетами:

    • Обновление кэша APT:

      apt update
      

    • Исправление состояний пакетов:

      dpkg --configure -a
      

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×