Home
XtreamUIPro

Setup guide

Education & Training setup guide

Configure the platform as a course video service for a school, a training provider or a university: course library, student access, live classes and the LMS integration.

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 industryOn the platformWhere in the panel
Training centre or distribution partnerPartner account (reseller): a delegated dashboard with credits, permissions and its own linesUsers → add a reseller; Groups for its permissions
Course collectionBouquet: a named set of channels, films or series that a package grantsBouquets, from Streams and Movies / Series
Recorded lessonsVOD catalogue: movies and series with seasons and episodes, categories and metadataMovies and Series, or the VOD ingest job
Live classLive channel: a stream with its sources, EPG and output formatsStreams → add a live stream (source URL or RTMP push)
Student accessLine: one access with its package, bouquets, expiry, connection limit and outputsLines → add, or activation codes, or the Reseller API
Course access periodExpiry date of the line, renewed by a package, a credit or the APIThe line's expiry date and the package's duration
Concurrent session limitMax connections of the line: how many devices may watch at onceThe line's max connections
LMS or commerce integrationReseller API and webhooks: the operations of the panel from your own systemReseller API keys and webhooks in the reseller's dashboard

Prerequisites

What to have before installing.

  1. 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.
  2. 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.
  3. 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.

  1. 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.
  2. Set the public URL of the API (API_PUBLIC_URL) and of the playback base so the player links point at the campus address.
  3. 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.
  4. 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.

  1. Create one category per faculty or subject under Movies / Series.
  2. 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).
  3. Create one bouquet per course collection (for example a programme's courses for a term) from the series you added.
  4. 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.

  1. Create a group with the permissions the centre needs (lines of its own, no catalogue changes) under Groups.
  2. Add the centre as a reseller under Users with that group, a credit balance and the packages it may hand out.
  3. 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.

  1. For small cohorts, add lines from Lines → add with the package of the programme; the expiry follows the package duration.
  2. For enrolment day, generate activation codes for the package; a student redeems a code in the player and gets a line.
  3. 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.
  4. 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.

  1. 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.
  2. Fill the metadata (title, description, poster) by hand or from TMDB for public material; lessons usually need a title and a description only.
  3. 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.

  1. Add a live stream under Streams with the room's encoder as source (an RTMP push address or a pull URL).
  2. Put the stream in the course's bouquet so only enrolled students see it; add it to the EPG if you keep a timetable.
  3. 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.

  1. Give the package the access period as its duration; a line created from it expires at the end of that period.
  2. Renew a line for a new term from the panel, with a credit of the centre, or through the API with action=renew_line.
  3. 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.

  1. Create a Reseller API key for the LMS; keep it in the LMS's secrets, never in a page.
  2. On enrolment the LMS calls action=create_line with the programme's package and a request id; on withdrawal action=disable_line.
  3. 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.

  1. Enable two-factor sign-in for every panel account and give staff the smallest permission group that works.
  2. Keep student personal data in the student system; the line needs a name and an expiry only.
  3. Keep max connections low and consider binding playback to the viewer's address to prevent sharing.
  4. Turn on the encrypted database backup and, if you have S3-compatible storage, the off-site copy.

Troubleshooting

The usual first checks.

  1. A student cannot sign in: check the line's expiry and that it is enabled, then the package and the bouquet of the course.
  2. 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.
  3. A building's viewers hit the origin: check the node's heartbeat and that the viewer's address falls in the node's routing.
  4. The API refuses a call: check the key, the action's method (writes are POST) and the request id of a retried call.