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

Установка GitBucket с Nginx на Ubuntu 20.04

• 4 min read • DevOps • Обновлено 25 Nov 2025
Установка GitBucket с Nginx на Ubuntu 20.04
Установка GitBucket с Nginx на Ubuntu 20.04

Короткие определения

  • GitBucket — самохостинговая вэб‑платформа для Git с интерфейсом, похожим на GitHub. Поддерживает репозитории, pull request, wiki и issues.
  • Nginx — быстрый HTTP-сервер и обратный прокси.
  • Certbot — клиент для автоматического получения и обновления сертификатов Let’s Encrypt.

Важно: инструкции предполагают Ubuntu 20.04 и минимально 2 ГБ RAM. Для продакшена рекомендовано использовать внешнюю СУБД (PostgreSQL) вместо встроенной H2.

Что вы получите

  • GitBucket, запущенный как systemd‑сервис
  • Nginx, настроенный как обратный прокси и перенаправляющий трафик на GitBucket
  • HTTPS с бесплатными сертификатами Let’s Encrypt

Предварительные требования

  • Сервер с Ubuntu 20.04 и минимум 2 ГБ оперативной памяти.
  • Доменное имя, указывающее на сервер.
  • Доступ root или привилегии sudo.

Шаг 1. Установка Java

GitBucket написан на Java, поэтому сначала устанавливаем JDK. Выполните:

apt-get install default-jdk -y

Проверьте версию Java:

java -version

Вы должны увидеть строку с версией OpenJDK. Если Java установлена — переходите дальше.

Шаг 2. Создание пользователя и подготовка папки

Создадим системного пользователя и группу, под которыми будет работать GitBucket:

groupadd -g 555 gitbucket  
useradd -g gitbucket --no-user-group --home-dir /opt/gitbucket --no-create-home --shell /usr/sbin/nologin --system --uid 555 gitbucket

Создаём рабочую директорию и загружаем пакет:

mkdir /opt/gitbucket
cd /opt/gitbucket  
wget https://github.com/gitbucket/gitbucket/releases/download/4.33.0/gitbucket.war

Привязываем владельца:

chown -R gitbucket:gitbucket /opt/gitbucket

Создаём конфигурацию для встроенной базы H2 (по умолчанию):

nano /opt/gitbucket/database.conf

Вставьте:

db {
  url = "jdbc:h2:${DatabaseHome};MVCC=true"
  user = "sa"
  password = "sa"
}

Сохраните и закройте файл.

Шаг 3. Создание systemd‑сервиса для GitBucket

Создайте файл сервиса:

nano /etc/systemd/system/gitbucket.service

Вставьте содержимое (сохраняете без изменений):

# GitBucket Service
[Unit]
Description=Manage Java service

[Service]
WorkingDirectory=/opt/gitbucket
ExecStart=/usr/bin/java -Xms128m -Xmx256m -jar gitbucket.war
User=gitbucket
Group=gitbucket
Type=simple
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

Перезагрузите демона systemd и запустите сервис:

systemctl daemon-reload
systemctl start gitbucket
systemctl enable gitbucket

Проверьте статус сервиса:

systemctl status gitbucket

Ожидается, что GitBucket запущен и слушает порт 8080.

Шаг 4. Настройка Nginx как обратного прокси

Установите Nginx:

apt-get install nginx -y

Создайте конфигурацию виртуального хоста:

nano /etc/nginx/sites-available/gitbucket

Добавьте (отредактируйте server_name на ваш домен):

upstream gitbucket {
  server 127.0.0.1:8080 weight=100 max_fails=5 fail_timeout=5;
}

server {
  listen          80;
  server_name     gitbucket.linuxbuz.com;

  location / {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://gitbucket/;
  }
}

Создайте символьную ссылку и проверьте конфигурацию:

ln -s /etc/nginx/sites-available/gitbucket /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginx

Примечание: для нескольких сайтов учтите директиву server_name и конфликты портов.

Шаг 5. Защита HTTPS через Let’s Encrypt

Добавьте репозиторий Certbot и установите клиент:

add-apt-repository ppa:ahasenack/certbot-tlssni01-1875471
apt-get update -y
apt-get install certbot python3-certbot-nginx -y

Запустите Certbot для автоматической настройки Nginx и получения сертификата (замените домен):

certbot --nginx -d gitbucket.linuxbuz.com

Следуйте подсказкам: укажите e‑mail, согласитесь с условиями и выберите перенаправление HTTPS (редирект с 80 на 443). Certbot сохранит сертификаты в /etc/letsencrypt/live/ваш_домен/

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

certbot renew --dry-run

Шаг 6. Доступ к интерфейсу GitBucket

Откройте https://gitbucket.linuxbuz.com в браузере. При первом входе используйте учётные данные по умолчанию: username root, password root. Обязательно смените пароль администратора.

GitBucket логотип и интерфейс

Страница входа GitBucket

Окно авторизации GitBucket

Панель управления GitBucket

Параметры аккаунта

Профиль администратора

Мини‑методология развертывания (быстрый план)

  1. Подготовка сервера и DNS.
  2. Установка Java и создание пользователя gitbucket.
  3. Загрузка gitbucket.war и старт как systemd‑сервис.
  4. Установка Nginx и настройка обратного прокси.
  5. Настройка HTTPS через Certbot и проверка обновления сертификатов.
  6. Финальные проверки: доступ по HTTPS, смена пароля, бэкап данных.

Роли и чек‑листы

  • Системный администратор:
    • Настроить сервер и firewall (ufw/iptables), открыть 80/443.
    • Установить Java, Nginx, Certbot.
    • Создать systemd‑сервис и настроить резервное копирование /opt/gitbucket.
  • Разработчик:
    • Создать тестовый репозиторий, выполнить push/pull.
    • Проверить работу pull requests и веб‑просмотра репозитория.
  • Инженер по безопасности:
    • Проверить SSL/TLS конфигурацию (например, через SSL Labs).
    • Отключить ненужные сервисы и сконфигурировать брандмауэр.

Рекомендации по безопасности и надёжности

  • Не используйте встроенную H2 базу для критичных проектов. Перенесите базу на PostgreSQL или MySQL.
  • Ограничьте доступ к серверу по SSH ключам и закройте root‑логин.
  • Настройте автоматическое резервное копирование папки /opt/gitbucket и базы данных.
  • Регулярно проверяйте и обновляйте Java и зависимости.
  • Настройте мониторинг сервиса (systemd‑события, логирование).

Критерии приёмки

  • Сервис gitbucket активен: systemctl status показывает active (running).
  • Сайт доступен по HTTPS и корректно перенаправляет HTTP на HTTPS.
  • Авторизация под root возможна и пароль успешно изменён.
  • Создание репозитория, push и clone проходят без ошибок.

Тестовые кейсы

  • Подключение git clone по HTTPS: git clone https://gitbucket.linuxbuz.com/имя_репозитория.git
  • Создание issue и проверка уведомлений по e‑mail (если включены).
  • Проверка работы Git LFS для больших файлов (если включили поддержку).

Когда этот подход может не подойти

  • Для крупного количества пользователей и больших репозиториев встроенная H2 станет узким местом.
  • Если требуется кластеризация и высокодоступная архитектура — понадобятся внешние базы и балансировка нагрузки.

Короткий глоссарий

  • WAR — Web Application Archive, формат Java‑приложения для запуска под JVM.
  • systemd — менеджер системных сервисов в современных дистрибутивах Linux.
  • Certbot — инструмент для получения и обновления сертификатов Let’s Encrypt.

Итог

Вы установили GitBucket на Ubuntu 20.04, настроили его как systemd‑сервис и защитили с помощью Nginx и Let’s Encrypt. Для продакшена перенесите данные в внешнюю СУБД, настройте резервное копирование и мониторинг. Помните о регулярном обновлении контейнера Java и компонентов сервера.

Ключевые действия для следующего шага: миграция на PostgreSQL, тестирование под нагрузкой и настройка бэкапов.

Поделиться: 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 быстро