Гид по технологиям

Установка Jenkins с Apache в качестве обратного прокси на Ubuntu 20.04

• 5 min read • DevOps • Обновлено 25 Nov 2025
Jenkins на Ubuntu 20.04 с Apache — установка
Jenkins на Ubuntu 20.04 с Apache — установка

В этой инструкции — пошаговая установка 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 (замените на ваш домен). При первом запуске требуется ввести начальный пароль администратора.

Иллюстрация установки Jenkins

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

Экран ввода начального пароля Jenkins

Получить пароль можно командой:

cat /var/lib/jenkins/secrets/initialAdminPassword

Вы увидите строку вроде:

78d6b10330434b27a09590fc781c9e6d

Вставьте пароль в форму и нажмите «Продолжить». Далее вы увидите экран выбора установки плагинов:

Установка плагинов Jenkins — выбор опции

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

Установка плагинов — прогресс

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

Создание пользователя администратора Jenkins

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

Настройка URL Jenkins

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

Jenkins готов — экран завершения

Панель управления Jenkins (Dashboard)

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

Страница 'Manage Jenkins' — глобальная безопасность

Конфигурация безопасности Jenkins — матричная модель

Рекомендации

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

Начало теста — создание задания

Создание проекта Jenkins — ввод имени

  1. В конфигурации добавьте шаг “Execute shell” и введите команду:
free -m

Шаг сборки — выполнение shell-команды

  1. Сохраните и нажмите “Build Now”. Откройте консоль выполнения, чтобы увидеть вывод:

Результат команды free -m в консоли задания

Консольный вывод задания указывает успешное выполнение

  • 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.
  1. Jenkins не запускается
  • Просмотрите журналы: journalctl -u jenkins -b
  • Проверьте версию Java: java -version
  1. Apache проксирует, но приходит 502
  • Проверьте, что Jenkins слушает на 8080: ss -plntu | grep 8080
  • Убедитесь, что ProxyPreserveHost включён и ServerName настроен.
  1. Невозможно получить initialAdminPassword
  • Проверьте права доступа к файлу: ls -l /var/lib/jenkins/secrets/initialAdminPassword
  1. Установите certbot и плагин Apache:
apt-get install certbot python3-certbot-apache -y
  1. Запустите certbot и следуйте инструкциям для выдачи сертификата:
certbot --apache -d jenkins.example.com
  1. certbot автоматически обновит конфигурацию Apache и добавит редиректы на HTTPS.
КритерийApacheNginx
Простота настройки для 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 как альтернативы.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро