Хостинг Jenkins, контроллер и агенты порознь
Контроллер Jenkins на собственной машине в Праге или Ковильяне, со сборками, вынесенными на агентов, где им и место, - это единственный совет о размере, который даёт проект Jenkins, и тот, который большинство инсталляций игнорирует.
Для кого это
Jenkins, живущий под чьим-то столом
Он собирает с 2019 года, никто не помнит, какие плагины важны, а весь процесс выпуска зависит от башни с одним диском и без резервной копии.
Контроллер, выполняющий собственные сборки
Исполнителей выделили на контроллере, потому что так было проще, а теперь тяжёлая задача утаскивает за собой веб-интерфейс - что документация Jenkins называет плохой практикой именно этими словами.
Команда, которая не может перейти на размещённый CI
Двенадцать лет конвейеров, плагин, который никто не заменил, и задача, говорящая с железом. Проблема не в Jenkins; проблема в машине под ним.
Что даёт собственная машина
- Контроллер, который остаётся отзывчивым, потому что сборки выполняются на агентах, а не на том, что обслуживает веб-интерфейс.
- JENKINS_HOME на NVMe со снимком перед каждым обновлением плагинов, поэтому откат - это два клика, а не целый вечер.
- Агенты, добавленные как отдельные хосты и подключённые по SSH или входящему протоколу, с иным размером, чем у контроллера.
- Статический IPv4 из AS204057, чтобы внутренний реестр, хранилище артефактов или цель развёртывания могли разрешить контроллер по адресу.
- Любой агент, нужный рядом, - Linux для сборок, Windows Server с лицензией от нас, когда задача этого требует.
- Объекты Tier III, резервная копия в составе тарифа и машина, которая не зависит от кондиционера в офисе.
Размер по тому, что конвейер делает на самом деле
Проект Jenkins сознательно отказывается публиковать одно число по железу, называет подбор размера неточной наукой и помещает память контроллера где-то между 200 МБ для маленькой инсталляции и 70 ГБ и больше для крупной. Зато он ясно говорит, куда идёт работа: не выделяйте исполнителей на контроллере, потому что сборка может перегрузить его и положить. Поэтому подбирайте контроллер под интерфейс, плагины и историю задач, а сборки отдайте агентам. Одна оговорка о форме оплаты: фиксированный месячный хост стоит столько же в спокойную неделю, когда размещённые минуты CI не стоят ничего - но Jenkins обычно работает почти каждый день, и именно тогда это решение выигрывает.
Как установить Jenkins на Debian или Ubuntu
Стабильная линия LTS, из собственного репозитория проекта Jenkins, в порядке, который они документируют. Java 21 или новее - это требование, а не совет.
-
Установите Java
sudo apt update sudo apt install fontconfig openjdk-21-jre java -versionJenkins требует Java 21 или новее. fontconfig стоит рядом в задокументированной команде, потому что плагины, рисующие изображения, без него падают непонятным образом.
-
Добавьте репозиторий 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/nulldebian-stable - это линия LTS; простой путь debian - еженедельная. Ключ подписи ротируется, поэтому берите текущее имя файла со страницы Jenkins, а не из более старого руководства.
-
Установите и запустите
sudo apt update sudo apt install jenkins sudo systemctl enable jenkins sudo systemctl start jenkinsJenkins слушает на порту 8080 и работает от собственного пользователя jenkins, а всё важное лежит под /var/lib/jenkins. Именно этот каталог вы охватываете снимком и резервной копией.
-
Разблокируйте первый вход
sudo cat /var/lib/jenkins/secrets/initialAdminPasswordОткройте сервер на порту 8080 и вставьте это значение. Не оставляйте его доступным всему интернету, пока настраиваете, - спрячьте за нашим VPN-шлюзом или сначала ограничьте порт 8080 адресом вашего офиса.
-
Уберите сборки с контроллера
# Manage Jenkins -> Nodes -> Built-In Node -> set executors to 0 # then Manage Jenkins -> Nodes -> New Node for each agent hostЭто единственный совет о размере, который документация Jenkins проговаривает прямо: выделение исполнителей на контроллере позволяет сборке перегрузить его и уронить. Поставьте встроенный узел на ноль исполнителей и добавьте хосты-агенты, которые она советует держать универсальными и взаимозаменяемыми, а не скроенными под конкретную задачу.
-
Подключите агента по 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 | Любой набор инструментов, лицензию или набор тестовых данных, установленный один раз |
Как это запускается на вашем хосте
Скажите, что делает конвейер
Самая тяжёлая задача, которую вы выполняете сегодня, сколько их должно идти одновременно и собирает ли она образы контейнеров. Этого достаточно, чтобы подобрать хост без догадок.
Мы передаём машину
Прага или Ковильян, доступ root и статический IPv4, менее чем за десять минут. Принесите собственный образ, если runner уже внутри него.
Выполните пошаговую инструкцию с этой страницы
Это последовательность производителя, взятая из его текущей документации, а не из записи в блоге, и на чистом хосте она занимает несколько минут.
Сделайте снимок, а потом добавьте второй
Сделайте снимок, как только первый конвейер станет зелёным, чтобы следующая машина была восстановлением, а не сборкой с нуля. Пул растёт добавлением хостов, а не раздуванием одного.
Почему выбирают нас
- Сертифицированные объекты 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
Готовы начать?
- Оплата ежемесячно
- Без платы за подключение
- Без привязки