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

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:

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

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


Поздравляем — 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)
Когда стоит мигрировать: если у вас большое количество репозиториев, высокий трафик или требования к отказоустойчивости.
Короткая методика миграции:
- Разверните PostgreSQL и создайте базу/пользователя.
- Установите плагин/коннектор JDBC для PostgreSQL, если требуется.
- Экспортируйте данные из H2 (если возможно) или используйте встроенные утилиты миграции GitBucket (следуйте документации проекта).
- Обновите /opt/gitbucket/database.conf с новой строкой подключения JDBC.
- Перезапустите GitBucket и проверьте логи.
Замечание: точные шаги зависят от версии GitBucket; тестируйте на копии данных.
Альтернативные подходы
- Docker: можно запускать gitbucket.war в контейнере, что упрощает обновления и изоляцию. Пример Dockerfile или использование готового образа облегчает CI/CD.
- Reverse proxy: кроме Nginx можно использовать Traefik или HAProxy.
- Оркестрация: для масштабирования рассмотрите контейнеры в Kubernetes.
Тесты и критерии приёмки
Критерии приёмки для базовой установки:
- Сервис gitbucket запущен и активен (systemctl active).
- Веб-интерфейс доступен по HTTPS (или HTTP, если тестовая среда).
- Удалённое создание и клонирование репозитория работает по HTTP(S).
- Вход под пользователем root возможен, пароль изменён.
- Резервная копия каталога /opt/gitbucket создаётся и восстанавливается на тестовом сервере.
Минимальные тестовые сценарии:
- Создать новый репозиторий, выполнить push и проверить историю.
- Создать issue и pull request, проверить уведомления.
- Клонировать репозиторий с другого хоста.
Отладка и частые проблемы
- Проблема: сервис не стартует. Проверьте логи systemd: journalctl -u gitbucket.
- Проблема: Nginx возвращает 502. Убедитесь, что GitBucket слушает на 127.0.0.1:8080 и что нет брандмауэра, блокирующего порт.
- Проблема: ошибки базы данных. Проверьте /opt/gitbucket/logs и database.conf.
Контроль доступа и LDAP
GitBucket поддерживает LDAP. Базовая схема:
- Включите LDAP в конфиге GitBucket и укажите URL LDAP-сервера.
- Настройте соответствие полей (uid, mail, displayName).
- Тестируйте вход пользователей через LDAP, затем синхронизируйте группы при необходимости.
Чек-лист для разных ролей
Администратор:
- Установил и запустил сервис
- Настроил HTTPS
- Настроил бэкапы и мониторинг
Разработчик:
- Создал репозиторий и проверил push/pull
- Создал issue и PR
Оператор:
- Настроил systemd и автозапуск
- Настроил логирование и ротацию логов
Шаблон аварийного восстановления (короткий)
- Остановить сервис: systemctl stop gitbucket
- Восстановить архив /opt/gitbucket из бэкапа
- Восстановить дамп БД (если используется внешняя СУБД)
- Запустить сервис и проверить работоспособность
Резюме
GitBucket — лёгкая и гибкая платформа для самостоятелного хостинга Git. Эта инструкция покрывает базовую установку на Ubuntu 18.04: Java, systemd, Nginx, базовая конфигурация и проверка. Для продакшена планируйте миграцию на внешнюю СУБД, настройку HTTPS, резервного копирования и мониторинга.
Если хотите, могу подготовить: Dockerfile и docker-compose пример, инструкцию миграции на PostgreSQL или автоматизированный скрипт установки.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента