No description
Find a file
2026-03-11 10:13:07 +03:00
.github feat: docker image 2024-10-31 14:02:00 +03:30
keys Put Back Old Keys 2023-12-27 01:51:45 +08:00
lang Update README 2024-12-06 09:56:55 +08:00
lib Auto Update 2023-12-26 21:03:56 +08:00
src Put Empty scan.features.rb 2024-12-06 09:54:22 +08:00
.dockerignore feat: docker image 2024-10-31 14:02:00 +03:30
.gitignore Update License Name 2023-12-27 01:30:22 +08:00
.root Auto Update 2023-12-26 21:03:56 +08:00
Dockerfile feat: docker image 2024-10-31 14:02:00 +03:30
LICENSE Initial commit 2022-01-24 16:44:23 +08:00
make.sh fix: failed exec in find cmd 2024-10-31 14:09:12 +03:30
README.md Update README.md 2026-03-11 10:13:07 +03:00

GitLab License Generator

Description

GitLab License Generator This project generates a GitLab license for development purposes. If you encounter any problems, please troubleshoot them on your own.

Last tested on GitLab v18.9.1-ee.

Principles

src/generator.keys.rb

GitLab uses a public/private key pair to encrypt its license. The public key is shipped with the GitLab distribution, while the private key is kept secure. The license itself is simply a JSON dictionary. Since GitLab has made its code open-source, we can easily generate our own license.

src/generator.license.rb

The lib folder is extracted from GitLab's source code. It is used to build and validate the license. The script src/generator.license.rb loads this functionality.

src/scan.features.rb

Removed with a script to generate empty json file due to DMCA takedown request.

Features are extracted from an object filled with constants. The most comprehensive plan for a license is Ultimate, but features like Geo Mirroring are not included in any standard plan. Therefore, we manually add these features.

Usage

Clone repo:

git clone https://github.com/kh0mka/GitLab-License-Generator

Using compose

Example of compose.yaml:

services:
  gitlab-license-generator:
    build:
      context: .
    image: gitlab-license-generator:latest
    container_name: gitlab-lg
    environment:
      LICENSE_NAME: "Name of License"
      LICENSE_COMPANY: "Company Inc."
      LICENSE_EMAIL: "company@domain.com"
      LICENSE_PLAN: "ultimate"
      LICENSE_USER_COUNT: "50000"
      LICENSE_EXPIRE_YEAR: "2030"
    volumes:
      - ./license:/license-generator/build
    stdin_open: true
    tty: true

Run container:

docker compose build gitlab-license-generator
docker compose run --rm gitlab-license-generator

ls license/
features.json  license.json  private.key  public.key  result.gitlab-license

Using Docker image (Zero setup)

Using this method license files are generated under ./license directory

Please note that in standard docker installations, owner of the files generated in license directory will be root

Method (1): Pull image

docker run --rm -it \
  -v "./license:/license-generator/build" \
  -e LICENSE_NAME="Tim Cook" \
  -e LICENSE_COMPANY="Apple Computer, Inc." \
  -e LICENSE_EMAIL="tcook@apple.com" \
  -e LICENSE_PLAN="ultimate" \
  -e LICENSE_USER_COUNT="2147483647" \
  -e LICENSE_EXPIRE_YEAR="2500" \
  ghcr.io/lakr233/gitlab-license-generator:main

Method (2): Build image

git clone https://github.com/Lakr233/GitLab-License-Generator.git
docker build GitLab-License-Generator -t gitlab-license-generator:main
docker run --rm -it \
  -v "./license:/license-generator/build" \
  -e LICENSE_NAME="Tim Cook" \
  -e LICENSE_COMPANY="Apple Computer, Inc." \
  -e LICENSE_EMAIL="tcook@apple.com" \
  -e LICENSE_PLAN="ultimate" \
  -e LICENSE_USER_COUNT="2147483647" \
  -e LICENSE_EXPIRE_YEAR="2500" \
  gitlab-license-generator:main
  • If GitLab is installed via Docker:

    Modify your docker-compose.yml file to mount the new public key inside the container:

services:
    gitlab:
        image: gitlab/gitlab-ee:18.5.1-ee.0
        environment:
            GITLAB_OMNIBUS_CONFIG: |
                gitlab_rails['initial_license_file'] = "/opt/gitlab/embedded/service/gitlab-rails/GitLab.gitlab-license"
        volumes:
            - /opt/gitlab_license/license/public.key:/opt/gitlab/embedded/service/gitlab-rails/.license_encryption_key.pub
            - /opt/gitlab_license/license/result.gitlab-license:/opt/gitlab/embedded/service/gitlab-rails/GitLab.gitlab-license

Then restart the container:

docker-compose down
docker-compose up -d

4. Install the license in GitLab

Once the public key is replaced, log in to GitLabs admin interface to install the generated license.

  1. Log in to GitLab as an administrator.
  2. Navigate to the Admin Area from the bottom-left corner.
  3. Go to Settings > General and upload the generated license file (build/result.gitlab-license).
  4. Check the Terms of Service checkbox and click Add License.

If necessary, you can directly access the license upload page via:

<YourGitLabURL>/admin/license/new

5. Disable Service Ping (optional)

If you want to disable GitLabs usage data collection (Service Ping), modify GitLabs configuration file:

  • Open the configuration file:

    sudo nano /etc/gitlab/gitlab.rb
    
  • Add the following line:

    gitlab_rails['usage_ping_enabled'] = false
    
  • Reconfigure and restart GitLab:

    sudo gitlab-ctl reconfigure
    sudo gitlab-ctl restart
    

Troubleshooting

  • HTTP 502 Error: If you encounter this error, wait for GitLab to finish starting up (it may take some time).

LICENSE

This project is licensed under the WTFPL License.

Copyright (c) 2023, Tim Cook, All Rights Not Reserved.