Обзор развертывания 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для применения изменений.