셀프 호스팅 라이선스
셀프 호스팅 라이선스는 Logto 셀프 호스팅 플랜에서 제공하는 유료 기능을 자체 Logto OSS 인스턴스에서 활성화하는 서명된 키입니다. 라이선스가 없으면 Logto OSS는 기존과 동일하게 동작합니다.
라이선스는 셀프 호스팅 Logto OSS 전용입니다. Logto Cloud에서는 기능이 테넌트 플랜에 포함되어 있으며, 라이선스 엔드포인트는 제공되지 않습니다.
라이선스로 활성화되는 기능
Self-hosted Pro 라이선스를 설치하면 인스턴스에서 다음 기능이 활성화됩니다:
| 기능 | 라이선스 없음 | 라이선스 있음 |
|---|---|---|
| Logto 브랜딩 숨기기 | "Powered by Logto"가 항상 표시됨. | 숨길 수 있습니다. |
| Bring your UI 및 커스텀 CSP 소스 | 사용 불가. | 스토리지 설정에 업로드하여 자체 로그인 UI 사용 가능. |
| Console 멤버 및 초대 | 사용 불가. | Console에 멤버를 초대하고 테넌트 설정 > 멤버에서 역할 관리 가능. |
| Console 필수 MFA | 선택적 MFA만 가능. | 모든 Console 멤버가 MFA를 설정하도록 요구, 테넌트 설정 > 설정에서 설정. |
| SAML 앱 | 최대 3개 SAML 앱. | SAML 앱 개수 제한 없음. |
이 목록에 없는 기능은 라이선스에 의해 영향을 받지 않습니다.
라이선스 받기
셀프 호스팅 플랜 페이지를 통해 라이선스를 요청하세요. Logto는 동일한 라이선스에 대해 두 개의 키를 제공합니다:
- 프로덕션 키: 구독이 적용되는 프로덕션 배포에 사용하세요. 별도의 명시가 없는 한, 각 구독은 하나의 프로덕션 배포에 적용됩니다.
- 비프로덕션 키: 동일한 프로덕션 배포를 지원하는 개발, 테스트, 스테이징 배포에 사용하세요. 이 배포들은 프로덕션 트래픽을 처리해서는 안 됩니다.
두 키 모두 동일한 기능과 할당량을 활성화합니다. 두 개의 키가 있다고 해서 두 개의 프로덕션 배포를 허용하는 것은 아닙니다. 허용된 사용 범위는 셀프 호스팅 구독 약관 및 주문서에 의해 결정됩니다.
설치하는 키는 Logto에 어떤 유형의 배포인지 알려줍니다. Logto는 이를 기술적으로 검증하지 않으므로, 배포에 맞는 키를 설치하세요.
라이선스 설치하기
Console 또는 Management API를 통해 라이선스를 설치할 수 있습니다. 두 방법 모두 Logto는 인스턴스에서 키의 서명을 저장 전에 검증하며, 유효하지 않거나 변조되었거나 이미 만료된 키는 거부합니다.
Console에서 설치
- Console > 테넌트 설정 > 라이선스로 이동하세요.
- 라이선스 키를 붙여넣고 라이선스 설치를 클릭하세요.
설치가 완료되면, 페이지에 라이선스 세부 정보가 표시됩니다. 예를 들어 비프로덕션 키에서 프로덕션 키로, 또는 새로 발급된 키로 전환하려면 라이선스 교체를 클릭하세요.
Management API 사용
Logto Management API에 대한 액세스 토큰과 함께 키를 PUT /api/systems/license로 전송하세요:
curl -X PUT 'https://your-logto-endpoint/api/systems/license' \
-H 'Authorization: Bearer <access_token>' \
-H 'Content-Type: application/json' \
-d '{ "license": "<your_license_key>" }'
성공하면 204 No Content가 반환됩니다. 요청이 실패하는 경우:
- 키가 Logto에 의해 서명되지 않았거나 수정된 경우
400및license.invalid_key반환. - 키가 만료된 경우
400및license.expired_key반환. 새 키를 받아 다시 설치하세요. - Logto가 Logto Cloud에서 실행 중인 경우
501반환.
설치된 라이선스를 확인하려면 GET /api/systems/license를 전송하세요. 플랜, 환경, 권한, 만료일, 갱신 상태를 반환합니다. 키 자체는 반환하지 않으며, 라이선스가 없으면 404를 반환합니다. 전체 요청 및 응답 스키마는 Management API reference를 참고하세요.
여러 인스턴스에서 사용
라이선스는 Logto 데이터베이스에 저장되므로, 동일한 데이터베이스를 공유하는 모든 Logto 인스턴스에 한 번만 설치하면 됩니다.
갱신 및 유예 기간
Logto는 라이선스 서명을 로컬에서 검증하므로, 애플리케이션 로그인은 Logto와의 연결에 의존하지 않으며, 갱신 실패로 인해 로그인 트래픽이 차단되지 않습니다.
갱신 및 취소를 반영하기 위해 인스턴스는 Logto Cloud와 체크인을 수행합니다:
- 주간 체크인. 마지막 성공적인 갱신이 7일을 초과하면, Logto는 백그라운드에서 라이선스를 갱신합니다(요청 처리 중). 시도가 실패하면 최대 한 시간에 한 번씩 재시도합니다. 새로 설치된 라이선스는 즉시 갱신됩니다.
- 30일 유예. 갱신이 실패해도(예: 인스턴스가 인터넷에 연결되지 않은 경우), 마지막 성공적인 갱신 후 30일 동안 기능이 계속 동작합니다. 이후에는 인스턴스가 OSS 기본값으로 돌아갑니다.
- 갱신 거부. Logto가 라이선스 갱신을 거부하는 경우(예: 구독 취소), 라이선스 페이지에 사유가 표시됩니다. 유예 기간은 마지막 성공적인 갱신 시점부터 계산됩니다.
갱신은 인스턴스에서 https://cloud.logto.io로의 아웃바운드 HTTPS 요청입니다. 인스턴스가 방화벽 뒤에 있다면 이 주소를 허용하세요.
인스턴스가 전송하는 정보
갱신 요청에는 다음 정보만 포함됩니다:
- 라이선스 키(내부적으로
licenseId로 식별) deploymentId: 라이선스 최초 설치 시 생성되는 임의 식별자. 데이터베이스에 저장되며, 해당 데이터베이스를 사용하는 모든 인스턴스에서 공유되고, 라이선스를 교체해도 변경되지 않습니다.- Logto 버전
Logto는 사용자 수, 호스트명, 도메인, 설정 정보를 수집하지 않습니다. 이 데이터는 참고용으로만 보관되며(예: 갱신 시), 제품 내에서 표시되거나 평가되지 않습니다. 동작은 오픈 소스이며, LicenseReader.ts에서 확인할 수 있습니다.
라이선스 만료
라이선스는 1년 단위로 적용되며, **만료일(Expires on)**은 해당 기간의 종료일입니다.
- 갱신 시, 인스턴스에서 별도의 조치가 필요하지 않습니다. 갱신 후 첫 갱신 시점에 설치된 키가 새 만료일로 교체됩니다. 갱신이 반영되는 동안 며칠간 만료일이 지난 것으로 표시될 수 있으나, 이 기간에도 기능은 계속 사용 가능합니다.
- 미갱신 시, 기간 종료 후 갱신이 거부됩니다. 기능은 30일 유예 기간이 끝날 때까지 계속 동작하다가, 이후에는 라이선스가 설치되지 않은 OSS 기본값으로 돌아갑니다. 라이선스 페이지에 이 사실과 적용 날짜가 안내됩니다.
- 유예 기간 종료 시, 기능을 다시 활성화하려면 새 키를 설치하세요. 필요하다면 라이선스를 받았던 채널을 통해 Logto에 문의하세요.
기능이 비활성화될 때
OSS 기본값으로 돌아가도 라이선스로 생성한 데이터는 삭제되지 않습니다:
- Logto 브랜딩 숨기기: "Powered by Logto" 마크가 다시 표시됩니다. 설정은 저장되며, 라이선스 재설치 시 다시 적용됩니다.
- SAML 앱: 3개를 초과하는 앱도 유지되지만, 제한 이하가 될 때까지 새 앱을 만들 수 없습니다.
- 필수 MFA: 언제든 비활성화할 수 있습니다. 라이선스 없이 다시 활성화할 수 없습니다.
- Bring your UI, 커스텀 CSP, Console 초대: 해당 기능이 필요한 새 변경은 할 수 없으며, 기존 데이터는 유지됩니다.
Bring your UI를 위한 스토리지 설정
Logto Cloud에서는 Bring your UI 자산이 Logto에서 호스팅됩니다. 자체 인스턴스에서는 직접 구성한 오브젝트 스토리지에 저장됩니다. Logto는 업로드한 파일을 압축 해제하여 해당 스토리지에 저장하고, 거기서 제공합니다.
experienceBlobsProvider 시스템 설정을 파일 스토리지 제공자와 동일한 JSON 구조로 지정하세요. 예를 들어 S3 호환 스토리지의 경우:
pnpm logto db system set experienceBlobsProvider '{"provider":"S3Storage","accessKeyId":"my-access-key-id","accessSecretKey":"my-secret-access-key","bucket":"logto-sie","endpoint":"https://s3.us-east-2.amazonaws.com"}'
설정 변경 후 Logto를 재시작하세요. 이후 Bring your UI를 참고하여 Console에서 자산을 업로드하세요.
Console 멤버 초대 이메일
Console 초대는 기본 테넌트의 이메일 커넥터를 통해 이메일로 전송됩니다. 멤버를 초대하기 전에 이메일 커넥터를 설정했는지 확인하세요.