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

Установка и настройка GitBucket на Ubuntu 18.04

• 5 min read • DevOps • Обновлено 26 Nov 2025
Установка GitBucket на Ubuntu 18.04
Установка GitBucket на Ubuntu 18.04

GitBucket логотип или заставка установки

GitBucket — бесплатная и открытая платформа Git, написанная на Scala и совместимая с GitHub API. Это простая лёгкая альтернатива GitHub или Bitbucket с поддержкой Git LFS, issues, pull request, уведомлений, плагинов и приватных/публичных репозиториев. Поддерживается интеграция с LDAP для управления аккаунтами и группами.

В этой пошаговой инструкции показано, как установить и настроить GitBucket на сервере Ubuntu 18.04 LTS.

Требования

  • Чистая инсталляция Ubuntu 18.04.
  • Настроен root-пароль или доступ по sudo для пользователя.

Подготовка системы

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

apt-get update -y  
apt-get upgrade -y

После обновления перезагрузите сервер, чтобы применить все изменения.

Установка Java

GitBucket требует Java 8 или новее. Установите пакет по умолчанию:

apt-get install default-jdk -y

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

java -version

Пример ожидаемого вывода:

openjdk version "10.0.2" 2018-07-17
OpenJDK Runtime Environment (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.2)
OpenJDK 64-Bit Server VM (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.2, mixed mode)

Важно: для производственной среды рекомендуется LTS-версия Java (например OpenJDK 11) и тестирование на совместимость с используемой версией GitBucket.

Установка 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

Скачайте релиз GitBucket (пример ниже использует версию 4.31.2):

wget https://github.com/gitbucket/gitbucket/releases/download/4.31.2/gitbucket.war

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

mkdir /opt/gitbucket
mv gitbucket.war /opt/gitbucket
chown -R gitbucket:gitbucket /opt/gitbucket

Создание systemd-сервиса для GitBucket

Создайте единый unit-файл systemd:

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 enable gitbucket
systemctl start gitbucket
systemctl status gitbucket

Ожидаемый фрагмент вывода статуса (пример):

? gitbucket.service - Manage Java service
   Loaded: loaded (/etc/systemd/system/gitbucket.service; disabled; vendor preset: enabled)
   Active: active (running) since Tue 2019-08-09 09:43:42 UTC; 5s ago
 Main PID: 17835 (java)
    Tasks: 18 (limit: 1113)
   CGroup: /system.slice/gitbucket.service
           ??17835 /usr/bin/java -Xms128m -Xmx256m -jar gitbucket.war

Aug 09 09:43:42 ubuntu1804 systemd[1]: Started Manage Java service.
Aug 09 09:43:45 ubuntu1804 java[17835]: 2019-07-09 09:43:45.102:INFO::main: Logging initialized @2700ms to org.eclipse.jetty.util.log.StdErrLog
Aug 09 09:43:46 ubuntu1804 java[17835]: 2019-07-09 09:43:46.134:INFO:oejs.Server:main: jetty-9.4.z-SNAPSHOT; built: 2018-11-14T21:20:31.478Z; g

Конфигурация подключения к базе данных

По умолчанию GitBucket использует встроенную H2 базу. Файл конфигурации находится в /opt/gitbucket/database.conf. Откройте его для редактирования:

nano /opt/gitbucket/database.conf

Пример содержимого:

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

Примечание: встроенная H2 подходит для тестов и небольших инсталляций. Для корпоративной эксплуатации рекомендована внешняя СУБД (PostgreSQL или MySQL). См. раздел «Миграция на внешнюю СУБД» ниже.

Настройка Nginx как реверс-прокси

По умолчанию GitBucket слушает порт 8080. Чтобы обеспечить TLS и улучшить производительность, используйте Nginx в качестве реверс-прокси.

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

apt-get install nginx -y

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

nano /etc/nginx/sites-available/gitbucket.conf

Пример конфигурации:

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

server {
  listen          80;
  server_name     your-domain.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.conf /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginx

Важно: замените your-domain.com на реальное доменное имя и настройте A/AAAA-записи DNS.

Рекомендуется дополнительно настроить TLS (Let’s Encrypt) и перенаправление HTTP -> HTTPS. Пример команды для certbot:

apt-get install certbot python3-certbot-nginx -y
certbot --nginx -d your-domain.com

Доступ к веб-интерфейсу

Откройте в браузере http://your-domain.com. Вы увидите стартовую страницу GitBucket:

Интерфейс GitBucket

Нажмите «Sign in» для входа:

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

По умолчанию логин/пароль: root / root. После первого входа перейдите в настройки аккаунта и смените пароль:

Список репозиториев в GitBucket

Настройки аккаунта GitBucket

Поздравляем — GitBucket установлен и доступен.

Безопасность и эксплуатация

  • Измените пароль root сразу после первого входа.
  • Настройте HTTPS и автоматическое продление сертификатов.
  • Запускайте сервис под непривилегированным пользователем (как показано выше).
  • Отключите доступ к порту 8080 из внешней сети — только через локальный интерфейс и Nginx.
  • Настройте бэкапы каталога репозиториев и базы данных (см. раздел «Резервное копирование»).

Важно: встроенная H2 БД не оптимальна для многопользовательских продакшен-сред. Рассмотрите внешнюю СУБД.

Резервное копирование и восстановление

Минимальные объекты для бэкапа:

  • Каталог с репозиториями и данными GitBucket (обычно /opt/gitbucket).
  • Файлы конфигурации: /opt/gitbucket/database.conf и другие конфиги.
  • Если используется внешняя СУБД — дамп базы (pg_dump/mysql_dump).

Пример простого cron-скрипта для архивации:

tar -czf /var/backups/gitbucket-$(date +%F).tar.gz /opt/gitbucket

Тестируйте восстановление регулярно — это ключевой критерий готовности к авариям.

Миграция на внешнюю СУБД (PostgreSQL)

Когда стоит мигрировать: если у вас большое количество репозиториев, высокий трафик или требования к отказоустойчивости.

Короткая методика миграции:

  1. Разверните PostgreSQL и создайте базу/пользователя.
  2. Установите плагин/коннектор JDBC для PostgreSQL, если требуется.
  3. Экспортируйте данные из H2 (если возможно) или используйте встроенные утилиты миграции GitBucket (следуйте документации проекта).
  4. Обновите /opt/gitbucket/database.conf с новой строкой подключения JDBC.
  5. Перезапустите GitBucket и проверьте логи.

Замечание: точные шаги зависят от версии GitBucket; тестируйте на копии данных.

Альтернативные подходы

  • Docker: можно запускать gitbucket.war в контейнере, что упрощает обновления и изоляцию. Пример Dockerfile или использование готового образа облегчает CI/CD.
  • Reverse proxy: кроме Nginx можно использовать Traefik или HAProxy.
  • Оркестрация: для масштабирования рассмотрите контейнеры в Kubernetes.

Тесты и критерии приёмки

Критерии приёмки для базовой установки:

  • Сервис gitbucket запущен и активен (systemctl active).
  • Веб-интерфейс доступен по HTTPS (или HTTP, если тестовая среда).
  • Удалённое создание и клонирование репозитория работает по HTTP(S).
  • Вход под пользователем root возможен, пароль изменён.
  • Резервная копия каталога /opt/gitbucket создаётся и восстанавливается на тестовом сервере.

Минимальные тестовые сценарии:

  1. Создать новый репозиторий, выполнить push и проверить историю.
  2. Создать issue и pull request, проверить уведомления.
  3. Клонировать репозиторий с другого хоста.

Отладка и частые проблемы

  • Проблема: сервис не стартует. Проверьте логи systemd: journalctl -u gitbucket.
  • Проблема: Nginx возвращает 502. Убедитесь, что GitBucket слушает на 127.0.0.1:8080 и что нет брандмауэра, блокирующего порт.
  • Проблема: ошибки базы данных. Проверьте /opt/gitbucket/logs и database.conf.

Контроль доступа и LDAP

GitBucket поддерживает LDAP. Базовая схема:

  1. Включите LDAP в конфиге GitBucket и укажите URL LDAP-сервера.
  2. Настройте соответствие полей (uid, mail, displayName).
  3. Тестируйте вход пользователей через LDAP, затем синхронизируйте группы при необходимости.

Чек-лист для разных ролей

Администратор:

  • Установил и запустил сервис
  • Настроил HTTPS
  • Настроил бэкапы и мониторинг

Разработчик:

  • Создал репозиторий и проверил push/pull
  • Создал issue и PR

Оператор:

  • Настроил systemd и автозапуск
  • Настроил логирование и ротацию логов

Шаблон аварийного восстановления (короткий)

  1. Остановить сервис: systemctl stop gitbucket
  2. Восстановить архив /opt/gitbucket из бэкапа
  3. Восстановить дамп БД (если используется внешняя СУБД)
  4. Запустить сервис и проверить работоспособность

Резюме

GitBucket — лёгкая и гибкая платформа для самостоятелного хостинга Git. Эта инструкция покрывает базовую установку на Ubuntu 18.04: Java, systemd, Nginx, базовая конфигурация и проверка. Для продакшена планируйте миграцию на внешнюю СУБД, настройку HTTPS, резервного копирования и мониторинга.

Если хотите, могу подготовить: Dockerfile и docker-compose пример, инструкцию миграции на 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 быстро