라이선스 파일 또는 키로 GitLab EE 활성화하기

GitLab로부터 라이선스 파일(예: 평가용)을 받은 경우 인스턴스에 업로드하거나 설치 중에 추가할 수 있습니다. 라이선스 파일은 .gitlab-license 확장자를 가진 base64로 인코딩된 ASCII 텍스트 파일입니다.

GitLab 인스턴스에 처음으로 로그인하면 라이선스 추가 페이지로 연결하는 링크가 표시됩니다.

그렇지 않은 경우, 라이선스를 추가하려면 다음을 수행하세요:

  1. 관리자로서 GitLab에 로그인합니다.
  2. 왼쪽 사이드바에서 맨 아래쪽에 있는 Admin을 선택합니다.
  3. Settings > General을 선택합니다.
  4. Add License 영역에서 파일을 업로드하거나 키를 입력하여 라이선스를 추가합니다.
  5. Terms of Service 확인란을 선택합니다.
  6. Add license를 선택합니다.

설치 중 구독 활성화

설치 중에 구독을 활성화하려면 활성화 코드를 사용하여 GITLAB_ACTIVATION_CODE 환경 변수를 설정하세요:

export GITLAB_ACTIVATION_CODE=your_activation_code

설치 중 라이선스 파일 추가

라이선스가 있는 경우 GitLab을 설치할 때 가져올 수도 있습니다.

  • 직접 컴파일한 설치의 경우:
    • Gitlab.gitlab-license 파일을 config/ 디렉토리에 배치합니다.
    • 라이선스의 사용자 정의 위치 및 파일 이름을 지정하려면 GITLAB_LICENSE_FILE 환경 변수를 파일 경로로 설정하세요:

      export GITLAB_LICENSE_FILE="/path/to/license/file"
      
  • Linux 패키지 설치의 경우:
    • Gitlab.gitlab-license 파일을 /etc/gitlab/ 디렉토리에 배치합니다.
    • 라이선스의 사용자 정의 위치와 파일 이름을 지정하려면 gitlab.rb에 다음 항목을 추가하세요:

      gitlab_rails['initial_license_file'] = "/path/to/license/file"
      
  • Helm Charts 설치의 경우 global.gitlab.license 구성 키를 사용합니다.

경고: 이러한 방법은 설치 시에만 라이선스를 추가합니다. 라이선스를 갱신하거나 업그레이드하려면 웹 사용자 인터페이스의 Admin 영역에서 라이선스를 추가해야 합니다.

라이선스 사용 데이터 제출

오프라인 환경에서 인스턴스를 활성화하기 위해 라이선스 파일이나 키를 사용하는 경우, 매월 라이선스 사용 데이터를 제출해야 합니다. 데이터를 제출하려면 라이선스 사용 데이터를 내보내고 이를 renewals 서비스( renewals-service@customers.gitlab.com)로 이메일로 전송하세요. 전송하기 전에 라이선스 사용 파일을 열어보지 마십시오. 그렇게 하면 파일의 내용이 사용된 프로그램에 의해 변조(예: 타임스탬프가 다른 형식으로 변환되는 등)될 수 있고 파일 처리 중에 오류가 발생할 수 있습니다.

구독 시작일 이후 매월 데이터를 제출하지 않으면 구독과 연결된 이메일 주소로 이메일이 전송되고 Admin 영역대시보드구독 페이지에 데이터를 제출할 것을 알리는 배너가 표시됩니다. 데이터 제출 이후 다음 달까지만 배너를 닫을 수 있습니다.

라이선스 만료 시 동작

라이선스 만료 15일 전에 만료 예정일이 표시되는 알림 배너가 GitLab 관리자에게 표시됩니다.

라이선스는 만료일 시작 시간인 00:00 서버 시간에 만료됩니다.

라이선스가 만료되면 GitLab은 Git 푸시 및 이슈 생성과 같은 기능을 잠그고 인스턴스가 읽기 전용 상태가 됩니다. 또한 모든 관리자에게 만료 메시지가 표시됩니다. 이로 인해 발생하기 전에 14일의 유예 기간이 있습니다.

예를 들어, 라이선스의 시작일이 2024년 1월 1일이고 종료일이 2025년 1월 1일인 경우:

  • 2024년 12월 31일 11:59:59 PM에 서버 시간에 만료됩니다.
  • 2025년 1월 1일 12:00:00 AM에 서버 시간부터 만료된 것으로 간주됩니다.
  • 2025년 1월 1일 12:00:00 AM부터 2025년 1월 14일 11:59:59 PM까지 14일의 유예 기간이 있습니다.
  • 2025년 1월 15일 12:00:00 AM에 인스턴스가 읽기 전용 상태가 됩니다.

기능을 다시 활성화하려면 구독을 갱신하세요.

라이선스가 30일 이상 만료된 경우 기능을 다시 활성화하기 위해 새 구독을 구매해야 합니다.

무료 기능으로 돌아가려면 만료된 모든 라이선스를 삭제하세요.

라이선스 삭제

자체 관리형 인스턴스에서 라이선스를 삭제하려면 다음을 수행하세요:

  1. 왼쪽 사이드바에서 맨 아래쪽에 있는 Admin을 선택합니다.
  2. Subscription을 선택합니다.
  3. Remove license를 선택합니다.

과거에 적용된 모든 라이선스를 포함하여 모든 라이선스를 삭제하려면 이러한 단계를 반복하세요.

라이선스 세부정보와 기록 보기

라이선스 세부정보를 보려면 다음을 수행하세요:

  1. 왼쪽 사이드바에서 맨 아래쪽에 있는 Admin을 선택합니다.
  2. Subscription을 선택합니다.

여러 라이선스를 추가하고 볼 수 있지만 현재 날짜 범위에서의 최신 라이선스만이 활성 라이선스입니다.

미래 날짜의 라이선스를 추가하면 해당 날짜에 해당해야만 합니다. 모든 활성 구독은 구독 기록 테이블에서 볼 수 있습니다.

또한 라이선스 사용 정보를 CSV 파일로 내보낼 수도 있습니다.

Rails 콘솔에서 라이선스 명령어

다음 명령어는 Rails 콘솔에서 실행할 수 있습니다.

경고: 데이터를 직접 변경하는 명령어는 올바르게 실행되지 않거나 올바른 조건에서 실행되지 않으면 손상을 줄 수 있습니다. 이러한 명령어를 실행하기 전에 백업된 인스턴스의 테스트 환경에서 실행하고 복원할 수 있도록 준비하세요.

현재 라이선스 정보 확인

# 라이선스 정보 (이름, 회사, 이메일 주소)
License.current.licensee

# 플랜:
License.current.plan

# 업로드된 날짜:
License.current.created_at

# 시작일:
License.current.starts_at

# 만료일:
License.current.expires_at

# 이 라이선스는 평가용 라이선스입니까?
License.current.trial?

# 라이선스 ID (CustomersDot에서 조회용)
License.current.license_id

# Base64로 인코딩된 ASCII 형식의 라이선스 데이터
License.current.data

# 게스트 사용자를 제외한 현재 요금 청구 가능한 좌석 수를 확인합니다. 이는 게스트 좌석이 계산되지 않는 Ultimate 구독 티어를 사용하는 고객에게 유용합니다.
User.active.without_bots.excluding_guests_and_requests.count

미래에 시작하는 라이선스와의 상호 작용

# 미래 라이선스 데이터는 현재 라이선스 데이터와 동일한 형식을 따르며, License 접두사에 대한 다른 수정자를 사용합니다
License.future_dated

인스턴스에서 프로젝트 기능을 사용할 수 있는지 확인

features.rb에 나열된 기능들.

License.current.feature_available?(:jira_dev_panel_integration)

프로젝트 내에서 프로젝트 기능을 사용할 수 있는지 확인

features.rb에 나열된 기능들.

p = Project.find_by_full_path('<group>/<project>')
p.feature_available?(:jira_dev_panel_integration)

콘솔을 통해 라이선스 추가

key 변수를 사용

key = "<key>"
license = License.new(data: key)
license.save
License.current # 적용되었는지 확인

라이선스 파일을 사용

license_file = File.open("/tmp/Gitlab.license")

key = license_file.read.gsub("\r\n", "\n").gsub(/\n+$/, '') + "\n"

license = License.new(data: key)
license.save
License.current # 적용되었는지 확인

이러한 코드 조각은 파일에 저장하고 레일스 러너를 사용하여 실행하여 라이선스를 쉘 자동화 스크립트를 통해 적용할 수 있습니다.

예를 들어 알려진 예외 사례인 만료된 라이선스 및 여러 LDAP 서버에서 필요합니다.

라이선스 삭제

라이선스 히스토리 테이블을 정리하려면:

TYPE = :trial?
# 또는 :expired?

License.select(&TYPE).each(&:destroy!)

# 또는 License.all.each(&:destroy!)

문제 해결

관리자 영역에 구독 영역이 없음

라이선스를 추가할 수 없는 이유는 구독(Subscription) 영역이 없기 때문입니다. 이 문제는 다음과 같을 수 있습니다:

  • GitLab Community Edition을 실행 중인 경우 라이선스를 추가하기 전에 반드시 Enterprise Edition로 업그레이드해야 합니다.
  • GitLab.com을 사용 중인 경우, 자체 관리형 라이선스는 GitLab.com에 추가할 수 없습니다. GitLab.com에서 유료 기능을 사용하려면 별도의 구독을 구매해야 합니다.

갱신 시 사용자가 라이선스 한도를 초과

GitLab에서는 추가 사용자를 구매하도록 안내하는 메시지가 표시됩니다. 이 문제는 라이선스에 충분한 사용자가 없는 라이선스를 추가하는 경우 발생합니다.

이 문제를 해결하려면 해당 사용자 수를 커버할 수 있는 추가 좌석을 구매하세요. 자세한 내용은 라이선싱 FAQ를 참조하세요.

GitLab 14.2 이상에서 라이선스 파일을 사용하는 인스턴스의 경우 다음 규칙이 적용됩니다:

  • 라이선스를 초과하는 사용자가 라이선스 파일의 사용자 수보다 작거나 같으면, 라이선스가 적용되어 다음 갱신 시에 초과한 부분을 결제합니다.
  • 라이선스를 초과하는 사용자가 라이선스 파일의 사용자 수보다 크면, 라이선스를 추가하지 않고 더 많은 사용자를 구매해야 합니다.

예를 들어, 100명의 사용자를 위한 라이선스를 구매했다면 이 라이선스로 라이선스를 추가할 때 110명의 사용자를 가질 수 있습니다. 그러나 111명의 사용자를 가지고 있으면 라이선스를 추가하기 전에 더 많은 사용자를 구매해야 합니다.

GitLab Ultimate 체험판 시작이 라이선스 추가 후에도 표시됨

이 문제를 해결하려면 Puma 또는 GitLab 인스턴스 전체를 다시 시작하세요.