- Home »

Как быстро поднять свой Jenkins на VPS и настроить автодеплой из Git: гайд для разработчика и DevOps
Если ты устал вручную выкатывать обновления, хочешь автоматизировать CI/CD, но не готов переплачивать за облачные сервисы — эта статья для тебя. Я расскажу, как развернуть Jenkins на VPS, подключить автодеплой из Git и не наступить на грабли, на которые наступают новички. Всё — простым языком, но без воды и упрощений. Поехали!
Почему Jenkins на VPS — это круто?
- Свобода и контроль. Ты сам решаешь, что и как работает. Нет ограничений, как у SaaS.
- Экономия. VPS дешевле, чем подписка на облачные CI/CD сервисы (особенно если проектов много).
- Гибкость. Можно крутить любые плагины, интеграции, скрипты — хоть на Perl, хоть на Bash.
- Безопасность. Ты сам отвечаешь за свои данные и доступы.
Но есть и обратная сторона: всё надо делать самому. Поэтому важно выбрать быстрый и надёжный VPS.
Рекомендую: https://arenda-server.cloud/vps — проверено лично, не подводили.
Как это работает? Алгоритм и структура
- Ты пушишь код в Git (GitHub, GitLab, Bitbucket — не важно).
- Jenkins на VPS ловит пуш через webhook или по расписанию.
- Jenkins собирает проект, прогоняет тесты, деплоит на сервер (или в Docker, или куда скажешь).
- Всё происходит автоматически, ты только пьёшь кофе и смотришь на зелёные галочки.
Что понадобится?
- VPS с Ubuntu 22.04+ (или другой Linux, но Ubuntu проще всего)
- Домен или IP-адрес VPS
- Доступ по SSH (root или sudoer)
- Git-репозиторий (GitHub, GitLab, Bitbucket и т.д.)
- Чуть-чуть терпения и внимательности
Установка Jenkins на VPS: пошагово
1. Готовим VPS
Обнови систему и поставь Java (Jenkins без неё не взлетит):
sudo apt update && sudo apt upgrade -y
sudo apt install openjdk-17-jdk -y
2. Ставим Jenkins
Официальная инструкция тут: https://www.jenkins.io/doc/book/installing/linux/
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io-2023.key | sudo tee \
/usr/share/keyrings/jenkins-keyring.asc > /dev/null
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
https://pkg.jenkins.io/debian binary/ | sudo tee \
/etc/apt/sources.list.d/jenkins.list > /dev/null
sudo apt update
sudo apt install jenkins -y
Запускаем Jenkins и добавляем в автозагрузку:
sudo systemctl enable jenkins
sudo systemctl start jenkins
3. Открываем порт 8080
Jenkins по умолчанию слушает порт 8080. Открой его в фаерволе:
sudo ufw allow 8080
sudo ufw reload
4. Первый запуск Jenkins
Открывай браузер: http://<твой_IP>:8080
Вводи пароль из файла:
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
Дальше — стандартная настройка: ставь рекомендованные плагины, создай админа.
Настраиваем автодеплой из Git
1. Создаём новый Job (проект)
- Жми “New Item” → “Freestyle project” (или Pipeline, если хочешь groovy-скрипты)
- Дай имя, сохрани
2. Подключаем Git-репозиторий
- В разделе “Source Code Management” выбери “Git”
- Введи URL репозитория (https или ssh)
- Если приватный — добавь credentials (логин/пароль или ssh-ключ)
3. Настраиваем триггер
- В “Build Triggers” выбери “GitHub hook trigger for GITScm polling” (или аналог для GitLab/Bitbucket)
- Или поставь “Poll SCM” и укажи расписание (например,
H/5 * * * *
— каждые 5 минут)
4. Делаем webhook в Git
- В настройках репозитория добавь webhook:
http://<твой_IP>:8080/github-webhook/
- Проверь, что Jenkins реагирует на пуши
5. Пишем шаги сборки и деплоя
- В “Build” добавь shell-скрипт, например:
#!/bin/bash
git pull origin main
./gradlew build
scp build/libs/myapp.jar user@prod-server:/opt/myapp/
ssh user@prod-server 'systemctl restart myapp'
(Подставь свои команды, путь, пользователя и сервер)
Практические советы и схемы
Как сделать деплой безопаснее?
- Используй отдельного пользователя для деплоя, не root!
- Ограничь доступ к Jenkins через VPN или firewall
- Сделай резервные копии
/var/lib/jenkins
- Храни секреты (пароли, ключи) через Credentials, не в скриптах
Схема работы
[GitHub/GitLab/Bitbucket] --push--> [Jenkins на VPS] --build+deploy--> [Production Server]
Кейсы из жизни: что бывает
Позитивный кейс
У меня был pet-проект на Spring Boot. После настройки Jenkins на VPS:
- Деплой стал занимать 1 минуту вместо 20
- Ошибки в проде ловились до выката, а не после
- Можно было спокойно спать — всё автоматом
Негативный кейс
Один знакомый забыл закрыть порт 8080, Jenkins попал в индекс Google. Итог — ботнеты, майнеры, взлом. Совет: всегда ставь reverse proxy (Nginx) и HTTPS!
sudo apt install nginx
sudo certbot --nginx
Частые ошибки и мифы
- Миф: Jenkins — это сложно. Факт: Сложно только первый раз, дальше — как по маслу.
- Ошибка: Хранить пароли в скриптах. Решение: Используй Credentials.
- Ошибка: Не обновлять Jenkins и плагины. Решение: Обновляй раз в месяц, иначе уязвимости.
- Ошибка: Не делать бэкапы. Решение: Автоматизируй бэкапы Jenkins и репозиториев.
Похожие решения и альтернативы
- Drone CI — легковесный CI/CD, тоже можно ставить на VPS
- Gitea Actions — если свой Git-сервер
- GitHub Actions — если не хочется возиться с VPS
- GitLab CI — если проект на GitLab
Заключение: стоит ли игра свеч?
Если тебе нужен быстрый, надёжный и гибкий CI/CD — Jenkins на VPS это топовый вариант. Ты получаешь полный контроль, экономишь деньги и учишься DevOps-магии. Главное — не ленись настраивать безопасность и бэкапы.
- Для старта бери VPS тут: https://arenda-server.cloud/vps
- Официальный сайт Jenkins: https://www.jenkins.io/
- Документация по плагинам: https://plugins.jenkins.io/
Если остались вопросы — пиши в комменты, помогу советом. Удачи в автоматизации!
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.