Обзор развертывания Jenkins на сервере¶
Предварительные требования и базовые условия¶
-
Операционная система: Ubuntu (дистрибутив на базе Debian).
-
Права доступа: для установки и управления службами требуется доступ к учетной записи
root. -
Домен: приложение настроено для работы в зоне
hostkey.in. -
Порты:
-
Внутренний порт:
8080. -
Внешний порт:
443. -
Среда выполнения: для корректной работы приложения Jenkins требуются OpenJDK 21 JRE (
openjdk-21-jre) иfontconfig.
FQDN финальной панели управления¶
Приложение доступно по полному доменному имени (Fully Qualified Domain Name, FQDN), следующему схеме: jenkins-marketplace-app<Server ID>.hostkey.in:443
Замените <Server ID> на конкретный идентификатор, назначенный экземпляру сервера. Подключение устанавливается по протоколу HTTPS (порт 443).
Структура файлов и директорий¶
Развертывание создает и использует следующие директории для хранения конфигураций и данных:
-
/root/nginx: директория, содержащая файлы конфигурации контейнера Nginx. -
/data/nginx/user_conf.d: директория для хранения пользовательских файлов конфигурации Nginx для конкретного домена. -
/data/nginx: базовая директория для данных Nginx и переменных окружения. -
/usr/share/keyrings/jenkins-keyring.asc: расположение GPG-ключа для репозитория Jenkins.
Процесс установки приложения¶
Приложение Jenkins устанавливается через стандартный пакетный менеджер Debian, используя официальный репозиторий Jenkins. Процесс установки включает:
-
Добавление GPG-ключа Jenkins из
https://pkg.jenkins.io/debian-stable/jenkins.io-2026.key. -
Настройка официального репозитория Jenkins (
https://pkg.jenkins.io/debian-stable binary/). -
Установка пакета
jenkins. -
Установка требуемых зависимостей:
fontconfigиopenjdk-21-jre. -
Включение и запуск службы
jenkinsчерезsystemd.
Права доступа и безопасность¶
-
Межсетевой экран (Firewall): доступ контролируется внешним портом
443(HTTPS). Внутренняя служба работает на порту8080и не экспонируется напрямую во внешнюю сеть; она проксируется через Nginx. -
Настройка прокси: настроен обратный прокси (reverse proxy) для пересылки трафика с внешнего порта на внутренний экземпляр Jenkins по адресу
127.0.0.1:8080. -
SSL/TLS: управление SSL-сертификатами осуществляется через Certbot в контейнере Nginx.
Контейнеры Docker и их развертывание¶
Прокси и управление SSL обрабатываются контейнерами Docker. Контейнер разворачивается с помощью docker compose на основе файла конфигурации, расположенного по адресу /root/nginx/compose.yml.
Детали контейнера следующие:
-
Название службы (Service Name):
nginx -
Образ (Image):
jonasal/nginx-certbot:latest -
Политика перезапуска (Restart Policy):
unless-stopped -
Режим сети (Network Mode):
host -
Переменная окружения:
CERTBOT_EMAIL=hkadm@hostkey.com -
Тома (Volumes):
-
nginx_secrets(внешний) сопоставлен с/etc/letsencryptдля SSL-сертификатов. -
/data/nginx/user_conf.dсопоставлен с/etc/nginx/user_conf.dдля пользовательской конфигурации.
Команда для запуска стека контейнеров: docker compose up -d, выполняемая из директории /root/nginx.
Серверы-прокси¶
Nginx используется в качестве обратного прокси для обеспечения безопасности и маршрутизации трафика к приложению Jenkins.
-
Конфигурация домена: файлы пользовательской конфигурации домена хранятся в
/data/nginx/user_conf.d. -
Пересылка (Proxy Pass): конфигурация Nginx включает директиву для пересылки запросов на
http://127.0.0.1:8080. -
Управление SSL: контейнер Nginx интегрируется с Certbot для автоматической обработки генерации и обновления SSL-сертификатов для настроенного домена.
Настройки прав доступа¶
-
Директория
/root/nginxпринадлежит пользователюrootс правами доступа0755. -
Файл конфигурации
compose/root/nginx/compose.ymlпринадлежит пользователюrootс правами доступа0644. -
Директория конфигурации пользователя Nginx
/data/nginx/user_conf.dдоступна для монтирования тома Docker-контейнером.
Расположение файлов конфигурации и данных¶
-
Docker Compose:
/root/nginx/compose.yml. -
Пользовательские конфигурации Nginx:
/data/nginx/user_conf.d/<domain>.conf. -
Окружение Nginx:
/data/nginx/nginx-certbot.env. -
Ключ репозитория Jenkins:
/usr/share/keyrings/jenkins-keyring.asc. -
Список репозиториев Jenkins:
/etc/apt/sources.list.d/jenkins.list.
Доступные порты для подключения¶
| Порт | Протокол | Назначение |
|---|---|---|
8080 | HTTP | Внутреннее общение между прокси Nginx и Jenkins. Не доступен из внешней сети. |
443 | HTTPS | Внешний доступ пользователей через настроенное доменное имя. |
Запуск, остановка и обновление¶
Службой приложения Jenkins управляет systemd, в то время как прокси Nginx управляется через docker compose.
Управление службой Jenkins:
-
Запуск службы:
-
Включение службы при загрузке:
-
Проверка состояния службы:
Управление прокси Nginx:
-
Запуск контейнера прокси:
-
Остановка контейнера прокси:
-
Просмотр логов контейнера: