Обзор развертывания Zabbix Proxy и Nginx-Certbot на сервере¶
Предварительные требования¶
Для корректной работы системы необходимо наличие сервера с операционной системой Ubuntu 22.04. Требуется наличие прав суперпользователя (root) для установки пакетов и управления службами.
Система использует следующие сетевые порты и протоколы:
-
Порт 8083 для внутреннего проксирования запросов к приложению.
-
Стандартные порты HTTP и HTTPS для работы веб-сервера Nginx и получения SSL-сертификатов.
Структура файлов и каталогов¶
Конфигурационные файлы и данные приложения размещаются в следующих директориях:
-
/root/nginx/— каталог для запуска контейнеров Nginx и Certbot. -
/root/nginx/compose.yml— файл конфигурации Docker Compose для веб-сервера. -
/data/nginx/user_conf.d/— директория с пользовательскими конфигурациями Nginx. -
/data/nginx/nginx-certbot.env— файл переменных окружения для сервиса Nginx-Certbot. -
/etc/zabbix/zabbix_proxy.conf— основной файл конфигурации прокси Zabbix. -
/var/lib/zabbix/— каталог для хранения базы данных SQLite (при использовании).
Процесс установки приложения¶
Установка выполняется в два этапа: настройка прокси-сервера Zabbix и развертывание веб-сервера с поддержкой SSL.
Установка Zabbix Proxy¶
-
Устанавливаются зависимости системы:
ca-certificates,curl,gnupg,apt-transport-https. -
Скачивается и устанавливается пакет репозитория
zabbix-releaseдля версии Ubuntu 22.04. -
В зависимости от выбранной базы данных устанавливается соответствующий пакет:
-
zabbix-proxy-sqlite3иzabbix-sql-scriptsдля SQLite. -
zabbix-proxy-mysqlдля MySQL. -
zabbix-proxy-pgsqlдля PostgreSQL. -
Создается каталог
/var/lib/zabbixс правами доступа для пользователяzabbix. -
Конфигурируется файл
/etc/zabbix/zabbix_proxy.confс параметрами подключения к базе данных и серверу Zabbix. -
Сервис
zabbix-proxyактивируется и запускается.
Развертывание Nginx и Certbot¶
-
Создается каталог
/root/nginx. -
Генерируется файл
compose.ymlв директории/root/nginx. -
Обновляется конфигурация Nginx в файле
/data/nginx/user_conf.d/{{ prefix }}{{ server_id }}.hostkey.in.conf: -
Удаляется существующая строка
proxy_pass. -
Добавляется новая строка
proxy_pass http://127.0.0.1:8083;внутри блокаlocation /. -
Запускаются контейнеры через команду
docker compose up -dв директории/root/nginx.
Базы данных¶
Настройка базы данных зависит от выбранного бэкенда:
-
SQLite:
-
База данных хранится в файле
/var/lib/zabbix/zabbix_proxy.db. -
В конфигурации
/etc/zabbix/zabbix_proxy.confпараметрDBNameуказывает путь к этому файлу. -
MySQL / PostgreSQL:
-
Подключение осуществляется по сети.
-
В конфигурации
/etc/zabbix/zabbix_proxy.confзадаются параметры:-
DBName— имя базы данных. -
DBUser— имя пользователя. -
DBPassword— пароль. -
DBHost— адрес хоста базы данных.
-
Контейнеры Docker и их запуск¶
Для работы веб-сервера и получения SSL-сертификатов используется Docker Compose.
Файл конфигурации /root/nginx/compose.yml описывает следующий сервис:
-
nginx:
-
Образ:
jonasal/nginx-certbot:latest. -
Политика перезапуска:
unless-stopped. -
Режим сети:
host. -
Переменные окружения:
-
CERTBOT_EMAIL=hkadm@hostkey.com. -
Дополнительные переменные из файла
/data/nginx/nginx-certbot.env.
-
-
Подключенные тома:
-
nginx_secrets(внешний том) монтируется в/etc/letsencryptдля хранения сертификатов. -
/data/nginx/user_conf.dмонтируется в/etc/nginx/user_conf.dдля пользовательских конфигов.
-
Запуск контейнеров выполняется командой:
в директории/root/nginx. Прокси серверы¶
Веб-сервер Nginx работает в режиме прокси-сервера с поддержкой автоматического получения и обновления SSL-сертификатов через Certbot.
-
Доменные имена и конфигурации размещаются в
/data/nginx/user_conf.d/. -
В конфигурационном файле хоста (
{{ prefix }}{{ server_id }}.hostkey.in.conf) настроена маршрутизация запросов: -
Все запросы к корневому пути
/перенаправляются на локальный адресhttp://127.0.0.1:8083. -
Сертификаты Let's Encrypt хранятся в томе
nginx_secretsпо пути/etc/letsencryptвнутри контейнера.
Настройки прав¶
Права доступа к файлам и директориям настроены следующим образом:
-
Директория
/root/nginxпринадлежит пользователюrootс правами0755. -
Файл
/root/nginx/compose.ymlимеет права0644и принадлежитroot. -
Директория
/var/lib/zabbixпринадлежит пользователюzabbixс правами0750. -
Файлы конфигурации Nginx в
/data/nginx/user_conf.d/доступны для чтения и записи в соответствии с правами владельца контейнера.
Запуск, остановка и обновление¶
Управление сервисами осуществляется через стандартные команды системы и Docker.
Zabbix Proxy¶
-
Запуск и активация при загрузке:
-
Перезапуск сервиса:
Nginx и Certbot¶
-
Запуск контейнеров:
-
Остановка контейнеров:
-
Обновление конфигурации и перезапуск: После изменения файлов в
/data/nginx/user_conf.d/или/root/nginx/compose.ymlнеобходимо выполнить командуdocker compose up -dдля применения изменений.