These guides map an industry's concepts onto the objects the platform has today (bouquets, lines, packages, partner accounts, nodes, the API). They are conceptual mappings, not industry-specific features, and a partner account is a delegated account, not an isolated tenant.
Conceptual mapping
Nothing in the panel is called a course or a student. The table says which object plays which role; the chapters below set them up in that order.
| In your industry | On the platform | Where in the panel |
|---|---|---|
| Training centre or distribution partner | Partner account (reseller): a delegated dashboard with credits, permissions and its own lines | Users → add a reseller; Groups for its permissions |
| Course collection | Bouquet: a named set of channels, films or series that a package grants | Bouquets, from Streams and Movies / Series |
| Recorded lessons | VOD catalogue: movies and series with seasons and episodes, categories and metadata | Movies and Series, or the VOD ingest job |
| Live class | Live channel: a stream with its sources, EPG and output formats | Streams → add a live stream (source URL or RTMP push) |
| Student access | Line: one access with its package, bouquets, expiry, connection limit and outputs | Lines → add, or activation codes, or the Reseller API |
| Course access period | Expiry date of the line, renewed by a package, a credit or the API | The line's expiry date and the package's duration |
| Concurrent session limit | Max connections of the line: how many devices may watch at once | The line's max connections |
| LMS or commerce integration | Reseller API and webhooks: the operations of the panel from your own system | Reseller API keys and webhooks in the reseller's dashboard |
Prerequisites
What to have before installing.
- A Linux server (Ubuntu 22.04 or 24.04) on the campus network with Postgres, Redis and ffmpeg installed by the installer, and a domain or an internal address for the panel and the player.
- The recordings you will publish (files or a capture system that can push RTMP) and, for live classes, an encoder in each room that will stream.
- A licence key: the Free plan needs none; qualifying institutions request the free Professional key by e-mail from their academic domain.
Infrastructure deployment
Install the management server, then a node per building.
- Run the installer on the management server; it installs the panel, the API, the worker and the origin as systemd units and seeds the first administrator.
- Set the public URL of the API (API_PUBLIC_URL) and of the playback base so the player links point at the campus address.
- Enrol a node from Servers → add a node for each building whose halls will watch; the panel installs it over SSH from the node package.
- Check the Servers page: the node reports its heartbeat and traffic, and viewers of that building are routed to it.
Content organisation
Courses as series, programmes as bouquets and packages.
- Create one category per faculty or subject under Movies / Series.
- Add each course as a series: one season per module, one episode per lesson, with the recording as the source (upload or the VOD ingest job).
- Create one bouquet per course collection (for example a programme's courses for a term) from the series you added.
- Create one package per programme: the bouquets it grants, the access period as its duration, and the concurrent-session limit.
Partner (reseller) configuration
A training centre or a faculty as a delegated account.
- Create a group with the permissions the centre needs (lines of its own, no catalogue changes) under Groups.
- Add the centre as a reseller under Users with that group, a credit balance and the packages it may hand out.
- Give it the dashboard address; it manages its own students from there, and the panel keeps the audit log.
Student access configuration
One line per student, created at enrolment.
- For small cohorts, add lines from Lines → add with the package of the programme; the expiry follows the package duration.
- For enrolment day, generate activation codes for the package; a student redeems a code in the player and gets a line.
- For a student system or an LMS, create a Reseller API key and let the system create lines with action=create_line and a request id per student.
- Set max connections to the number of devices a student may use at once; the player refuses the next connection beyond it.
VOD setup
Recorded lessons on demand.
- Upload each recording as an episode's source, or point the VOD ingest job at the file and let the worker download and encode it into the media root.
- Fill the metadata (title, description, poster) by hand or from TMDB for public material; lessons usually need a title and a description only.
- Check playback in the web player with a test line; the link is signed and expires after the configured time.
Live classroom streaming
A lecture as a live channel.
- Add a live stream under Streams with the room's encoder as source (an RTMP push address or a pull URL).
- Put the stream in the course's bouquet so only enrolled students see it; add it to the EPG if you keep a timetable.
- Enable catch-up or timeshift on the stream when students may watch a class later; the recording can also be uploaded as an episode.
Subscription and access expiration
Access that ends with the course.
- Give the package the access period as its duration; a line created from it expires at the end of that period.
- Renew a line for a new term from the panel, with a credit of the centre, or through the API with action=renew_line.
- Subscribe your system to the webhooks: it is told when a line is about to expire, has expired or was disabled.
Integration with an external LMS
The LMS drives access; the player plays.
- Create a Reseller API key for the LMS; keep it in the LMS's secrets, never in a page.
- On enrolment the LMS calls action=create_line with the programme's package and a request id; on withdrawal action=disable_line.
- Link from the course page of the LMS to the web player or give the student the player credentials; there is no single sign-on between the two.
Security considerations
Keep the service inside the institution.
- Enable two-factor sign-in for every panel account and give staff the smallest permission group that works.
- Keep student personal data in the student system; the line needs a name and an expiry only.
- Keep max connections low and consider binding playback to the viewer's address to prevent sharing.
- Turn on the encrypted database backup and, if you have S3-compatible storage, the off-site copy.
Troubleshooting
The usual first checks.
- A student cannot sign in: check the line's expiry and that it is enabled, then the package and the bouquet of the course.
- A recording does not play: check the ingest job's result on the Jobs page, then the file in the media root and the signed link's expiry.
- A building's viewers hit the origin: check the node's heartbeat and that the viewer's address falls in the node's routing.
- The API refuses a call: check the key, the action's method (writes are POST) and the request id of a retried call.