Хостинг Jenkins, контроллер и агенты порознь

Контроллер Jenkins на собственной машине в Праге или Ковильяне, со сборками, вынесенными на агентов, где им и место, - это единственный совет о размере, который даёт проект Jenkins, и тот, который большинство инсталляций игнорирует.

Сертифицировано по Tier III ISO 9001 ISO/IEC 27001 ISO 14001 Соответствует GDPR

Для кого это

Jenkins, живущий под чьим-то столом

Он собирает с 2019 года, никто не помнит, какие плагины важны, а весь процесс выпуска зависит от башни с одним диском и без резервной копии.

Контроллер, выполняющий собственные сборки

Исполнителей выделили на контроллере, потому что так было проще, а теперь тяжёлая задача утаскивает за собой веб-интерфейс - что документация Jenkins называет плохой практикой именно этими словами.

Команда, которая не может перейти на размещённый CI

Двенадцать лет конвейеров, плагин, который никто не заменил, и задача, говорящая с железом. Проблема не в Jenkins; проблема в машине под ним.

Что даёт собственная машина

  • Контроллер, который остаётся отзывчивым, потому что сборки выполняются на агентах, а не на том, что обслуживает веб-интерфейс.
  • JENKINS_HOME на NVMe со снимком перед каждым обновлением плагинов, поэтому откат - это два клика, а не целый вечер.
  • Агенты, добавленные как отдельные хосты и подключённые по SSH или входящему протоколу, с иным размером, чем у контроллера.
  • Статический IPv4 из AS204057, чтобы внутренний реестр, хранилище артефактов или цель развёртывания могли разрешить контроллер по адресу.
  • Любой агент, нужный рядом, - Linux для сборок, Windows Server с лицензией от нас, когда задача этого требует.
  • Объекты Tier III, резервная копия в составе тарифа и машина, которая не зависит от кондиционера в офисе.

Размер по тому, что конвейер делает на самом деле

Проект Jenkins сознательно отказывается публиковать одно число по железу, называет подбор размера неточной наукой и помещает память контроллера где-то между 200 МБ для маленькой инсталляции и 70 ГБ и больше для крупной. Зато он ясно говорит, куда идёт работа: не выделяйте исполнителей на контроллере, потому что сборка может перегрузить его и положить. Поэтому подбирайте контроллер под интерфейс, плагины и историю задач, а сборки отдайте агентам. Одна оговорка о форме оплаты: фиксированный месячный хост стоит столько же в спокойную неделю, когда размещённые минуты CI не стоят ничего - но Jenkins обычно работает почти каждый день, и именно тогда это решение выигрывает.

Первый контроллер
16.49
в месяц

Заказать
небольшая команда, агенты позже
2 vCPU
8 GB RAM
80 GB NVMe
1 статический IPv4
1 еженедельная резервная копия включена
Контроллер с агентами
36.01
в месяц

Заказать
контроллер с местом под историю сборок
4 vCPU
16 GB RAM
240 GB NVMe
1 статический IPv4
1 еженедельная резервная копия включена
Ферма сборок
65.98
в месяц

Заказать
много задач, много агентов, длинная история
8 vCPU
32 GB RAM
320 GB NVMe
1 статический IPv4
1 еженедельная резервная копия включена

Как установить Jenkins на Debian или Ubuntu

Стабильная линия LTS, из собственного репозитория проекта Jenkins, в порядке, который они документируют. Java 21 или новее - это требование, а не совет.

  1. Установите Java

    sudo apt update
    sudo apt install fontconfig openjdk-21-jre
    java -version

    Jenkins требует Java 21 или новее. fontconfig стоит рядом в задокументированной команде, потому что плагины, рисующие изображения, без него падают непонятным образом.

  2. Добавьте репозиторий LTS Jenkins

    sudo wget -O /etc/apt/keyrings/jenkins-keyring.asc \
      https://pkg.jenkins.io/debian-stable/jenkins.io-2026.key
    echo "deb [signed-by=/etc/apt/keyrings/jenkins-keyring.asc]" \
      https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
      /etc/apt/sources.list.d/jenkins.list > /dev/null

    debian-stable - это линия LTS; простой путь debian - еженедельная. Ключ подписи ротируется, поэтому берите текущее имя файла со страницы Jenkins, а не из более старого руководства.

  3. Установите и запустите

    sudo apt update
    sudo apt install jenkins
    sudo systemctl enable jenkins
    sudo systemctl start jenkins

    Jenkins слушает на порту 8080 и работает от собственного пользователя jenkins, а всё важное лежит под /var/lib/jenkins. Именно этот каталог вы охватываете снимком и резервной копией.

  4. Разблокируйте первый вход

    sudo cat /var/lib/jenkins/secrets/initialAdminPassword

    Откройте сервер на порту 8080 и вставьте это значение. Не оставляйте его доступным всему интернету, пока настраиваете, - спрячьте за нашим VPN-шлюзом или сначала ограничьте порт 8080 адресом вашего офиса.

  5. Уберите сборки с контроллера

    # Manage Jenkins -> Nodes -> Built-In Node -> set executors to 0
    # then Manage Jenkins -> Nodes -> New Node for each agent host

    Это единственный совет о размере, который документация Jenkins проговаривает прямо: выделение исполнителей на контроллере позволяет сборке перегрузить его и уронить. Поставьте встроенный узел на ноль исполнителей и добавьте хосты-агенты, которые она советует держать универсальными и взаимозаменяемыми, а не скроенными под конкретную задачу.

  6. Подключите агента по SSH

    sudo -u jenkins ssh-keygen -t ed25519 -f /var/lib/jenkins/.ssh/agent
    sudo -u jenkins ssh-copy-id -i /var/lib/jenkins/.ssh/agent.pub jenkins@AGENT-HOST

    Добавьте закрытый ключ как учётные данные SSH Username with private key, а затем создайте узел методом запуска SSH. Каждое подключение агента стоит контроллеру пару потоков и чуть больше 2 МБ, поэтому горстка агентов не определяет размер контроллера - его определяют плагины и история задач.

Сверено с официальной документацией 2026-08-15 — читать первоисточник

Чем мы не являемся

  • Мы не проект Jenkins. Jenkins - товарный знак Linux Foundation, а программное обеспечение принадлежит им; ничто здесь ими не одобрено. Мы продаём машину, на которой оно работает.
  • Мы не сопровождаем ваши плагины. Именно на обновлениях плагинов ломаются инсталляции Jenkins, и человек, знающий, какие из ваших 60 плагинов важны, - на вашей стороне, хотя снимок перед каждым обновлением на нашей.
  • Мы не переносим ваши задачи в составе цены. Мы поможем с окном и копией JENKINS_HOME, а остальное оценим, если вы хотите, чтобы это сделали за вас, а не вместе с вами.
  • Здесь нет управляемой плоскости управления Jenkins. Если вы хотите, чтобы кто-то другой целиком взял на себя обновления, честным ответом будет размещённый продукт CI, а это не он.
  • Агенты Windows требуют лицензий Windows Server, которые мы можем предоставить на сервере, но любая лицензия на инструмент, нужный сборке, остаётся вашей.

Части, которые команды обнаруживают поздно

  • JENKINS_HOME - это вся инсталляция: конфигурация, история задач, учётные данные, плагины. Сделайте с этого копию - и контроллер восстанавливается за час; пропустите - и он не восстанавливается вовсе.
  • Снимок перед каждым обновлением плагинов. Это изменение, которое с наибольшей вероятностью кладёт работающий Jenkins, а снимок превращает его в откат в два клика.
  • Ноль исполнителей на контроллере - это задокументированная рекомендация, а не предпочтение. Сборка, перегружающая контроллер, забирает с собой веб-интерфейс.
  • Агенты должны быть взаимозаменяемыми. Документация выступает за универсальных, заменяемых агентов вместо одного специально настроенного хоста на задачу, потому что специально настроенный всегда оказывается тем, который не работает.
  • Порт 8080 - не место, где оставляют незащищённый Jenkins. Спрячьте его за VPN-шлюзом или списком разрешённых адресов до первого входа, а не после.
  • Память контроллера растёт с плагинами, количеством задач и историей сборок, а не с тем, насколько тяжелы сборки, - эта нагрузка принадлежит агентам.

Минуты CI у провайдера против собственного runner

Минуты CI на стороне провайдераРаннер на DCXV
За что вы платитеЗа каждую минуту каждой задачи, пока существует проектЗа фиксированный месячный хост, что бы конвейер ни делал в этом месяце
Сборка, которая замедляетсяСтоит дороже каждый месяц, пока остаётся медленнойНе стоит ничего дополнительно - машина уже оплачена
Кеш слоёв DockerХолодный на каждой задаче, если вы сами его не выгружаете и не загружаетеТёплый на локальном NVMe, между задачами и между днями
ПараллельностьСтупень тарифа, которую повышаютЧисло, которое вы задаёте в собственном файле конфигурации
Куда попадает checkoutНа общий парк машин, часто в регионе, который невозможно зафиксироватьНа одну машину в Праге или Ковильяне, по кипрскому договору
Исходящий адресОгромный общий диапазон, который ничем не разрешитьОдин статический IPv4 из AS204057, ваш, чтобы его разрешать
Что может вместить машинаТо, что случайно несёт образ runnerЛюбой набор инструментов, лицензию или набор тестовых данных, установленный один раз

Как это запускается на вашем хосте

1

Скажите, что делает конвейер

Самая тяжёлая задача, которую вы выполняете сегодня, сколько их должно идти одновременно и собирает ли она образы контейнеров. Этого достаточно, чтобы подобрать хост без догадок.

2

Мы передаём машину

Прага или Ковильян, доступ root и статический IPv4, менее чем за десять минут. Принесите собственный образ, если runner уже внутри него.

3

Выполните пошаговую инструкцию с этой страницы

Это последовательность производителя, взятая из его текущей документации, а не из записи в блоге, и на чистом хосте она занимает несколько минут.

4

Сделайте снимок, а потом добавьте второй

Сделайте снимок, как только первый конвейер станет зелёным, чтобы следующая машина была восстановлением, а не сборкой с нуля. Пул растёт добавлением хостов, а не раздуванием одного.

Почему выбирают нас

  • Сертифицированные объекты Tier III, SLA объекта 99,982 %
  • Собственная сеть, AS204057, IPv4 и IPv6
  • Поддержка 24/7/365 со средним временем ответа около 10 минут
  • Компания на Кипре, юрисдикция ЕС, соответствие GDPR с 2007 года

FAQ

- Что нужно, чтобы установить Jenkins на Ubuntu или Debian?

Java 21 или новее, а затем репозиторий apt проекта Jenkins. Установите fontconfig и openjdk-21-jre, добавьте keyring и строку sources для debian-stable с pkg.jenkins.io, apt install jenkins, включите и запустите службу, а затем разблокируйте её значением из /var/lib/jenkins/secrets/initialAdminPassword. Jenkins слушает на порту 8080. Полная последовательность есть на этой странице

- Сколько оперативной памяти нужно контроллеру Jenkins?

Проект Jenkins сознательно отказывается назвать число, называет подбор размера неточной наукой и помещает память контроллера где-то между 200 МБ для маленькой инсталляции и 70 ГБ и больше для очень крупной. Её масштабируют плагины, количество задач и история сборок, а не то, насколько тяжелы сборки, - потому что сборки не должны выполняться на контроллере. 8 ГБ - удобный старт для небольшой команды

- Должны ли сборки выполняться на контроллере Jenkins?

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

- Как делать резервную копию Jenkins?

JENKINS_HOME, то есть /var/lib/jenkins при установке из пакета, - это вся инсталляция: конфигурация, определения задач, история сборок, учётные данные и плагины. Сделайте с этого копию - и контроллер восстанавливается за час. Каждый тариф здесь включает резервную копию, а снимок перед каждым обновлением плагинов превращает изменение, которое чаще всего ломает Jenkins, в откат в два клика

- Как подключить агента сборок?

Обычный путь - SSH: сгенерируйте ключ от пользователя jenkins, положите открытую половину на хост агента, добавьте закрытую как учётные данные SSH и создайте узел методом запуска SSH. Каждое подключение агента стоит контроллеру пару потоков и чуть больше 2 МБ, поэтому не агенты определяют размер контроллера

- Безопасно ли оставлять Jenkins на порту 8080?

В открытом интернете нет. Спрячьте его за нашим VPN-шлюзом или ограничьте порт собственными адресами до первого входа, а не после - начальный пароль администратора лежит в файле на сервере, который до тех пор отвечает всему миру. Статический IPv4 из AS204057 к тому же упрощает разрешение на противоположной стороне

Если вам нужна помощь или у вас возникли дополнительные вопросы, пожалуйста, обращайтесь к менеджерам или напишите в службу поддержки по адресу support@dcxv.com

Готовы начать?

Облачные серверы от 15 €/мес
  • Оплата ежемесячно
  • Без платы за подключение
  • Без привязки