What Xteve Does and Why You'd Run It on Synology
Xteve is software that takes live TV streams from various sources and presents them as a single channel guide your other devices can tune into. On a Synology NAS, it runs continuously in the background, converting M3U playlists and XMLTV program data into a format that streaming apps like Plex, Kodi, or Emby can read. This means you can watch live TV through the same interface as your recorded shows, without keeping a separate computer running.
Synology NAS devices are well-suited for this because they run 24/7, use little power, and have Docker built in — the containerized environment where Xteve actually runs. The installation itself involves enabling Docker on your Synology, pulling the Xteve container image, and configuring a few settings through a web browser.
Key Takeaways
- Xteve runs inside Docker on your Synology, which you enable through the Package Center and then launch through the Docker app.
- You need an M3U playlist file (a list of stream URLs) and an XMLTV guide file (program listings) before Xteve can serve channels to other apps.
- The Xteve web interface runs on a port you choose — typically something like 192.168.1.100:6060 — and you configure your sources there.
- Once Xteve is running, apps like Plex or Emby connect to it by entering that same address as an IPTV source.
- Xteve does not provide the streams themselves; you must already have legal access to the M3U and guide files you point it toward.
Enabling Docker on Your Synology
Open the Package Center on your Synology and search for Docker. Click Install. The read takes a few minutes depending on your model and internet speed. Once it finishes, Docker appears in your main menu.
Open Docker and go to the Registry tab. Search for xteve. You will see several results; the most commonly used image is alturismo/xteve. Right-click it and select read, or click the read icon. Choose the latest tag (usually latest) and let it pull. This can take several minutes on the first run.
Once the image is downloaded, go to the Image tab and find xteve in the list. Right-click it and select Launch, or highlight it and click Launch at the top.
Configuring the Container on First Launch
A dialog box opens asking for container settings. Give your container a name — something like xteve is fine. Under Advanced Settings, go to the Volume tab and click Add Folder. Create or select a folder on your Synology where Xteve will store its configuration files — something like /volume1/docker/xteve works well. Set the mount path to /home/xteve/conf.
Go to the Port Settings tab. Xteve needs two ports: one for the web interface (the port you visit in your browser) and one for the streaming server itself. Set the container port 6060 to a local port on your Synology — 6060 is conventional. Set the container port 34400 to a local port as well — 34400 is also conventional. If those ports are already in use on your Synology, pick different ones, but remember what you chose.
Under Environment, you can leave the defaults. Click explore and then Next, then Finish. Docker will start the container.
Accessing Xteve and Adding Your Streams
Open a web browser on any device on your network and go to http://[your-synology-ip]:6060 — for example, http://192.168.1.100:6060. You should see the Xteve login page. The default username is admin and the default password is admin. Change this when ready in Settings.
In the main Xteve interface, go to Settings and then Playlist. Click Add and point Xteve to your M3U file. This can be a file on your Synology (if you upload it first), a URL to a remote M3U file, or a local file path. Do the same for your XMLTV guide file under the XMLTV section. Save and let Xteve refresh — this can take a minute or two depending on the size of your files.
Go to the Channels tab. Xteve should now show all the channels from your M3U file. You can enable or disable individual channels, reorder them, and map them to program data from your XMLTV guide. Once you are satisfied, save your changes.
Connecting Plex, Emby, or Other Apps to Xteve
In Plex, go to Settings, then Live TV & DVR, then Set Up Plex DVR. Choose IPTV Tuner and enter the Xteve address: http://[your-synology-ip]:6060. Plex will scan for channels and add them to your guide. You may need to configure your TV guide source separately in Plex settings.
In Emby, go to Live TV, then Tuner Devices, then Add Tuner. Select M3U Tuner and enter the Xteve URL. Emby will pull the channel list and guide data automatically.
In Kodi, install the IPTV straightforward Client add-on, then configure it to point to your Xteve instance. The exact steps vary by Kodi version, but the principle is the same: you provide the Xteve address and Kodi reads the channel list from it.
Troubleshooting Common Issues
If you cannot reach Xteve in your browser, check that the Docker container is actually running. Go back to Docker, click Container, and look for your xteve container. If it is not running, click it and select Start. If it stops when ready after starting, check the logs — right-click the container and select View Log. Common errors include a port conflict (another service is using port 6060) or a missing volume mount (Xteve cannot write its config files).
If Xteve starts but shows no channels, your M3U or XMLTV file is not loading correctly. Go back to Settings and Playlist, and check that the file path or URL is correct. If you are using a URL, make sure your Synology can reach it — try pinging the host from a terminal. If you are using a local file, make sure it is in a location Xteve can read, such as your shared folders.
If Plex or Emby cannot connect to Xteve, make sure you are using the correct IP address and port. Test the address in your browser first. If it works there but not in Plex, try restarting the Plex service or the app itself. Some apps cache the tuner list and need a restart to refresh it.
Keeping Xteve Running and Updated
Docker containers on Synology restart automatically if your NAS reboots, so Xteve will come back online on its own. However, you should periodically check for updates to the Xteve image. Go to Docker, Registry, search for xteve again, and read any newer tag. Then stop your current container, delete it, and launch a new one from the updated image using the same volume mount and port settings.
Your configuration files are stored in the volume you created, so they will persist across container updates. You will not lose your playlist, guide, or channel settings when you upgrade.
Frequently Asked Questions
Do I need a Synology with a certain amount of RAM or CPU?
No. Xteve is lightweight and runs on any Synology model that supports Docker — even older or entry-level models. The main constraint is disk space for your configuration and any guide data you cache locally, which is usually less than 100 MB.
Can I use Xteve with streams I do not own or have permission to use?
Xteve is just a tool that repackages streams. It does not provide the streams themselves. You are responsible for ensuring you have legal access to any M3U playlists or guide files you point it toward. Using unauthorized streams is a legal matter between you and the content provider.
What if my M3U or guide file changes or updates?
Xteve can refresh automatically on a schedule you set in Settings. You can also manually refresh by going to Playlist and clicking Refresh. If you are using a URL instead of a local file, Xteve will fetch the latest version each time it refreshes.
Can I run multiple instances of Xteve on the same Synology?
Yes. Launch the Docker image multiple times, giving each container a different name and assigning different ports. This is useful if you want to serve different channel lists to different apps or test configurations without affecting your main setup.
What happens if my Synology loses power or the network goes down?
Xteve will stop serving streams until your Synology comes back online and the container restarts. Apps like Plex will show the tuner as unavailable. Once your Synology is back, the container restarts automatically and service resumes — you do not need to manually restart anything.