# Генератор лицензий GitLab
English
## Описание
**GitLab License Generator** Этот проект генерирует лицензию GitLab для **целей разработки**. Если у вас возникнут какие-либо проблемы, пожалуйста, устраните их самостоятельно.
> [Последнее тестирование](../README.md).
## Принципы
### **src/generator.keys.rb**
GitLab использует пару открытого/закрытого ключа для шифрования своей лицензии. Открытый ключ поставляется с дистрибутивом GitLab, а закрытый ключ хранится в безопасности. Сама лицензия представляет собой просто словарь JSON. Поскольку GitLab сделал свой код открытым, мы можем легко сгенерировать собственную лицензию.
### **src/generator.license.rb**
Папка `lib` извлекается из исходного кода GitLab. Она используется для сборки и проверки лицензии. Скрипт `src/generator.license.rb` загружает эту функциональность.
### **src/scan.features.rb**
Функции извлекаются из объекта, заполненного константами. Самый полный план лицензии — **Ultimate**, но такие функции, как Geo Mirroring, не включены ни в один стандартный план. Поэтому мы вручную добавляем эти функции.
## Использование
### Предпосылки
Перед началом убедитесь, что ваша среда правильно настроена.
#### 1. Установите Ruby и gem
Для запуска этого проекта вам понадобится **Ruby** и менеджер пакетов **gem**.
- **В Linux (Ubuntu/Debian)**:
```bash
sudo apt update
sudo apt install ruby-full
```
- **На macOS** (через Homebrew):
```bash
brew install ruby
```
#### 2. Установите Bundler и необходимые gems
После установки Ruby вам необходимо установить **Bundler** для управления зависимостями Ruby.
```bash
gem install bundler
```
#### 3. Установите gem `gitlab-license`
Для проекта требуется gem `gitlab-license`, который будет автоматически загружен и использован скриптом.
```bash
gem install gitlab-license
```
### Шаги по созданию лицензии GitLab
#### 1. Клонируйте репозиторий проекта
Скопируйте этот проект на свой локальный компьютер.
```bash
git clone https://github.com/Lakr233/GitLab-License-Generator.git
cd GitLab-License-Generator
```
#### 2. Запустите скрипт `make.sh`
После выполнения всех предварительных условий запустите скрипт:
```bash
./make.sh
```
Скрипт выполнит следующие действия:
- Загрузит и распакует gem-файл `gitlab-license`.
- Скопирует и изменит необходимые файлы.
- Клонирует исходный код GitLab с GitLab.com.
- Сгенерирует пару открытого и закрытого ключей.
- Создаст лицензию GitLab.
#### 3. Замена открытого ключа в GitLab
Скрипт генерирует открытый ключ, расположенный в `build/public.key`. Вам необходимо заменить существующий открытый ключ GitLab на этот недавно сгенерированный, чтобы убедиться, что лицензия принята.
- **Если на вашем сервере установлен GitLab**:
```bash
sudo cp ./build/public.key /opt/gitlab/embedded/service/gitlab-rails/.license_encryption_key.pub
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
```
- **Если GitLab установлен через Docker**:
Измените файл `docker-compose.yml`, чтобы смонтировать новый открытый ключ внутрь контейнера:
```yaml
volumes:
- "./build/public.key:/opt/gitlab/embedded/service/gitlab-rails/.license_encryption_key.pub"
```
Затем перезапустите контейнер:
```bash
docker-compose down
docker-compose up -d
```
#### 4. Установите лицензию в GitLab
После замены открытого ключа войдите в интерфейс администратора GitLab, чтобы установить сгенерированную лицензию.
1. Войдите в GitLab как администратор.
2. Перейдите в **Admin Area** из верхнего правого угла.
3. Перейдите в **Settings > General** и загрузите сгенерированный файл лицензии (`build/result.gitlab-license`).
4. Установите флажок **Terms of Service** и нажмите **Add License**.
При необходимости вы можете напрямую перейти на страницу загрузки лицензии через:
```
/admin/license/new
```
#### 5. Отключить Service Ping (необязательно)
Если вы хотите отключить сбор данных об использовании GitLab (Service Ping), измените файл конфигурации GitLab:
- Откройте файл конфигурации:
```bash
sudo nano /etc/gitlab/gitlab.rb
```
- Добавьте следующую строку:
```bash
gitlab_rails['usage_ping_enabled'] = false
```
- Перенастройте и перезапустите GitLab:
```bash
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
```
### Поиск неисправностей
- **Ошибка HTTP 502**:
Если вы столкнулись с этой ошибкой, дождитесь завершения запуска GitLab (это может занять некоторое время).
## ЛИЦЕНЗИЯ
Данный проект лицензирован по **WTFPL License**.
Авторские права (c) 2023, Тим Кук, Все права не защищены.