Preloader
Video Guide

How to Migrate Your IPTV Panel Database to a New Server (2027)

Moving from XUI, XtreamUI, NXT or Xtream Codes onto a new server, taking your users, lines, bouquets, streams, resellers and VODs with you, while your old panel keeps serving subscribers the entire time. Video walkthrough plus the exact commands and paths.


Watch the Migration Video

The short version first: the Migrate Database button, the two options behind it, and the password reset that finishes the job.

How to Migrate Your IPTV Panel Database to a New Server, XUI, XtreamUI and Xtream Codes

Video tutorial 2:18 XUI / XtreamUI / Xtream Codes / NXT
  • The Migrate Database button in the Master CMS Panel and the two options behind it
  • Remote connection versus placing a backup.sql file on the server
  • Finishing the job with MasterAdmin, Reset Admin Password, then bringing servers online
Watch on YouTube

Before You Begin

A migration needs somewhere to migrate to. The destination panel must already be installed and reachable on the new server, because the Migrate Database button lives on that server's page in the CMS and does not exist until the install is finished.

Prerequisite: the new server must already be installed

If you have not built the destination server yet, do that first. The official tip is to reinstall the server on Ubuntu 24.04 before you start, and the install itself takes about two minutes. There is a separate video walkthrough covering server requirements, the SSH-based install and port setup.

Read the Ubuntu install guide

Beyond that, have these ready before you start:

  • Your old panel's database credentials, meaning host, port, database name, username and password.
  • The source panel type, whether XUI, XtreamUI, NXT, Xtream Codes or Streamcreed. The schema mapping differs per panel, so this is not a cosmetic dropdown.
  • SSH access to the old server, if you are exporting a dump rather than connecting remotely.
  • SSH or SFTP access to the new server, so you can place the backup file in /root.
Do not create users on the new panel first. A fresh panel is tempting to start filling in while you wait. Resist it, migrate first, verify, then build on top. Anything you create before the migration is at risk of being overwritten or colliding with imported records.

What Actually Transfers

Everything that matters, and nothing that does not.

Transfers automaticallyDoes not transfer
Users and lines
Bouquets and categories
Live streams
Movies and series records
Resellers
Panel settings
On-disk VOD files, see the VOD section
Logos, EPG files and custom branding assets
The admin password, which must be reset

Supported source panels are XtreamUI, XUI (XUI.ONE), NXT, Streamcreed and other panels in the Xtream Codes family. The migration tool is built into the panel itself, so there are no external scripts, no paid consultants and no hand-edited SQL. If you are coming from a panel outside that family, such as 1-Stream, the schema has to be converted first, which is what the 1-Stream database conversion service handles.

Exporting the Old Database

Skip this section if your old server's database is directly reachable from the new server, because the remote connection method reads it in place and no dump file is created.

Otherwise, SSH into your old server and export:

Standard export
mysqldump -u USER -p DB_NAME > backup.sql

On XtreamUI, XUI.ONE and Xtream Codes family panels the database is commonly named xtream_iptvpro with the user user_iptvpro, though this varies by installer and version. If yours differs, the credentials live in the old panel's own config file inside its installation directory, so read them there rather than guessing.

For a large database with tens of thousands of lines or long EPG history, use flags that keep the dump consistent without locking your live panel while it runs:

Large database, consistent and non-blocking
mysqldump --single-transaction --quick --routines -u USER -p DB_NAME > backup.sql
Optional, compress before transferring
gzip backup.sql

A compressed .sql.gz file is accepted by the migration, so there is no need to decompress it on the destination.

Verify the dump before you trust it. Run ls -lh backup.sql and tail -n 5 backup.sql. A valid dump ends with a "Dump completed" comment line. A truncated dump, typically from a disk that filled mid-export, which is common on a panel server with months of logs, will import without complaint and silently lose everything after the cut-off point. You will discover this later by user count, which is the worst possible time.

The Two Migration Methods

In the Master CMS Panel, open your new server and click Migrate Database. Two options are offered. They produce an identical result, so choose on network access rather than preference.

A Remote Connection

Use when: your old database is reachable from the new server.

No export and no upload, since the system reads your old database directly.

  1. Enter your old database details: host, port, name, user, password.
  2. Pick your source panel.
  3. Click Migrate.

Your old panel keeps serving subscribers throughout, because reading the database does not interrupt streaming.

No URL to build. The migration reads the file straight from /root on the destination server. If you have seen older instructions involving a web path and a streaming-port URL, they do not apply to the current flow. One file, one location, one click.
Delete the dump when the migration completes. Run rm /root/backup.sql. That file contains every subscriber credential you own, and there is no reason to leave a plain-text copy sitting on a production server.

After the Success Message

The migration is not finished when the progress bar is. Three short steps complete it.

1 Reset the admin password

Click MasterAdmin, then Reset Admin Password, and set a new one. The admin account has to be reset explicitly, which is precisely why you cannot log in yet. This is expected, not a fault.

2 Set a custom panel port, if you want one

Optional. In the Master CMS dashboard you can set a custom panel port with the Edit Port button. Otherwise the admin panel answers on the default, port 7709.

3 Log in with your admin ID

Open the panel on your port and log in with the password you just set.

Verify before you switch anything: spot-check user count, bouquet count, a handful of lines and a handful of streams against the old panel. Your old panel is still running, so this comparison costs nothing, and it catches a bad import before your subscribers do.

Bringing Main and Load Balancers Online

With the data in place, start the streaming infrastructure.

Main server

  1. Open Manage Server and edit the main server.
  2. Set the SSH password.
  3. Click Main Server Option, then Restart Service.

Load balancers

  1. Edit each balancer and set its SSH password.
  2. Click LB Server Option, then Re-install Balancer.

Allow up to two minutes per balancer, then refresh to confirm status. If you are adding balancers for the first time, the load balancer setup guide covers traffic distribution and sizing.

If a load balancer will not come online after migration: remove the old panel's leftover folder for that install from /home/ on the balancer, then reboot the server. If it stays down, run bash /home/xtreamaster/start_services.sh and bash /home/xtreamaster/start_services_debug.sh and read the error, which usually names the problem directly.

If the main server or a balancer service is down after the migration, open the settings page and click the Update Tables button, then bring the servers online again using the steps above.

Fixing VODs That Do Not Play

This is the one thing the database migration cannot do for you, and the single biggest source of post-migration confusion. Your movie and episode records migrate. The files do not, because each panel stores them in a different folder.

Bring your load balancers online first and wait until they show online, then do the file work.

Method 1: Move the VOD folder (quick and recommended)

Use this if your old panel had VOD files stored locally on the server. That includes directly uploaded files, symlinked movies and episodes, and URL-downloaded content, meaning VODs you added by URL that the panel then downloaded and stored locally. Simply moving the files to the correct path makes everything work instantly.

All movies and episodes live in a single folder. Here is where each panel keeps them:

PanelVOD path (movies and episodes)
Xtream UI/home/xtreamcodes/iptv_xtream_codes/movies/
XUI/home/xui/content/vod/
NXT/home/nxt/content/vod/
Xtream-Masters/home/xtreamaster/movies/ (destination)

Run these steps on every server where VOD files exist, which means the main server and each load balancer that stores VODs:

  1. SSH into the server.
  2. Check whether the old folder exists and has files:
    ls -la /home/xtreamcodes/iptv_xtream_codes/movies/
  3. Move the files, using the path that matches your old panel:
    mv /home/{old_panel_path}/vod_folder/* /home/xtreamaster/movies/
  4. Set correct permissions:
    chown -R xtreamaster:xtreamaster /home/xtreamaster/movies/
  5. Repeat on the next server until all are done.
  6. Test playback from the Movies or Series page in the admin panel.

No re-encoding is needed. Ownership is not optional either: files left owned by root or xtreamcodes will sit on disk, show correctly in the panel, and still refuse to play.

Never run mass re-encoding after moving files. Re-encoding tries to fetch the original source URLs, which may no longer be valid, and that can cost you your locally hosted movie files. The files you moved are already in the correct format, so encoding is not needed.

Method 2: Re-encode all VODs

Use this only if you imported VODs directly using server file paths and every original source URL is still valid and accessible. Test a few source URLs manually first. If any are offline or changed, use Method 1 instead.

  1. Go to Mass Tools, then Advanced Tools.
  2. Click Proceed Mass Encoding.
  3. Wait for it to finish, which can take hours for a large library, and review any failed encodings in the log.
Quick decision guide: VOD files downloaded on the server, VODs added by URL, symlinked files, or a mix of local and URL-downloaded content all point to Method 1. Method 2 applies only when every source URL is still valid and accessible. For most migrations, Method 1 is the safest and fastest answer.

Moving an Existing Xtream-Masters Panel

Everything above covers migrating into the panel from a different system. If you are already running Xtream-Masters and simply want to move to new hardware, or re-install the main server, that is a restore rather than a migration, and it uses the panel's own backup system.

  1. Back up your data. In your panel admin open Backup, click Generate Backup Now, then download the file from /home/xtreamaster/backups/.
  2. Set up the new server in the Master CMS Panel: delete the old main server, add the new one (or re-install its OS) and enter the SSH details, then wait for the installation to finish. Installing the new server on Ubuntu 24.04 is the recommended path.
  3. Restore. Upload backup.sql.gz to /home/xtreamaster/backups/, log in with admin / admin, then open Backup and click Restore Backup.
  4. Load balancers. Open Manage Server and, for each balancer, click its option and choose Restart Service. Allow up to two minutes.
  5. Reboot the main server as the final step.

If the main server IP changed, logging in to the Master CMS updates it automatically. You can also set a new IP by hand under Edit Main Server, and remember to update the A record in your DNS.

Restoring a large database quickly

The panel's own Restore Database button is fine for typical databases. For a large one, restoring over SSH is faster and more reliable. Backups live in /home/xtreamaster/backups/ with names like 1772301302.sql.gz:

Restore a compressed backup
zcat /home/xtreamaster/backups/YOUR_BACKUP.sql.gz | mysql -u DB_USER -pDB_PASS -P DB_PORT DB_NAME

The database port is 7999. Your database username, password and name are shown in the Master CMS: log in with your xm: account and edit your main server, and the details appear in the modal.

Cutting Over Without Downtime

Here is the real advantage of migrating to a separate new server: your old panel never stops. That turns a nerve-wracking overnight maintenance window into an ordinary afternoon.

  1. Install and migrate while the old panel serves normally. Nothing your subscribers touch has changed.
  2. Verify against live data, checking user counts, bouquets and a sample of lines and streams. You have a running reference to compare against, which an in-place reinstall would not give you.
  3. Test playback on the new server directly by IP and port before any subscriber is pointed at it.
  4. Check the DNS fields on the new main server under Servers, since Users CDN, Private Users CDN and Proxy IP or DNS [All] must point at the main server IP. A playlist that loads while nothing plays is nearly always one of these three.
  5. Switch DNS if your subscribers connect by hostname. Lower the TTL a day beforehand so the change propagates quickly.
  6. Keep the old server for a few days after cutover. It costs one more billing cycle and buys you a rollback that costs nothing to use.
If your subscribers connect by raw IP rather than a hostname, cutover means reissuing configurations, because there is no DNS switch to make. This is the moment most operators wish they had used a hostname from day one. If you are in that position now, consider moving to a hostname as part of this migration, so the next server move is a DNS change instead of a support event.

If you are migrating away from a cracked panel, do not reuse the old machine. A fresh server is the entire point, since keeping the old operating system keeps whatever shipped with the crack.

Paths and Commands Reference

Everything in one place, for when you are mid-migration and do not want to scrub back through a video timeline.

WhatWhere or command
Export old databasemysqldump -u USER -p DB_NAME > backup.sql
Export, large databasemysqldump --single-transaction --quick --routines -u USER -p DB_NAME > backup.sql
Backup file location/root/backup.sql or /root/backup.sql.gz, on the new server
Upload commandscp backup.sql root@YOUR_SERVER_IP:/root/backup.sql
Delete dump after migratingrm /root/backup.sql
Admin panel port7709 by default (HAProxy)
Streaming port8080 HTTP, 8443 SSL (Nginx)
MySQL port7999
Panel backups folder/home/xtreamaster/backups/
Restore a large backupzcat /home/xtreamaster/backups/FILE.sql.gz | mysql -u DB_USER -pDB_PASS -P 7999 DB_NAME
VOD destination/home/xtreamaster/movies/
VOD source, Xtream UI/home/xtreamcodes/iptv_xtream_codes/movies/
VOD source, XUI/home/xui/content/vod/
VOD source, NXT/home/nxt/content/vod/
Fix VOD ownershipchown -R xtreamaster:xtreamaster /home/xtreamaster/movies/
Service debug scriptsbash /home/xtreamaster/start_services.sh
bash /home/xtreamaster/start_services_debug.sh
Start main serverManage Server, Main Server Option, Restart Service
Start load balancerManage Server, LB Server Option, Re-install Balancer

Troubleshooting

"Migration completed but I cannot log in"

Expected behaviour. Click MasterAdmin, then Reset Admin Password, set a new password, and log in on port 7709 or your custom port. Nothing is broken.

"The migration cannot find my backup file"

The file must be on the new server at /root/backup.sql, or /root/backup.sql.gz if compressed. Confirm with ls -lh /root/backup.sql on the destination. Uploading it to the old server, or to a different directory, is the usual cause.

"Remote Connection cannot reach my old database"

The old MySQL is either bound to 127.0.0.1 or firewalled. You can open it temporarily to the new server's IP only, never to 0.0.0.0, or simply switch to the backup file method, which exists for exactly this case and is the recommended option anyway.

"The import ran but the user count is wrong"

Suspect a truncated dump. Re-export with --single-transaction --quick, confirm the file ends with the "Dump completed" line, and migrate again. A partial dump imports without error and silently drops whatever came after the cut.

"A load balancer will not come online"

Remove the old panel's leftover install folder from /home/ on that balancer and reboot it. If it stays down, check for a full disk with df -h, clear space, then run the service scripts and read the error:

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

"Data is there but streams do not play"

Check in this order: main server service restarted, load balancers online, SSH passwords set on both, and the three DNS fields on the main server all pointing at the main server IP. Streams failing while the panel UI works is nearly always infrastructure state or DNS, not data.

"MAC devices load the playlist but nothing plays"

A MAC device uses the playlist DNS for streaming, not the panel DNS. Review all three DNS fields on the main server, watching for typos and for a DNS record pointing at a load balancer instead of the main server, then enable MAG Security under General Settings, Stalker Portal tab. Wait two to three minutes and test again.

"Movies show in the panel but return an error"

The files did not move, or they moved without ownership, or they were only moved on one of several servers. See Fixing VODs and repeat the move on every server that stores VOD files.

Related reading: the XtreamUI, XUI and NXT migration guide covers the same-server reinstall path in detail. For building the destination server, see the Ubuntu panel install guide. For the panel itself, see the IPTV admin panel page.

Migrate In. Keep Your Old Panel Running.

Built-in migration from XUI, XtreamUI, NXT and Xtream Codes moves your users, lines, bouquets, streams, movies, series, categories, resellers and settings, with no external scripts and no downtime on the source panel.

ActiveCode OTT / CMS Panel €40 / month
  • Built-in migration from XUI, XtreamUI, NXT and Xtream Codes
  • Remote database connection or a simple /root/backup.sql file
  • Your old panel stays online through the whole migration
  • Main server plus unlimited load balancers on one license
  • Backups stay portable, so you are never locked in
  • Free xDrive encrypted cloud backup addon
  • €40/mo until 31 Dec 2026, then €70/mo

Move Your Data. Keep Your Subscribers.

Buy Pro License
Common Questions

IPTV Panel Database Migration FAQ

What operators ask when moving a XUI, XtreamUI or Xtream Codes database onto a new server.

All
How it works
Data
Troubleshooting
01

How do I migrate my XUI or XtreamUI database to a new server?

Install the panel on the new server first, ideally on a fresh Ubuntu 24.04 install, using the Ubuntu install guide. Then click Migrate Database in the Master CMS Panel and pick one of two options. Option A, Remote Connection, is used when your old database is reachable: enter the old database host, port, name, user and password, pick your source panel, then click Migrate. Option B, Database Backup File, is the recommended option: export the old database with mysqldump, place the file on the new server as /root/backup.sql or /root/backup.sql.gz, pick your source panel and click Migrate. When the success message appears, click MasterAdmin then Reset Admin Password.

02

Where do I put the backup.sql file when migrating?

Place it on the new Xtream-Masters server at /root/backup.sql, or /root/backup.sql.gz if it is compressed. Upload it with SCP or SFTP to the destination server, not the old one, then select your source panel type in the migration screen and click Migrate. There is no URL to build and no web path involved, since the migration reads the file directly from /root.

03

What gets transferred during an IPTV panel database migration?

Everything moves: users, lines, bouquets, streams, movies, series, categories, resellers and settings. The one thing the database migration does not move is your on-disk VOD files, because every source panel uses a different folder layout. If you host movies and episodes locally you move those files separately into /home/xtreamaster/movies/ on every server that holds them, then fix ownership with chown.

04

Do I have to take my old IPTV panel offline during migration?

No, not if you migrate to a separate new server, which is the recommended path and the one shown in the video. Your old panel keeps running and serving subscribers for the entire migration, so you can verify the new server against live data before switching any DNS or client configuration. Only a same-server reinstall requires downtime, because that wipes and rebuilds the operating system.

05

Why can I not log in to the panel after the migration finishes?

The admin account has to be reset explicitly after migration, so this is expected rather than a failure. When the migration success message appears, click MasterAdmin then Reset Admin Password and set a new one. Optionally set a custom panel port from the Master CMS dashboard, then log in with your admin ID. The admin panel answers on port 7709 by default.

06

My VODs and movies do not play after migrating. Why?

The database rows migrated but the video files did not, because each panel stores them in a different folder. Bring your load balancers online first, then on every server holding VOD files move them into /home/xtreamaster/movies/ and run chown -R xtreamaster:xtreamaster /home/xtreamaster/movies/. Source paths are /home/xtreamcodes/iptv_xtream_codes/movies/ for Xtream UI, /home/xui/content/vod/ for XUI and /home/nxt/content/vod/ for NXT. Never run mass re-encoding after moving files, because it tries to fetch original source URLs and can cost you your locally hosted content.

07

Which method should I use, remote connection or backup file?

The backup file method is the officially recommended one. Use Remote Connection only when your old database is directly reachable from the new server, since it saves you the export and upload step. If the old database is bound to localhost, firewalled or otherwise unreachable, export it with mysqldump and use the backup file method instead. Both produce the same result, so this is a question of network access rather than data fidelity.

08

How do I move an existing Xtream-Masters panel to new hardware?

That is a restore rather than a migration. In your panel admin open Backup, click Generate Backup Now and download the file from /home/xtreamaster/backups/. In the Master CMS Panel delete the old main server, add the new one with its SSH details and wait for the install. Upload backup.sql.gz to /home/xtreamaster/backups/ on the new server, log in with admin / admin, then open Backup and click Restore Backup. If the main server IP changed, the Master CMS updates it automatically when you log in. Restart each load balancer, then reboot the main server.

Move Servers Without Your Subscribers Noticing

Migrate users, lines, bouquets, streams, movies, series, categories, resellers and settings from XUI, XtreamUI, NXT or Xtream Codes with a button, not a consultant, while your old panel keeps serving.

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.