Preloader
Video Guide

How to Install an IPTV Panel on Ubuntu Server (2027)

A video walkthrough plus the full detail behind it: what to provision, how the installation actually runs over SSH, the two ports that trip everyone up, and the post-install checklist that decides whether your panel survives its first busy night.


Watch the Installation Video

The short version first. This walkthrough shows the whole installation from a bare Ubuntu server to a panel you can log into, with no commands typed on the server itself.

How to Install an IPTV Panel on Ubuntu Server, Full OTT Panel Setup

Video tutorial 2:21 Ubuntu 20.04 to 26.04
  • Adding a fresh Ubuntu server to the Master CMS using its IP and root SSH credentials
  • The automated install running end to end, with no manual packages, no compiling and no hand-edited configs
  • Setting the panel port and logging in as admin for the first time
Watch on YouTube

Everything below expands on what the video shows: the decisions you make before you start, and the checks you run afterwards.

Server Requirements Before You Start

Get this wrong and everything afterwards is harder than it needs to be. The panel installs happily on modest hardware, but a main server short on RAM starts hurting the moment real traffic arrives, and it hurts in ways that look like software faults rather than sizing mistakes.

RequirementWhat you need
Operating systemClean Ubuntu 20.04, 22.04, 24.04 or 26.04 on x86. Ubuntu 24.04 is the recommended choice.
RAM (main server)32 GB minimum. This is the number people ignore and regret.
RAM (load balancer)Much smaller, because balancers only deliver streams and do not run the panel.
AccessRoot SSH: IP address, SSH port, and password or key
NetworkStable high-bandwidth uplink, with the admin port, streaming ports and SSH open
LicensePro license, which covers the main server plus unlimited load balancers

Note what that last row means for your budget. Because one license covers unlimited balancers, the right architecture is a single well-specified main server handling the panel and database, with delivery pushed out to as many cheap balancers as your bandwidth demands. You are not paying per node. If you are still sizing hardware, the IPTV server requirements guide goes deeper on CPU, disk and bandwidth planning.

Never install on a server that ran a cracked panel. Cracked XtreamUI and XUI builds have historically shipped with backdoors, extra authorized SSH keys and cron entries that survive an application-level uninstall. If you are moving off one, reimage the machine or order a different one. Installing a clean panel on a dirty operating system gives you a clean panel on a compromised box.

Which Ubuntu Version to Choose

Supported releases are Ubuntu 20.04, 22.04, 24.04 and 26.04 on x86 architecture. The question is not really compatibility, it is how long you want to go before rebuilding.

  • Ubuntu 24.04 is the recommended choice for a new build, and it is what the official install instructions specify. Long remaining support window, modern kernel, good hardware support on current server generations.
  • Ubuntu 26.04 is supported if your provider images it and you want the longest possible runway.
  • Ubuntu 22.04 and 20.04 both work fine and are widely offered by hosts, but you are starting a new server with less time on the clock.
  • Ubuntu 18.04 and older are legacy territory. They are only relevant to setups that cannot run FFmpeg v7 and have to stay on the older v5 build, which is not where you want a new install to be.

What matters as much as the version number is that the image is clean. A fresh operating system is the recommended install path for security reasons. Installing on top of an existing panel, or alongside a MySQL you set up yourself, causes failures that are far harder to diagnose than a five-minute reimage.

Installing the Panel, Step by Step

This is what the video shows. The install is driven by the Master CMS Panel, which connects to your server over SSH and does the work remotely. You never open a package manager.

1 Provision the Ubuntu server

Order a dedicated server with a clean Ubuntu image, ideally 24.04. Note three things: the IP address, the SSH port, and the root password. Nothing needs to be pre-installed, meaning no MySQL, no nginx, no PHP and no dependencies of any kind.

2 Log in to the Master CMS Panel

Sign in with your xm: account, which uses the format xm:********. The CMS is the control plane for every server you run: main servers, load balancers, and Sub-Main edge nodes if you use the Multi-Main addon. This is the single place you will manage infrastructure from now on.

3 Add your server for installation

Add a new server and enter its SSH details: IP address, SSH port and root password. Choose the role, either Main Server for the panel itself or Load Balancer for a delivery node. Start the install and leave it alone.

What is happening now: the CMS connects over SSH and installs the full stack itself, meaning the streaming core, database, web layer and security components. Typical install time is around two minutes on a decent server, because a prebuilt stack is being pushed rather than compiled on the machine. You run no commands and edit no config files.

4 Set your panel port, if you want a custom one

The admin panel answers on port 7709 by default. If you want something else, the CMS dashboard has an Edit Port button. Read the next section first, because port confusion is where most first-time installs appear to go wrong when nothing is actually wrong.

5 Log in as admin

Open http://YOUR_SERVER_IP:7709, or your custom port, and log in with the admin account. You now have a clean, working panel: create your bouquets, add streams, set up resellers and configure authentication.

Confirm three things before moving on: the admin panel loads on 7709 or your custom port, the streaming port answers, and the server shows as online in the CMS. Everything you do next assumes all three are true, and diagnosing a later problem is far harder if one of them was quietly false from the start.

The Two Ports: 7709 and 8080

If you take one thing from this guide, take this. The panel runs two separate ports on two different web servers, and confusing them produces the single most common "my install failed" support ticket, from installs that succeeded perfectly.

PortRuns onDefaultUsed by
Admin panel (CMS login)HAProxy7709You and your resellers
Streaming (channels and VODs)Nginx8080 HTTP, 8443 SSLYour subscribers' player apps
MySQL (database)MySQL7999The panel itself, and manual restores

Because the admin panel and streaming run on different services, they must use different ports. The defaults already keep them apart, so do not make them collide.

The failure mode looks like this: the install finishes, you open the server IP on port 8080, you see something that is clearly not a login page, and you conclude the installation broke. It did not. You are knocking on the wrong door. Browse to http://YOUR_SERVER_IP:7709 instead.

Changing the admin panel port

  1. Log in to the Master CMS cPanel with your xm: account.
  2. On the dashboard, click Edit Port.
  3. Set the new port, and make sure it is not already used by another service.
  4. Click Save. Changes take roughly two minutes to apply.
Planning to use Cloudflare on the admin panel? You will have to move off 7709. Cloudflare's proxy only works on ports 443, 2053, 2083, 2087, 2096 and 8443. Streaming SSL already uses 8443, which is on that list, so streams work through Cloudflare on the default port with no change. The admin port does not, so pick a supported port when you change it.

Installing Without Reinstalling the OS

The recommended path is always a fresh Ubuntu install. Only take this route if there is a genuine reason you cannot reinstall the server, such as hardware you do not control or an IP you cannot move.

  1. Back up your MySQL data. Create complete database backups and download them to your local computer. Do not proceed without verified backups.
  2. Remove the existing MySQL server completely. Run these in sequence:
    sudo service mysql stop sudo apt-get --force-yes remove mysql-server mysql-client sudo apt-get --force-yes purge mysql-server mysql-client sudo apt-get --force-yes remove mysql-common -y sudo apt-get --force-yes purge mysql-common -y sudo apt-get --force-yes autoremove --purge -y sudo apt-get autoclean sudo rm -rf /etc/mysql sudo rm -rf /var/lib/mysql sudo rm -rf /var/log/mysql
  3. Install the panel. Enter the server SSH details in the Master CMS Panel, start the installation and wait for it to finish.
Those commands delete MySQL and all of its data. The purge steps remove /var/lib/mysql entirely. Confirm your backup exists, is complete and is downloaded off the server before you run a single line of this.

Post-Install Checklist

A panel that loads is not the same as a panel that is ready. Work through these before you put a single subscriber on it.

  • Change the admin password. First action, every time, no exceptions.
  • Point DNS. Create an A record for your panel hostname so you and your resellers are not typing raw IP addresses, and so you can move servers later without reissuing every subscriber's configuration.
  • Check the three DNS fields on the main server. Under Servers, edit the Main Server and review Users CDN, Private Users CDN and Proxy IP or DNS [All]. All three should point at the main server IP. Getting these wrong is the classic cause of a playlist that loads while nothing plays.
  • Set up SSL. Streaming SSL runs on 8443 and the panel can install and auto-renew a free certificate with one click. The admin port is a separate job on HAProxy, either through Cloudflare or a one-time manual certificate setup.
  • Enable access codes. See the security section below. This is the single highest-value hardening step the panel offers.
  • Enable Server Guard on the main server and each load balancer.
  • Connect cloud backup. xDrive is a free addon included with your license, and local backups on a dead server are worth nothing.
  • Lock down the firewall and SSH. Open only the admin port, streaming ports and SSH. Use key-based authentication and a non-default SSH port.
  • Verify the streaming port answers from outside your own network, not just from the server itself.
Do not skip DNS because the raw IP works fine. It works right up until you need to move servers, absorb an attack or change providers, at which point every subscriber configuration pointing at an IP has to be reissued by hand. Five minutes of DNS setup now is the difference between a server move being a DNS change and a server move being a support catastrophe.

Locking the Panel Down

Competitors attack panels. That is simply part of operating in this market, and the panel ships with specific tools for it. Configure them now, not after the first flood.

Access codes, which stop brute force at the door

By default your login page sits at a predictable address and accepts login attempts from anyone. Access codes replace that with a secret entry link.

  1. Go to System Security > Access Code in the admin panel.
  2. Enable both options: Enable access code feature for panel logins and Disable panel login page without access code link.
  3. Click Create New Code, generate the code, set Type to Admin Panel, select the admin groups, and optionally restrict by IP. Click Add.
  4. Repeat for the reseller panel. Creating several codes for different reseller types helps you identify where an attack is coming from.
  5. Distribute the resulting links, which look like yourdomain.tld:port/ac_XXXXXXX, to authorized users only.

Direct logins to yourdomain.tld:port are then refused, and only valid access code links grant access. The documented effect is a reduction in brute-force attempts of over 90 percent.

MAC portal note: creating a portal (MAC) access code automatically disables the well-known default /c portal address, and your MAC users connect through your custom address instead. That is the secure default. Keeping /c open as well is possible but requires editing portal.conf by hand on every streaming server, and it reduces the benefit of access codes.

Server Guard, for when the flood arrives anyway

Go to Manage Server, edit the main server or a load balancer, open the Server Guard tab, and enable Server Guard along with under-attack mode. Use these thresholds as your trigger: sustained traffic above roughly 500 requests per second on the main server, or 200 per second on a load balancer, indicates an attack rather than organic demand.

Cloud backup, because local backups die with the server

The panel writes automatic backups to /home/xtreamaster/backups/, which is useless if the machine itself fails. xDrive is an encrypted cloud backup addon included free with your license: register at cloud.xtream-masters.com, create an API key under Profile, Account Settings, Developers, then in your admin panel open your Profile Icon, choose xDrive Backup Storage, paste the key and save. Dropbox is supported as an alternative or as a second destination.

Load Balancers and Multi-Main

Load balancers install exactly the same way as the main server: add the server in the CMS with its SSH details, choose the Load Balancer role, and let the CMS install it. Since the Pro license covers unlimited balancers, add them as bandwidth demands rather than rationing them.

Two operational details worth knowing up front, because they come back the moment you touch a balancer again:

  • Each balancer needs its SSH password set on its entry in the Servers page.
  • To bring one online or recover it, use Servers page, LB Option, then Restart Service or Re-install Balancer. Allow up to two minutes, then refresh.

For how traffic is distributed and how many balancers a given subscriber count needs, see the load balancer setup guide.

Multi-Main, for panels under real load

Load balancers deliver streams, but playlist, EPG and portal generation still lands on the main server, and that is what falls over at peak time or under a Layer-7 flood. The Multi-Main addon moves that work onto dedicated Sub-Main edge nodes, leaving the main server with two light jobs: managing the database and redirecting stream requests to the load balancers.

  • Roughly 50,000 requests per second per node, with no CPU or RAM spike.
  • Each node needs its own dedicated server: fresh Ubuntu 24.04 or newer, 32 GB RAM minimum.
  • An automatic copy of the database is kept on the Sub-Main, holding the latest 7 days at /home/xtreamaster/backups.
  • No DNS or proxy changes are needed. Traffic routes with one click after install.
  • €199 one-time, after which unlimited nodes can be added. One node is usually enough.

Find it under Menu, Manage Servers, Multi-Main Server, then use Install Sub Main to deploy a node. Be clear on what it is not: a Sub-Main is not a standalone panel, so if the main server goes down the Sub-Main will not run the service alone. It protects the main server from load, it does not replace it.

Why This Is Not a Bash-Script Install

If your reference point is installing XtreamUI or XUI.ONE, this process will feel unfamiliar, so it is worth naming the difference.

The classic install is: SSH into the box, pull a bash script from somewhere, run it as root, answer prompts, and hope the dependency chain resolves against whatever Ubuntu release you happen to be on. When it fails, because a repository moved or a Python version shifted or a package got renamed, you are debugging someone else's shell script on a production server at midnight. That is the experience the XtreamUI install guide and the XUI.ONE install guide exist to walk people through.

Here the CMS holds the installation logic centrally and pushes a tested stack over SSH. The consequences are practical rather than philosophical: installs are repeatable across Ubuntu releases, you are not running unaudited root-level scripts of unknown provenance, and rebuilding a server is a CMS action rather than an archaeology project.

Troubleshooting a Failed Install

"The install will not start, the CMS cannot reach the server"

An SSH problem, essentially always. Check the IP, check the SSH port, since providers frequently ship non-standard ports, check the root password, and check that the provider's firewall or your own ufw rules are not blocking SSH from outside. Confirm you can SSH in manually from your own machine first. If you cannot, the CMS cannot either.

"The install finished but I cannot reach the panel"

Try http://YOUR_SERVER_IP:PANEL_PORT directly, remembering the default is 7709 and not the streaming port. If it still does not answer, you likely have a port conflict: either disable the other service using that port, or change the panel port from the Master CMS. Also confirm the port is open at both the server firewall and your provider's edge firewall, since some hosts filter non-standard ports by default and never mention it.

"The login page shows a Login Key field"

The server IP configured in the Master CMS does not match the server's primary outgoing IP, and the panel treats that mismatch as a security signal. Find the real outgoing IP:

wget -qO- api.ipify.org && echo ""

Then in the Master CMS click Edit on your main server, enter that primary IP, making sure not to use a secondary or additional IP, and save. Wait one to two minutes and the field disappears.

"The install failed partway through"

Almost always a dirty image. Something was already on the server: a previous panel, a manually installed MySQL, or a control-panel stack from the provider's template. Reimage to clean Ubuntu and run the install again, or follow the existing-OS procedure properly. Do not remove the conflicting software halfway and retry on top, because leftovers cause failures that are much harder to diagnose than a fresh start.

"The service is down after installing"

Work through it in this order. Check for a full disk with df -h and clear space if any mount is at 100 percent. Restart the database with service mysql restart. Then run the service scripts and read the error, which usually names the problem directly:

bash /home/xtreamaster/start_services.sh bash /home/xtreamaster/start_services_debug.sh

In Manage Servers, re-enter the SSH password on the server entry and do a full reload. Rebooting the server is the last resort, not the first move.

"Everything installed but performance is poor from day one"

Check the RAM against the 32 GB minimum, and confirm you are on dedicated hardware rather than a contended VPS. Poor performance on an otherwise idle new panel is a sizing symptom, not a software one.

Next Step: Migrating Your Existing Data

If this is a brand-new service, you are finished, so go and build your bouquets. But most people installing a panel on a new server are moving, whether off an overloaded box, off a cracked build, off a host that keeps null-routing them, or off a panel that stopped getting updates.

In that case the install is only half the job. The other half is getting your users, lines, bouquets, streams and VODs onto this new server without your subscribers noticing, and that has its own video and its own guide.

Part 2: Migrate Your Database to This New Server

A separate video walkthrough covering the Migrate Database button, remote connection versus a /root/backup.sql upload, resetting the admin password afterwards, and moving your VOD files across. Your old panel stays online the entire time.

Read the migration guide

One License. Main Server Plus Unlimited Load Balancers.

The panel installs itself over SSH from the Master CMS in about two minutes, runs on Ubuntu 20.04 through 26.04, and ships with ActiveCode device binding, Server Guard protection, access codes and Auto-SSL built in.

ActiveCode OTT / CMS Panel €40 / month
  • Installs itself over SSH from the Master CMS in about 2 minutes
  • Runs on Ubuntu 20.04, 22.04, 24.04 and 26.04
  • Main server plus unlimited load balancers on one license
  • Access codes and Server Guard against brute force and DDoS
  • ActiveCode device binding, which ends account sharing
  • Free xDrive encrypted cloud backup addon
  • €40/mo until 31 Dec 2026, then €70/mo

Clean Server. Clean Install. Two Minutes.

Buy Pro License
Common Questions

IPTV Panel Installation FAQ

What operators ask when installing an IPTV or OTT panel on an Ubuntu server for the first time.

All
Install
Hardware
Configuration
01

How do I install an IPTV panel on an Ubuntu server?

Provision a clean Ubuntu server, then add it to the Xtream-Masters Master CMS Panel using your xm: account and the server's IP and root SSH credentials. The CMS connects over SSH and runs the entire installation automatically, typically finishing in about two minutes. When the install completes you can set a custom panel port from the CMS dashboard, then log in as admin. There is no manual package installation, no compiling and no editing of configuration files by hand.

02

Which Ubuntu version is supported for the IPTV panel?

Ubuntu 20.04, 22.04, 24.04 and 26.04 on x86 architecture are supported. Ubuntu 24.04 is the recommended choice for a new build and is what the official install tip specifies. Ubuntu 18.04 and older are only relevant to legacy setups that cannot run FFmpeg v7. What matters as much as the version is that the image is clean: installing on a fresh operating system is the recommended path, and installing on a server that previously ran a cracked panel is never safe.

03

What server specification do I need for the main IPTV panel server?

A dedicated server with at least 32 GB of RAM for the main server, a supported Ubuntu release, root SSH access and a stable high-bandwidth uplink. One Pro license covers the main server plus unlimited load balancers, so bandwidth-heavy delivery is spread across load balancers rather than being handled entirely by the main box. Load balancers themselves can run on much smaller machines because they only deliver streams. See the IPTV server requirements guide for detailed sizing.

04

What ports does the IPTV panel use by default?

The panel uses two separate ports run by two different web servers. The admin panel (CMS login) runs on HAProxy with default port 7709. Streaming, meaning channels and VODs, runs on Nginx with default port 8080 for HTTP and 8443 for SSL. Because they are different services they must use different ports, and the defaults already keep them apart. The MySQL database listens on port 7999. Mixing up the admin port and the streaming port is the most common reason a successful install appears unreachable.

05

How do I change the default panel port 7709?

Log in to the Master CMS cPanel with your xm: account, click the Edit Port button on the dashboard, set the new port, confirm it is not already used by another service, then click Save. Changes take roughly two minutes to apply. Note that if you plan to put Cloudflare in front of the admin panel you must move off 7709, because Cloudflare's proxy only works on ports 443, 2053, 2083, 2087, 2096 and 8443.

06

Can I install the IPTV panel on a VPS instead of a dedicated server?

A VPS is fine for testing, for a small load balancer, or for evaluating the panel before committing. It is not appropriate for a production main server: the 32 GB RAM requirement, sustained disk I/O and predictable CPU that a busy panel needs are rarely met by shared virtual hosting, and noisy-neighbour contention shows up as stuttering streams that look like panel bugs. Run the main server on dedicated hardware and scale delivery with load balancers.

07

Do I need to install MySQL, nginx or any dependencies first?

No. The server should be a clean Ubuntu image with nothing pre-installed, and the CMS installs the complete stack itself including the database, web layer, streaming core and security components. If you genuinely cannot reinstall the operating system, an existing-OS install is possible, but you must first back up and verify your MySQL data, then completely remove the existing MySQL server and purge /etc/mysql, /var/lib/mysql and /var/log/mysql before entering the SSH details in the Master CMS.

08

Why does my panel login page show a Login Key field?

The Login Key field appears when the server IP configured in the Master CMS does not match the server's primary outgoing IP address, which the panel treats as a security signal. Find the real outgoing IP by running wget -qO- api.ipify.org on the server, then log in to the Master CMS Panel, click Edit on your main server, enter that primary IP, making sure not to use a secondary or additional IP, and save. Wait one to two minutes and the field disappears.

Install on Clean Ubuntu in About Two Minutes

No bash scripts, no dependency archaeology, no unaudited installers running as root. Add your server to the CMS, let it install, set your port, log in. Main server plus unlimited load balancers on one license.

Important Legal Notice
Xtream-Masters is a software development company. We build and license professional software. We don't host, store, stream, index, or distribute any audio, video, playlists, channels, or DRM-protected content of any kind. What we sell is an empty technical platform; whatever content runs through it is added, configured, and controlled entirely by the end user, who is responsible for holding the proper rights and following the law in their region. Any copyright or DMCA complaints should go to whoever is operating the stream or hosting the URL in question, not to us. For the full picture, have a look at our Terms, Privacy Policy, and Refund Policy.