Tellio is a self-hosted Stremio live TV addon that reads either:
- an
M3Uplaylist plus anXMLTVEPG source - an
Xtream Codesserver URL with username and password
It creates one Stremio catalog per playlist group, lists channels with their logos as thumbnails, and updates now/next programme descriptions every 5 minutes.
- Per-user configuration through a hosted
/configurepage - Dynamic Stremio catalogs generated from M3U groups or Xtream categories
- Meta pages showing:
Currently Playing TV ShowStart Time - End TimeNext Up TV ShowStart Time - End Time
- Programme artwork used as fanart when available in XMLTV, with channel logo fallback
- Direct stream playback using the source URL, not VPS proxying
- Startup sync on first configured request, then automatic refresh every 5 minutes for active configs
- Node.js
20+ - A VPS or other host reachable by Stremio
cd /home/jon/AI\ Projects/Tellio
npm startThe addon will listen on http://0.0.0.0:7000 by default.
Optional environment variables:
PORT=7000HOST=0.0.0.0TELLIO_USER_AGENT=Tellio/0.1
From the project directory:
cd /home/jon/AI\ Projects/Tellio
docker compose up -d --buildThen check:
docker compose ps
docker compose logs -fStop it with:
docker compose down- Start the server on your VPS.
- Open
http://YOUR_VPS:7000/configure - Enter either:
M3U URLandXMLTV URLXtream server URL,username, andpassword
- Click
Generate Install URL - Open the generated
stremio://.../manifest.jsonlink
Each user gets a unique encoded addon URL containing only their chosen source settings.
M3UandXMLTVcan be remote URLs or local filesystem paths on the VPS.- Gzipped XMLTV files such as
.xml.gzare supported. - Xtream endpoints are auto-derived as:
player_api.php?...&action=get_live_streamsxmltv.php?...
You can deploy either with Docker Compose or systemd. Docker Compose is the simplest route on a VPS.
- Copy the project to your VPS.
- Change into the app directory.
- Start it:
cd /opt/tellio
docker compose up -d --build- Verify it:
docker compose ps
curl http://127.0.0.1:7000/health- Open:
http://YOUR_VPS_IP_OR_DOMAIN:7000/configure
If you are using a reverse proxy such as Nginx, use your public HTTPS URL instead.
- Copy the project to your VPS.
- Create
/etc/systemd/system/tellio.service
[Unit]
Description=Tellio Stremio Addon
After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/tellio
ExecStart=/usr/bin/node /opt/tellio/server.js
Restart=always
RestartSec=5
Environment=PORT=7000
Environment=HOST=0.0.0.0
[Install]
WantedBy=multi-user.target- Enable and start it:
sudo systemctl daemon-reload
sudo systemctl enable --now tellio
sudo systemctl status tellioIf you expose it over HTTPS behind Nginx, use the public HTTPS URL for the configure page so the generated install link points to the correct host.
/configurerenders the config page/manifest.jsonreturns the base configurable manifest/:configToken/manifest.jsonreturns the configured manifest/:configToken/catalog/tv/:catalogId.json/:configToken/catalog/tv/:catalogId/:extraArgs.json/:configToken/meta/tv/:channelId.json/:configToken/stream/tv/:channelId.json
- EPG channel matching uses
tvg-id, Xtreamepg_channel_id, and channel name fallbacks. - Channel data is cached in memory only, so a restart clears active session caches until the next request.
- Some providers use unusual Xtream stream formats or incomplete XMLTV image metadata, which may need provider-specific tweaks later.