Skip to Content
IPTVBoss

IPTVBoss

IPTV playlist and EPG management with a headless XC Server

IPTVBoss manages IPTV playlists and EPG data and re-serves them through a headless Xtream Codes (XC) server. QuickBox Pro installs it as a single server-level application owned by the installing admin: an always-on XC Server (loopback-bound, reverse-proxied by nginx with per-subdomain SSL) plus a scheduled headless processing run that syncs your playlists and EPG on a systemd timer. The IPTVBoss license is user-owned - QuickBox never accepts, stores, logs, or automates any license key; you activate IPTVBoss through its own interface.

Headless XC Server

Serves an Xtream Codes API and portal from a loopback-bound service, reverse-proxied by nginx with optional subdomain SSL

Scheduled Processing

A systemd timer runs the headless sync of playlists, EPG, and backups on a configurable cadence, with run-now on demand

Server-Level Install

One server-level install owned by the installing admin and managed from the App Dashboard by any admin

User-Owned Licensing

QuickBox never stores or automates the IPTVBoss key - activation stays entirely with you, through IPTVBoss's own editor

Reverse-Proxy Ready

nginx fronts the loopback XC port on an SSL subdomain, so the raw port is never exposed to the internet

Delete Protection

The scheduled processing unit is a first-class Delete Protection target so a run cannot mass-delete managed content

Server-level app - install as an admin

IPTVBoss installs once per server (the netdata and fail2ban model), not per user. The install must be run by a QuickBox admin (account level 9 or higher); the -u you pass names the admin the install is recorded against, and IPTVBoss’s config and data live in that admin’s home directory.


When to use it

Symptoms

  • You already run IPTVBoss on the desktop and want a headless server instance
  • You have IPTV providers whose playlists and EPG you want processed and re-served on a schedule
  • You want an always-on Xtream Codes portal in front of your curated lineup
  • You want QuickBox to manage the service, reverse proxy, and SSL for you
  • You want scheduled EPG and playlist syncs without keeping a desktop app open

Resolution

  • Install as an admin via qb install iptvboss -u adminuser
  • Attach a subdomain with SSL so the XC Server endpoint has a public HTTPS address
  • Set the processing schedule, or trigger a run on demand, from the App Dashboard
  • Activate your IPTVBoss license through its own editor over a desktop remote
  • Point your IPTV clients at the SSL subdomain

Installation

Server-level install requires an admin

IPTVBoss is a single server-level application, so only a QuickBox admin (account level 9 or higher) can install it, and there is one install per server. The -u <adminuser> you pass records the install against that admin and homes IPTVBoss’s config and data under /home/<adminuser>/IPTVBoss. Both service units run as that admin.

QuickBox installs IPTVBoss from its beta build. The beta is the only supported build: it carries the headless XC Server and -nogui processing modes that QuickBox’s managed services depend on, which the stable build does not expose. There is therefore no stable/beta channel selector and no --beta flag for IPTVBoss - the beta build is always used.

Install from the Dashboard

Open App Dashboard -> Package Management (/dashboard?mode=packages), find IPTVBoss under the Media Servers category, and click Install. The dashboard streams the install log live and IPTVBoss appears on your App Dashboard when it finishes. Reinstall, Update, and Remove are available from the same catalog.

In the install dialog you can switch the domain toggle to Custom and enter a subdomain - the install then issues SSL and serves the XC Server endpoint on that subdomain (see The XC Server endpoint and SSL subdomain). Because IPTVBoss is server-level, install it from an admin account.

Install and manage from the CLI

The CLI runs the same install pipeline and is suited to automation and scripting. The -d domain and the DNS flags map to the dashboard choices above:

qb install iptvboss -u adminuser qb install iptvboss -u adminuser -d iptvboss.example.com qb install iptvboss -u adminuser -d iptvboss.example.com --dns --dns-provider cloudflare qb reinstall iptvboss -u adminuser qb update iptvboss -u adminuser qb remove iptvboss -u adminuser qb help iptvboss

Passing -d <domain> issues the Let’s Encrypt certificate and writes the subdomain nginx vhost as part of the install. Add --dns --dns-provider <provider> for a DNS-01 challenge (needed for wildcard certificates). Full flag reference: CLI Reference.

Automatic port assignment

QuickBox binds the XC Server to a loopback port near the upstream default of 8001, randomized per install for isolation. The chosen port is recorded in the QuickBox database and drives both the systemd unit and the nginx proxy, so the two always agree - you never set it by hand. Find the assigned port on the IPTVBoss row in the App Dashboard. The XC Server is never exposed directly; reach it through the reverse proxy.


Architecture

A single IPTVBoss install runs as two systemd units with two different jobs:

Unit
iptvboss-xcserver.service
Role
The always-on XC Server. A long-running service (Restart=always) bound to 127.0.0.1:<port>, reverse-proxied by nginx. This is the primary status and control target on the App Dashboard row.
Unit
iptvboss-nogui.service + iptvboss-nogui.timer
Role
The scheduled processing run. A oneshot that fetches your sources, syncs EPG and playlists, runs a backup, then exits. Fired by the timer (daily by default) and available to run on demand - it is not a continuously-running service.

The two units operate on their own copies of the IPTVBoss database, so a scheduled processing run and the XC Server run at the same time without contention - the timer does not interrupt the always-on portal.


The XC Server endpoint and SSL subdomain

The SSL subdomain is the XC Server endpoint - the address your IPTV clients and players connect to for the Xtream Codes service, and where the XC Server serves its own web-based Server Console. It is not a management page for the IPTVBoss app; you configure IPTVBoss in its desktop editor (see Licensing and the IPTVBoss editor).

Because the XC Server is root-path oriented, that endpoint is served at the root of a dedicated subdomain - for example https://iptvboss.example.com/ - not on a subpath. Attach a subdomain and QuickBox reverse-proxies the loopback XC port to it over HTTPS.

The XC Server has no public endpoint until a subdomain is attached

Until you attach an SSL subdomain, the XC Server is reachable only on its loopback port - there is no public endpoint for your IPTV clients, and the raw port is never exposed directly. Managing IPTVBoss does not depend on this: configure the app in its desktop editor and control the service from the App Dashboard (service control, processing, logs) either way.

There are three ways to attach the subdomain: a single-call install (Path A), a post-install retrofit from the CLI (Path B), and the dashboard SSL Control page (Path C).

Path A - Subdomain at install time

Point a DNS record (A or CNAME) for your chosen subdomain at the server, then pass -d <domain> to the install:

qb install iptvboss -u adminuser -d iptvboss.example.com

The install issues the certificate, writes the subdomain vhost, and starts the XC Server behind it in one call - no separate lecert step required.

Path B - Retrofit a subdomain to an existing install

If IPTVBoss is already installed and you want to attach (or move) its subdomain, issue the certificate with the IPTVBoss lecert flag. The -u is required - it names the admin that owns the install:

qb install lecert --iptvboss -d iptvboss.example.com -u adminuser

This requests a Let’s Encrypt certificate (HTTP-01 challenge by default), writes the per-user subdomain vhost iptvboss.example.com reverse-proxied to the assigned XC port, reloads nginx, and registers the certificate for automatic renewal.

Wildcard or DNS challenge: add --dns --dns-provider cloudflare (or another supported provider) and use a wildcard domain such as *.example.com. See the Let’s Encrypt application reference for the full list of supported DNS providers.

Path C - Dashboard SSL Control

The dashboard’s SSL Control page at System -> SSL Control (/system/ssl) exposes the same flow. Pick IPTVBoss as the target, enter the subdomain and the owning admin username, choose the challenge method, and QuickBox runs the same qb install lecert --iptvboss pipeline under the hood. For end-to-end setup, supported DNS providers, wildcard certificates, and renewal behavior, see the SSL Certificates dashboard page.


Managing IPTVBoss from the dashboard

Open the App Dashboard (/dashboard, the default control view), find the IPTVBoss row, and expand it. The row shows the XC Server status, version, and assigned port, and its expansion carries a two-tab panel:

  • XC Server - start, stop, and restart the always-on service, apply and reload it after a change, see the XC endpoint and SSL status with a link to manage the certificate, check desktop-access options, and stream the live service logs.
  • Processing - run the headless processing sync on demand, enable or disable the schedule, see the last and next run with the last result, and read the recent processing log.

Because IPTVBoss is server-level infrastructure, the row and both panels are shown to admins only. Any admin can manage the install regardless of which admin ran it.


Licensing and the IPTVBoss editor

IPTVBoss’s license is user-owned. QuickBox never accepts, stores, logs, or automates any license key - activation and full configuration happen in IPTVBoss’s own editor, which is a graphical desktop application.

To reach the editor on a headless server you need a desktop remote installed for the admin account - either noVNC (in-browser) or x2go (native client). Install one of those, open a desktop session, launch IPTVBoss, and complete licensing and any source configuration there.

Where to get the license

Buy and manage your IPTVBoss license through IPTVBoss directly. QuickBox provisions and manages the server, the XC Server service, the reverse proxy, and SSL - it does not resell, bundle, or hold your IPTVBoss key.

Close the editor before a scheduled run

The interactive IPTVBoss editor holds the main database, and the scheduled processing run reads it too. If you leave the editor open when the timer fires you can hit a write conflict. Close the IPTVBoss editor when you are done configuring so scheduled processing runs cleanly. The always-on XC Server is unaffected - it uses its own database copy.


Scheduled processing

The processing run (the headless -nogui sync) fetches your sources, updates EPG and playlists, and writes a backup, then exits. It is driven by a systemd timer that fires daily by default and catches a run missed while the box was off.

Manage the schedule and trigger runs from the Processing tab of the IPTVBoss row on the App Dashboard:

  • Run now - trigger a processing sync immediately (rejected if one is already running).
  • Schedule - enable or disable the timer.
  • Last run / Next run / Last result - see when processing last ran, when it runs next, and whether it succeeded.

Configuration and files

/
usr/bin/iptvboss# IPTVBoss launcher (the binary both units call)
usr/lib/iptvboss/# IPTVBoss runtime (bundled JVM and application libraries)
home/adminuser/IPTVBoss/# IPTVBoss config and data, owned by the installing admin
├── db/# H2 databases - the main store and the XC Server store
├── xc-server-api-keys.json# XC Server API keys
├── xcFiles/# Generated Xtream Codes output served by the XC Server
├── backups/# Backups written by the scheduled processing run
├── cache/# Working cache
└── logs/# IPTVBoss application logs
etc/nginx/software/iptvboss.conf# Base nginx reverse-proxy config (the install marker; loopback presence before a subdomain is attached)
etc/nginx/sites-enabled/adminuser.iptvboss.conf# Subdomain vhost written by lecert once SSL is attached
etc/systemd/system/# IPTVBoss systemd units
├── iptvboss-xcserver.service# Always-on XC Server
├── iptvboss-nogui.service# Headless processing oneshot
└── iptvboss-nogui.timer# Processing schedule (daily by default)
The XC settings live in a binary database

IPTVBoss stores its XC and processing settings in an H2 (binary) database, not an editable text file. Edit those settings in the IPTVBoss editor, not on disk. QuickBox exposes backup, restore, and edit only for the nginx reverse-proxy config.


Service management

Both IPTVBoss units are static (not per-user templated). Manage them by name:

# Always-on XC Server systemctl status iptvboss-xcserver.service systemctl restart iptvboss-xcserver.service journalctl -u iptvboss-xcserver.service -f # Scheduled processing - the timer and its oneshot systemctl status iptvboss-nogui.timer systemctl list-timers iptvboss-nogui.timer # Trigger a processing run by hand systemctl start iptvboss-nogui.service journalctl -u iptvboss-nogui.service -f
Prefer the dashboard for schedule changes

Enabling or disabling the processing schedule is best done from the Processing tab of the IPTVBoss row on the App Dashboard - it keeps the timer state and the dashboard in sync. The commands above are the CLI equivalent for scripting and troubleshooting.


Updating IPTVBoss

IPTVBoss updates through its vendor apt source, which the install registers. Run:

qb update iptvboss -u adminuser

This upgrades the IPTVBoss package to the latest beta build, refreshes the dependency bridge, and leaves your config, data, and schedule in place. When an update is available, the IPTVBoss row on the App Dashboard shows an update pill you can act on directly.


Delete Protection

The scheduled processing unit (iptvboss-nogui.service) is a first-class Delete Protection target, so IPTVBoss is covered the moment you enable the feature. Delete Protection guards against a runaway deletion during a processing run by slowing large unlink operations.

Enable it from Settings > General > Feature Flags in the dashboard. Delete Protection is opt-in and honors your setting - it does nothing until an admin turns it on, and it then applies to IPTVBoss automatically. For per-app thresholds and the full behavior, see the Delete Protection page.


Troubleshooting

The XC Server will not start

Symptoms

  • systemctl status iptvboss-xcserver.service shows failed or activating
  • The subdomain returns 502 Bad Gateway from nginx
  • The App Dashboard row shows the XC Server as failed

What to check

  • Read the journal: journalctl -u iptvboss-xcserver.service -n 100
  • Confirm the assigned port matches the nginx proxy (both come from the QuickBox database - never edit either by hand)
  • Restart it: systemctl restart iptvboss-xcserver.service
  • Verify the reverse-proxy config: nginx -t
  • Rebuild the install as an admin: qb reinstall iptvboss -u adminuser

The subdomain is not reachable

Confirm the DNS record for your subdomain points at the server, that the certificate issued (re-run the lecert step in The XC Server endpoint and SSL subdomain if it did not), and that the XC Server is running. Until a subdomain is attached the XC Server has no public endpoint - configure IPTVBoss in its desktop editor and control the service from the App Dashboard in the meantime.

Scheduled processing did not run

# Is the timer enabled and when does it next fire? systemctl list-timers iptvboss-nogui.timer # Read the last processing run's output journalctl -u iptvboss-nogui.service -n 100

Check the Processing tab of the IPTVBoss row for the last result. If the schedule is off, enable it there. A run can also fail if the IPTVBoss editor was left open holding the main database - close it and run again.

I cannot license or configure IPTVBoss

Licensing and source configuration happen in IPTVBoss’s own graphical editor, which needs a desktop remote. Install noVNC or x2go for the admin account, open a desktop session, and launch IPTVBoss from there.


Best practices

Do

  • Install IPTVBoss from an admin account - it is a single server-level app
  • Attach a subdomain with SSL so the XC Server endpoint is served securely over HTTPS
  • Activate your license and configure sources in the IPTVBoss editor over noVNC or x2go
  • Close the IPTVBoss editor when you finish so scheduled processing runs without a database conflict
  • Enable Delete Protection so a processing run cannot mass-delete managed content
  • Keep IPTVBoss current with qb update iptvboss for fixes and features
  • Manage the service, schedule, and logs from the App Dashboard

Don't

  • Don't expose the XC Server's loopback port directly - always go through the SSL subdomain
  • Don't edit the assigned XC port by hand - QuickBox keeps the unit and nginx in sync
  • Don't put your IPTVBoss license key into any QuickBox field - QuickBox never handles it
  • Don't edit the H2 database on disk - change settings in the IPTVBoss editor
  • Don't expect a public XC Server endpoint before a subdomain is attached
  • Don't run the install as a non-admin user - it will be refused

Frequently asked questions

No. IPTVBoss is a single server-level install (the netdata and fail2ban model). One install serves the whole server, it must be installed by an admin, and its config and data live in the installing admin's home directory. Any admin can then manage it from the App Dashboard.
QuickBox always installs IPTVBoss's beta build because it is the only build that exposes the headless XC Server and -nogui processing modes QuickBox's managed services depend on. The stable build lacks those modes, so switching to it would break the integration. There is no channel selector and no --beta flag - the beta build is always used.
No. Your IPTVBoss license is entirely user-owned. QuickBox never accepts, stores, logs, or automates any license key. You buy the license from IPTVBoss and activate it in IPTVBoss's own editor, reached over a desktop remote such as noVNC or x2go.
You manage IPTVBoss in its own desktop editor, not a browser page - reach it over a desktop remote such as noVNC or x2go and configure playlists, EPG, sources, and licensing there. Separately, the XC Server endpoint (the address your IPTV clients connect to, which also serves the XC Server's web-based Server Console) is served at the root of an SSL subdomain once you attach one - the XC Server is root-path oriented, so it uses a dedicated subdomain, not a subpath. Attach it with qb install lecert --iptvboss -d iptvboss.example.com -u adminuser or by passing -d at install time. Day-to-day service control lives on the App Dashboard.
Open the IPTVBoss row on the App Dashboard and use the Processing tab to enable or disable the schedule and to trigger a sync on demand. The timer fires daily by default. You can also inspect it with systemctl list-timers iptvboss-nogui.timer.
Yes. The XC Server and the scheduled processing run each work on their own copy of the database, so they run concurrently without contention. The one thing to avoid is leaving the interactive IPTVBoss editor open during a scheduled run, because the editor holds the main database that the processing run also reads.

IPTV Proxy and Tuner

Media Servers

Desktop Access


Resources

Join the Community

Media server operators sharing configs, getting support, and shaping the future of QuickBox Pro.

Dedicated Support
Feature Previews
Community Configs
Active Discussions
Join Discord Server
Last updated on