Установка Bitbucket Server на VPS в докер
Сегодня решил разобраться с системой контроля репозиториев Bitbucket, а именно установить ее на VPS в докер контейнер..
Что такое Bitbucket
Bitbucket - система контроля репозиториев, похожая на GitHub. По сути, это gui обертка на git-ом, позволяющая более удобно управлять репозиториями, проектами, ветками, пулл реквестами, комментариями к коду и много чем еще.
Компания Atlassian, разработчик этого продукта, предлагает несколько вариантов решений: https://www.atlassian.com/software/bitbucket/pricing
- В облаке: есть бесплатный тариф с хранилищем до 1 Gb и максимум 5 пользователей. За 3$/мес - 5 Gb места и неограниченное кол-во пользователей. За 6$/мес, 10 Гб места.
- Self hosted: установка на свой сервер
- Bitbucket Server: 10 пользователей = 10$/разово, 25 пользователей = 2900$/разово, 50 пользователей = 5200$/разово и т.д.
- Bitbucket Data Center: 25 пользователей = 1980$/год, 50 пользователей = 3630$/год и т.д.
В облаке на бесплатный тариф можно зарегистрироваться сразу, для Self-Hosted решений, есть возможность получить 30 дневный триал.
С облачным решением, я уже был знаком, поэтому решил посмотреть в сторону Self Hosted - Bitbucket Server, в частности для того, чтобы купить лицензию и в долгосрочном периоде перевести свои проекты туда без привязки к ограниченному месту на диске.
Выбор сервера для установки
Во время установки, я столкнулся с тем, что в моем тарифном плане у VPS, было всего 2 Гб оперативки. К сожалению, пришлось увеличивать тарифный план (до 4 Гб), тк этой памяти не хватило даже просто запустить Bitbucket Server. К счастью, я использую Hetzner Cloud, где можно легко увеличить размер сервера в пару кликов, однако так работает не везде, поэтому советую начать с рекомендуемых требований.
Найти их можно тут: https://confluence.atlassian.com/bitbucketserver/supported-platforms-776640981.html
Там есть версии ПО, но основное вот:
- Процессор
- режим тестирования: 1 ядро
- продакшен: 2+ ядра
- Память - минимум 3Гб: 1 Гб для Bitbucket Server + 2 Гб, для гит операций.
- ОС: Windows / Linux
- Java, от 11 версии
- Базы данных: есть поддержка MySQL, PostgreSQL, Microsoft SQL Server, Oracle, Amazon Aurora, H2. Присутствует ограничения по веткам версий, смотрите по ссылке.
Как видите, для старта, желательно выделить 3 Гб памяти для нормальной работы. Если на вашем сервере будет что-то еще, например, в моем случае там nginx, mysql, php, docker и еще пара веселостей + самой ОС так же нужна оперативка, я бы рекомендовал смотреть сразу в сторону тарифных планов с минимум 8 Гб ОЗУ.
Установка
Режимов установки есть несколько, я выбрал установку в докер.
Шаг 1. Установка Docker и Docker Compose
Добавляем ключ репозитория
1 2 3 |
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - |
Добавляем репозиторий
1 2 3 |
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable edge" |
Обновляем списки пакетов
1 2 3 |
sudo apt-get update |
Устанавливаем docker и docker-compose
1 2 3 |
sudo apt-get install -y docker-ce |
Проверяем что докер установился и запущен
1 2 3 4 5 6 7 8 9 10 11 12 |
# systemctl status docker ● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2019-11-27 13:40:28 CET; 34min ago Docs: https://docs.docker.com Main PID: 1038 (dockerd) Tasks: 20 CGroup: /system.slice/docker.service └─1038 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock |
Опционально, если работаете не от пользователя root, и не хотите каждый раз при использовании докера запускать его через sudo, добавьте своего пользователя в группу docker
1 2 3 4 5 6 7 8 9 |
sudo usermod -aG docker ${USER} # перезагружаемся или выполняем чтобы изменения вступили в силу su ${USER} # проверяем что мы в группе docker id -nG |
Шаг 2. Подготовка docker-compose.json
На этом этапе вам нужно или самому собрать образ или воспользоваться готовым, я выбрал из официального репозитория.
- https://hub.docker.com/r/atlassian/bitbucket-server/
Создаем папку для будущих файлов
1 2 3 |
mkdir -p /opt/docker/bitbucket-server |
К сожалению, готового docker-compose.yml для выбранного образа я не отыскал, поэтому составил свой:
1 2 3 |
nano /opt/docker/bitbucket-server/docker-compose.yml |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
version: '3' services: bitbucket: image: atlassian/bitbucket-server restart: always ports: - "127.0.0.1:7990:7990" - "7999:7999" volumes: - bitbucket-volume:/var/atlassian/bitbucket environment: - 'BITBUCKET_PROXY_NAME=bitbucket.mydomain.tld' - 'BITBUCKET_PROXY_PORT=80' - 'BITBUCKET_PROXY_SCHEME=http' - 'BITBUCKET_DELAYED_START=' - 'JVM_MINIMUM_MEMORY=1g' - 'JVM_MAXIMUM_MEMORY=4g' privileged: true hostname: bitbucket-server container_name: bitbucket-server volumes: bitbucket-volume: external: false |
Тут пожалуй стоит остановиться и упомянуть, что bitbucket использует два порта: 7990 для доступа по http(s) и 7999 для доступа по ssh. В экспериментальных целях, я решил повесить bitbucket на отдельный поддомен (bitbucket.mydomain.tld) и проксировать с помощью nginx трафик с 80 порта на 7990. Именно поэтому я прокинул порт 7990 на 127.0.0.1:7990, а не на внешний порт. В вашем случае это может быть излишним, поэтому конфигурация будет вот такой.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
version: '3' services: bitbucket: image: atlassian/bitbucket-server restart: always ports: - 7990:7990 - 7999:7999 volumes: - bitbucket-volume:/var/atlassian/bitbucket privileged: true hostname: bitbucket-server container_name: bitbucket-server volumes: bitbucket-volume: external: false |
Шаг 3. Запускаем и проверяем
Выполняем запуск в обычном режиме
1 2 3 |
docker-compose up |
если нет ошибок, прерываем с помощью Ctrl+C и перезапускаем в detached mode
1 2 3 |
docker-compose up -d |
Шаг 4. Первоначальная конфигурация
Переходим по адресу: http://127.0.0.1:7990 и попадаем в мастер установки. Там нас попросят ввести ключ продукта или зарегистрировать триал. Далее необходимо будет ввести данные админа и можно начинать пользоваться.
Шаг 5. Опционально. Настройка Nginx
Как я уже упоминал, я решил проксироват 80 порт моего домена на порт 127.0.0.1:7990 bitbucket сервера. Это не обязательный шаг, больше для того, чтобы просто ввести адрес в строке и на париться с портами. Конфиг nginx-а выглядит так
/etc/nginx/sites-enabled/bitbucket.mydomain.tld
1 2 3 4 5 6 7 8 9 10 |
server { server_name bitbucket.mydomain.tld; listen 80; location / { proxy_pass http://127.0.0.1:7990; } } |
на входе bitbucket уже есть авторизация и даже каптча с защитой от брутфорса, но я еще добавли и http basic авторизация, чтобы не светить лишний раз морду сайта в интернете
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
server { server_name bitbucket.mydomain.tld; listen 80; auth_basic "Protected area"; auth_basic_user_file /var/www/bitbucket.mydomain.tld/secret/.htpasswd; location / { proxy_set_header Authorization ""; proxy_pass http://127.0.0.1:7990; } } |
Список полезных ссылок
- Системные требования и техническая информация
- Системные требования: https://confluence.atlassian.com/bitbucketserver/supported-platforms-776640981.html
- Порты: https://confluence.atlassian.com/bitbucketserverkb/which-ports-does-bitbucket-server-listen-on-and-what-are-they-used-for-806029586.html
- Scaling: https://confluence.atlassian.com/bitbucketserver/scaling-bitbucket-server-776640073.html
- Resource limit reached: https://confluence.atlassian.com/bitbucketserverkb/bitbucket-server-is-reaching-resource-limits-779171381.html
- Примеры docker-compose.yml
- https://github.com/EugenMayer/docker-image-atlassian-bitbucket/blob/master/docker-compose.yml
Author: | Tags: /
| Rating:
Leave a Reply