> For the complete documentation index, see [llms.txt](https://docs.cstplus.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.cstplus.org/documentation/troubleshooting/faq.md).

# FAQ

### General

<details>

<summary>What is CST+ and who is it for?</summary>

CST+ is a self-hosted platform for running 24/7 linear IPTV and FAST channels. You install it on your own VPS, upload your video content, and get a live channel with an EPG, viewer access control, and a full admin panel.

It is built for operators who want full control over their infrastructure: IPTV providers, content distributors, media companies, and anyone building their own channel lineup without relying on third-party cloud platforms.

</details>

<details>

<summary>Does CST+ run in the cloud or on my server?</summary>

On your server. CST+ is self-hosted software. You bring a VPS running Ubuntu or Debian, install CST+ with one command, and everything runs locally. There is no mandatory cloud component, no per-stream fee, and no traffic going through our infrastructure.

</details>

<details>

<summary>What is the difference between loop mode and schedule mode?</summary>

**Loop mode** plays your content folder continuously in order (or shuffled). It runs forever without any planning on your part. Best for background channels or VOD loops.

**Schedule mode** runs a 24-hour day programme that you build manually or auto-fill. Named shows air at specific clock times and the EPG reflects real daily times. Best for FAST channels, news, sport, or kids content where viewers expect a specific show at a specific time.

</details>

<details>

<summary>How many channels can I run?</summary>

As many as your server can handle. The main limits are RAM (each on-air channel uses roughly 54 MB) and disk (content and rendered reels). On a 4 GB RAM server you can comfortably run 30+ channels simultaneously.

Plan limits also apply: Starter allows up to 10 channels, Pro up to 20, Business is unlimited.

</details>

<details>

<summary>Can I use CST+ without a domain? Do I need SSL?</summary>

Yes. CST+ works over plain HTTP on an IP address out of the box. SSL is optional. If you want HTTPS, point a domain to your server and use the one-click SSL option in Settings > Server. CST+ handles the certificate automatically via Caddy.

</details>

***

### Installation and updates

<details>

<summary>What do I need before installing?</summary>

A VPS running Ubuntu 22.04, Ubuntu 24.04, Debian 11, or Debian 12 with at least 2 CPU cores and 1 GB of RAM. Root or sudo access. A CST+ license key from your account. That is it. The installer handles everything else.

</details>

<details>

<summary>How do I update CST+?</summary>

Run `cstplus update` from the server. It downloads the latest version, verifies the package signature, backs up your current installation, and swaps atomically. Active channels keep running during the update.

</details>

<details>

<summary>Can I roll back after an update?</summary>

Yes. Run `cstplus rollback`. The previous version is restored from the backup that was created automatically before the update. Your data (channels, lines, settings) is not affected.

</details>

<details>

<summary>Can I move CST+ to a different server?</summary>

Yes. Create a backup with `cstplus backup create`, copy it and your content files to the new server, install CST+ fresh, then run `cstplus restore`. You will also need to contact support to reset the hardware binding on your license key so it activates on the new machine.

</details>

***

### Channels and content

<details>

<summary>What video formats does CST+ accept?</summary>

Any format that ffmpeg can read: mp4, mkv, mov, avi, ts, and most others. Mixed resolutions, codecs, and frame rates in the same channel are fine. CST+ normalises everything to a uniform output during the render step.

</details>

<details>

<summary>How long does rendering take?</summary>

It depends on your total content duration and server CPU. A 2-hour reel on a 2-core VPS typically takes 10-20 minutes. Rendering is the one-time cost. Once done, the channel runs at near-zero CPU cost indefinitely.

</details>

<details>

<summary>Can I add new content to a channel without taking it offline?</summary>

Yes. Add files to the content folder, then click Re-render on the channel page. The channel keeps broadcasting the current reel while the new one renders, then switches over automatically. No downtime.

</details>

<details>

<summary>Can I burn a logo into the stream?</summary>

Yes. On the channel settings page, enable Logo overlay and upload a PNG. Set the position (corner or full-frame). The logo is applied at render time and appears on every frame of the broadcast. Changing it requires a re-render.

</details>

***

### Viewers and access

<details>

<summary>How do viewers connect?</summary>

Through a Line. A line is a set of credentials (username and password) that you create in the panel. Share the M3U URL or Xtream credentials with your viewer and they load it into any IPTV app. No special app or client software is needed.

</details>

<details>

<summary>What IPTV apps work with CST+?</summary>

Any app that supports M3U playlists or the Xtream Codes API. This covers Tivimate, IPTV Smarters, GSE Smart IPTV, Kodi with PVR Simple, VLC, and most Android and iOS IPTV apps. On smart TVs, any IPTV app from the TV's app store that accepts M3U or Xtream will work.

</details>

<details>

<summary>Can I limit how many devices can watch at the same time?</summary>

Yes. Each line has a Max connections setting. When a viewer exceeds the limit they receive a 429 response. You can also set a global per-IP stream cap in Settings > Security.

</details>

<details>

<summary>Can I restrict access by country?</summary>

Yes. Geo-blocking is available globally (Settings > Security > Blocked countries) and per-line. Viewers from blocked countries receive a 403.

</details>

***

### EPG and metadata

<details>

<summary>Do I need to set up the EPG manually?</summary>

No. CST+ generates an EPG automatically for every channel. In loop mode it projects the loop forward in time. In schedule mode it shows real clock times that repeat daily. The EPG is embedded in every M3U playlist automatically.

</details>

<details>

<summary>How do I get proper programme titles instead of filenames in the EPG?</summary>

Add a TMDB API key in Settings > API. Then open the Programme metadata editor on any channel page and click Search TMDB next to each clip. CST+ fetches and stores titles, descriptions, posters, and ratings automatically.

</details>

***

### Fleet and scaling

<details>

<summary>When should I add an edge node?</summary>

When a single server is not enough: your viewers are geographically spread and latency is noticeable, you are saturating the server's upload bandwidth, or you want redundancy. Most setups with under 5,000 concurrent viewers never need fleet mode.

</details>

<details>

<summary>Do edge nodes need their own license?</summary>

Yes, each server needs a license slot. However, edge nodes do not require a manually entered license key. They activate automatically using a fleet token generated by the primary server.

</details>

***

### Ads and monetisation

<details>

<summary>How does ad insertion work?</summary>

CST+ uses server-side ad insertion (SSAI). Connect a VAST or VMAP ad server, set break intervals or place manual breaks on the timeline, and ads are stitched directly into the HLS stream. Viewers cannot skip or block them. House ads fill any unsold break time automatically.

Ad insertion is available on Pro and Business plans.

</details>

<details>

<summary>Can I track how many people saw an ad?</summary>

Yes. Every break is recorded in Analytics > Ad performance with impression count, paid fill rate (VAST vs house), and the number of viewers at the time of each break.

</details>

***

### License and billing

<details>

<summary>What happens if my license expires?</summary>

All channels stop immediately. The stream edge returns 404 on all stream URLs. The admin panel locks and shows a license reactivation screen. Reactivating the license restarts channels automatically.

</details>

<details>

<summary>Can I use the same license on multiple servers?</summary>

No. Each license key is bound to one server at a time. To move a license to a different server, contact support to reset the hardware binding.

</details>

<details>

<summary>I need help with something not covered here.</summary>

Contact support at **<support@cstplus.org>**. Include your CST+ version (`cstplus --version`), OS version (`lsb_release -a`), and the last 50 lines of the relevant service log (`journalctl -u cstplus-control -n 50`).

</details>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.cstplus.org/documentation/troubleshooting/faq.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
