Установка Jenkins с Apache в качестве обратного прокси на Ubuntu 20.04
В этой инструкции — пошаговая установка Jenkins на Ubuntu 20.04 и настройка Apache как обратного прокси (доступ по порту 80). Включены команды для Java, репозитория Jenkins, виртуального хоста Apache, базовая настройка безопасности, тестовое задание и раздел с типичными проблемами и рекомендациями по SSL.
- Сервер с Ubuntu 20.04.
- Доступ root или пользователь с правами sudo.
- DNS‑имя, указывающее на сервер (например, jenkins.example.com) — пригодится для SSL и корректного ProxyPreserveHost.
Перед началом обновите пакеты:
apt-get update -y
apt-get upgrade -yПосле обновления рекомендуется перезагрузить сервер, чтобы загруженные ядро и службы вступили в силу.
Jenkins требует Java. На Ubuntu 20.04 рекомендуем установить OpenJDK 11:
apt-get install openjdk-11-jdk gnupg2 -yПроверьте установленную версию:
java -versionОжидаемый пример вывода (может отличаться в деталях):
openjdk version "11.0.8" 2020-07-14
OpenJDK Runtime Environment (build 11.0.8+10-post-Ubuntu-0ubuntu120.04)
OpenJDK 64-Bit Server VM (build 11.0.8+10-post-Ubuntu-0ubuntu120.04, mixed mode, sharing)Если Java не установлена или версия не 11+, установите либо обновите пакет.
В официальном репозитории Ubuntu может не быть актуальной версии Jenkins, поэтому добавим официальный репозиторий.
Добавьте GPG‑ключ:
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | apt-key add -Добавьте репозиторий APT:
sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'Обновите индекс пакетов и установите Jenkins:
apt-get update -y
apt-get install jenkins -yПроверьте статус службы:
systemctl status jenkinsПример ожидаемого фрагмента вывода:
? jenkins.service - LSB: Start Jenkins at boot time
Loaded: loaded (/etc/init.d/jenkins; generated)
Active: active (exited) since Sun 2020-08-09 12:50:35 UTC; 44s ago
Docs: man:systemd-sysv-generator(8)Проверьте, что Jenkins слушает порт 8080:
netstat -plntu | grep 8080Ожидаемый вывод:
tcp6 0 0 :::8080 :::* LISTEN 6192/javaЧтобы получать доступ к Jenkins по стандартному HTTP‑порту 80, настроим Apache в режиме reverse proxy.
Установите Apache:
apt-get install apache2 -yВключите необходимые модули:
a2enmod proxy
a2enmod proxy_httpСоздайте файл виртуального хоста:
nano /etc/apache2/sites-available/jenkins.confВставьте конфигурацию (замените ServerName на ваше DNS‑имя):
ServerName jenkins.example.com
ProxyRequests Off
ProxyPreserveHost On
AllowEncodedSlashes NoDecode
Order deny,allow
Allow from all
ProxyPass / http://localhost:8080/ nocanon
ProxyPassReverse / http://localhost:8080/
ProxyPassReverse / http://jenkins.hakase-labs.io/
Сохраните файл и активируйте сайт:
a2ensite jenkinsПерезагрузите службы:
systemctl reload apache2
systemctl restart jenkinsПроверьте статус Apache:
systemctl status apache2Важно
- Замените в конфигурации ServerName на реальное доменное имя.
- Если Apache и Jenkins находятся на разных хостах — обновите ProxyPass на соответствующий адрес.
Примечание о безопасности
Если сервер будет доступен в публичной сети, обязательно подключите SSL/TLS. Для автоматической выдачи сертификатов используйте certbot с плагином Apache. Инструкция по certbot: https://www.howtoforge.com/how-to-manage-lets-encrypt-ssl-tls-certificates-with-certbot/
Откройте в браузере http://jenkins.example.com (замените на ваш домен). При первом запуске требуется ввести начальный пароль администратора.

Экраны процесса разблокировки и установки плагинов:

Получить пароль можно командой:
cat /var/lib/jenkins/secrets/initialAdminPasswordВы увидите строку вроде:
78d6b10330434b27a09590fc781c9e6dВставьте пароль в форму и нажмите «Продолжить». Далее вы увидите экран выбора установки плагинов:

Во время установки плагинов отображается прогресс:

После установки создайте учетную запись администратора:

Укажите URL Jenkins и завершите первичную настройку:

Когда установка завершена, нажмите «Начать использование Jenkins» и попадёте на панель управления:


Перейдите: Manage Jenkins -> Configure Global Security и включите Matrix‑based security. Добавьте администратора и назначьте права «полный доступ», затем сохраните настройки.


Рекомендации
- Создайте отдельную учетную запись администратора, не используйте системного “jenkins” пользователя для входа через веб.
- Ограничьте доступ к /var/lib/jenkins и к логам только нужным пользователям.
- На Dashboard нажмите “Create New Job” (Создать новое задание).
- Введите имя, выберите Freestyle project и нажмите OK.


- В конфигурации добавьте шаг “Execute shell” и введите команду:
free -m
- Сохраните и нажмите “Build Now”. Откройте консоль выполнения, чтобы увидеть вывод:


- Jenkins служба запущена и активна: systemctl status jenkins -> active.
- Доступ по HTTP через Apache: http://jenkins.example.com открывает UI.
- Веб‑интерфейс принимает начальный пароль и позволяет создать администратора.
- Тестовое задание выполняется и показывает вывод консоли.
Администратор:
- Установить Java и Jenkins.
- Настроить Apache виртуальный хост и SSL.
- Настроить Matrix‑security и создать учётные записи.
DevOps:
- Настроить backup /var/lib/jenkins (глобальная конфигурация, jobs, secrets).
- Настроить мониторинг службы и оповещения.
Разработчик:
- Создать простое Freestyle/Pipeline задание и проверить запуск.
- Проверить доступ к нужным credential и SCM.
- Jenkins не запускается
- Просмотрите журналы: journalctl -u jenkins -b
- Проверьте версию Java: java -version
- Apache проксирует, но приходит 502
- Проверьте, что Jenkins слушает на 8080: ss -plntu | grep 8080
- Убедитесь, что ProxyPreserveHost включён и ServerName настроен.
- Невозможно получить initialAdminPassword
- Проверьте права доступа к файлу: ls -l /var/lib/jenkins/secrets/initialAdminPassword
- Установите certbot и плагин Apache:
apt-get install certbot python3-certbot-apache -y- Запустите certbot и следуйте инструкциям для выдачи сертификата:
certbot --apache -d jenkins.example.com- certbot автоматически обновит конфигурацию Apache и добавит редиректы на HTTPS.
| Критерий | Apache | Nginx |
|---|---|---|
| Простота настройки для Jenkins | хорошая (модули proxy) | хорошая (proxy_pass) |
| Статическая отдача | достаточная | выше (эффективнее) |
| Интеграция с certbot | автоматическая | автоматическая |
Выбор зависит от уже используемого веб‑стека и требований к производительности.
- Ежедневный бэкап: /var/lib/jenkins (jobs, config.xml) и /var/lib/jenkins/secrets.
- Храните копии вне сервера (S3, NFS, другой хост).
- Тестируйте восстановление на отдельной машине.
- Jenkins: сервер автоматизации CI/CD.
- Reverse proxy: промежуточный веб‑сервер, принимающий запросы и пересылающий на внутренний сервис.
- certbot: клиент для получения сертификатов Let’s Encrypt.
- Включите HTTPS и HSTS.
- Ограничьте доступ к интерфейсу Jenkins по IP, если возможно.
- Регулярно обновляйте плагины и ядро Jenkins.
- Настройте бэкапы и мониторинг.
Вы успешно установили Jenkins и настроили Apache как обратный прокси на Ubuntu 20.04. После базовой настройки выполните следующие задачи: подключите SSL, настройте резервное копирование и циклы обновления плагинов, а также добавьте правила доступа по ролям.
Если хотите, могу подготовить пошаговый playbook Ansible для автоматизации установки, или привести пример конфигурации Nginx как альтернативы.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента