Установка 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. Обязательно смените пароль администратора.






Мини‑методология развертывания (быстрый план)
- Подготовка сервера и DNS.
- Установка Java и создание пользователя gitbucket.
- Загрузка gitbucket.war и старт как systemd‑сервис.
- Установка Nginx и настройка обратного прокси.
- Настройка HTTPS через Certbot и проверка обновления сертификатов.
- Финальные проверки: доступ по 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, тестирование под нагрузкой и настройка бэкапов.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента