이 가이드는 산업의 개념을 플랫폼에 현재 있는 객체(부케, 라인, 패키지, 파트너 계정, 노드, API)에 대응시킵니다. 이는 개념적 대응이며 산업 전용 기능이 아닙니다. 또한 파트너 계정은 위임 계정이며 격리된 테넌트가 아닙니다.
개념적 대응
패널에는 과목이나 학생이라는 이름의 것이 없습니다. 아래 표는 어떤 객체가 어떤 역할을 하는지 보여 주며, 이어지는 장에서 그 순서대로 설정합니다.
| 내 산업에서는 | 플랫폼에서는 | 패널에서의 위치 |
|---|---|---|
| 교육 센터 또는 유통 파트너 | 파트너 계정(리셀러): 크레딧, 권한, 자체 라인을 가진 위임 대시보드 | Users → 리셀러 추가, 권한은 Groups에서 설정 |
| 과목 모음 | 부케: 패키지가 부여하는 채널, 영화, 시리즈의 이름 있는 묶음 | Bouquets, Streams와 Movies / Series에서 생성 |
| 녹화된 수업 | VOD 카탈로그: 시즌과 에피소드가 있는 영화와 시리즈, 카테고리, 메타데이터 | Movies와 Series, 또는 VOD 인제스트 작업 |
| 실시간 수업 | 실시간 채널: 소스, EPG, 출력 형식을 가진 스트림 | Streams → 실시간 스트림 추가(소스 URL 또는 RTMP 푸시) |
| 학생 액세스 | 라인: 패키지, 부케, 만료일, 연결 제한, 출력을 가진 하나의 액세스 | Lines → 추가, 또는 활성화 코드, 또는 Reseller API |
| 과목 이용 기간 | 라인의 만료일. 패키지, 크레딧 또는 API로 갱신됩니다 | 라인의 만료일과 패키지의 기간 |
| 동시 세션 수 제한 | 라인의 최대 연결 수: 동시에 시청할 수 있는 기기 수 | 라인의 최대 연결 수 |
| LMS 또는 커머스 연동 | Reseller API와 웹훅: 자체 시스템에서 수행하는 패널의 작업 | 리셀러 대시보드의 Reseller API 키와 웹훅 |
사전 준비
설치 전에 준비할 것.
- 캠퍼스 네트워크의 Linux 서버(Ubuntu 22.04 또는 24.04). Postgres, Redis, ffmpeg는 설치 프로그램이 설치합니다. 패널과 플레이어용 도메인 또는 내부 주소도 필요합니다.
- 게시할 녹화본(파일 또는 RTMP를 푸시할 수 있는 녹화 시스템), 그리고 실시간 수업에는 스트리밍할 각 강의실의 인코더.
- 라이선스 키. Free 요금제에는 필요하지 않으며, 자격을 갖춘 기관은 학술 도메인의 이메일로 무료 Professional 키를 신청합니다.
인프라 구축
관리 서버를 설치한 다음 건물마다 노드를 설치합니다.
- 관리 서버에서 설치 프로그램을 실행합니다. 패널, API, 워커, 오리진을 systemd 유닛으로 설치하고 첫 관리자를 생성합니다.
- API의 공개 URL(API_PUBLIC_URL)과 재생 기본 주소를 설정하여 플레이어 링크가 캠퍼스 주소를 가리키게 합니다.
- 강의실에서 시청할 건물마다 Servers → 노드 추가로 노드를 등록합니다. 패널이 노드 패키지로 SSH를 통해 설치합니다.
- Servers 페이지를 확인합니다. 노드가 하트비트와 트래픽을 보고하고 해당 건물의 시청자가 노드로 연결되면 완료입니다.
콘텐츠 정리
과목은 시리즈로, 프로그램은 부케와 패키지로.
- Movies / Series 아래에 학부 또는 과목마다 카테고리를 하나씩 만듭니다.
- 각 과목을 시리즈로 추가합니다. 모듈마다 시즌 하나, 수업마다 에피소드 하나이며 녹화본을 소스(업로드 또는 VOD 인제스트 작업)로 합니다.
- 추가한 시리즈로 과목 모음마다 부케를 하나씩 만듭니다(예: 한 학기의 프로그램 과목들).
- 프로그램마다 패키지를 하나씩 만듭니다. 부여할 부케, 기간으로서의 이용 기간, 동시 세션 수 제한을 설정합니다.
파트너(리셀러) 설정
교육 센터 또는 학부를 위임 계정으로 설정합니다.
- Groups에서 센터에 필요한 권한(자체 라인만, 카탈로그 변경 없음)을 가진 그룹을 만듭니다.
- Users에서 그 그룹, 크레딧 잔액, 배부할 수 있는 패키지를 지정해 센터를 리셀러로 추가합니다.
- 대시보드 주소를 전달합니다. 센터는 거기서 자신의 학생을 관리하고, 패널은 감사 로그를 유지합니다.
학생 액세스 설정
학생마다 등록 시 라인을 하나씩 생성합니다.
- 소규모 코호트는 Lines → 추가에서 프로그램의 패키지로 라인을 추가합니다. 만료일은 패키지 기간을 따릅니다.
- 등록일에는 패키지의 활성화 코드를 생성합니다. 학생이 플레이어에서 코드를 사용하면 라인이 부여됩니다.
- 학생 시스템이나 LMS에서는 Reseller API 키를 만들고, 시스템이 action=create_line과 학생별 요청 ID로 라인을 생성하게 합니다.
- 최대 연결 수를 학생이 동시에 사용할 수 있는 기기 수로 설정합니다. 이를 넘는 다음 연결은 플레이어가 거부합니다.
VOD 설정
녹화된 수업을 주문형으로 제공합니다.
- 각 녹화본을 에피소드의 소스로 업로드하거나, VOD 인제스트 작업에 파일을 지정해 워커가 다운로드하고 인코딩하여 미디어 루트에 저장하게 합니다.
- 메타데이터(제목, 설명, 포스터)는 직접 입력하거나 공개 자료는 TMDB에서 가져옵니다. 수업은 보통 제목과 설명만 있으면 됩니다.
- 테스트 라인으로 웹 플레이어에서 재생을 확인합니다. 링크는 서명되며 설정된 시간이 지나면 만료됩니다.
실시간 강의실 스트리밍
강의를 실시간 채널로 전송합니다.
- Streams에서 강의실의 인코더를 소스(RTMP 푸시 주소 또는 풀 URL)로 하는 실시간 스트림을 추가합니다.
- 스트림을 과목의 부케에 넣어 등록한 학생에게만 보이게 합니다. 시간표를 관리한다면 EPG에도 추가합니다.
- 학생이 나중에 수업을 시청할 수 있게 하려면 스트림에서 캐치업 또는 타임시프트를 활성화합니다. 녹화본을 에피소드로 업로드할 수도 있습니다.
구독 및 액세스 만료
과목이 끝나면 함께 끝나는 액세스.
- 패키지에 이용 기간을 기간으로 설정합니다. 이 패키지로 생성한 라인은 그 기간이 끝나면 만료됩니다.
- 새 학기의 라인 갱신은 패널에서 센터의 크레딧으로, 또는 API의 action=renew_line으로 처리합니다.
- 시스템을 웹훅에 등록하세요. 라인의 만료가 임박했을 때, 만료되었을 때, 비활성화되었을 때 알림을 받습니다.
외부 LMS와의 연동
LMS가 액세스를 제어하고 플레이어가 재생합니다.
- LMS용 Reseller API 키를 만들고 LMS의 비밀 저장소에 보관하세요. 페이지에는 절대 넣지 마세요.
- 등록 시 LMS가 프로그램의 패키지와 요청 ID로 action=create_line을 호출하고, 자퇴 시 action=disable_line을 호출합니다.
- LMS의 과목 페이지에서 웹 플레이어로 링크하거나 학생에게 플레이어 자격 증명을 알려 주세요. 둘 사이에 단일 로그인은 없습니다.
보안 고려 사항
서비스를 기관 내부에 유지합니다.
- 모든 패널 계정에 2단계 로그인을 활성화하고, 직원에게는 동작하는 범위에서 가장 작은 권한 그룹을 부여하세요.
- 학생의 개인정보는 학생 시스템에 두세요. 라인에는 이름과 만료일만 있으면 됩니다.
- 최대 연결 수를 낮게 유지하고, 공유를 막기 위해 재생을 시청자의 주소에 묶는 것을 고려하세요.
- 암호화된 데이터베이스 백업을 켜고, S3 호환 스토리지가 있다면 오프사이트 복사도 켜세요.
문제 해결
가장 먼저 확인할 일반적인 항목.
- 학생이 로그인하지 못함: 라인의 만료일과 활성 상태를 확인한 다음 패키지와 과목의 부케를 확인하세요.
- 녹화본이 재생되지 않음: Jobs 페이지에서 인제스트 작업의 결과를 확인한 다음 미디어 루트의 파일과 서명된 링크의 만료를 확인하세요.
- 건물의 시청자가 오리진에 접속함: 노드의 하트비트와 시청자의 주소가 노드의 라우팅에 포함되는지 확인하세요.
- API가 호출을 거부함: 키, 액션의 메서드(쓰기는 POST), 재시도한 호출의 요청 ID를 확인하세요.