Iptv-Proxy is a project to proxyfie an m3u file and to proxyfie an Xtream iptv service (client API).
M3U service convert an iptv m3u file into a web proxy server.
It's transform all the original tracks to an new url pointing on the proxy.
proxy on Xtream code (client API)
support live, vod, series and full epg 🚀
Original iptv m3u file
#EXTM3U
#EXTINF:-1 tvg-ID="examplechanel1.com" tvg-name="chanel1" tvg-logo="http://ch.xyz/logo1.png" group-title="USA HD",CHANEL1-HD
http://iptvexample.net:1234/12/test/1
#EXTINF:-1 tvg-ID="examplechanel2.com" tvg-name="chanel2" tvg-logo="http://ch.xyz/logo2.png" group-title="USA HD",CHANEL2-HD
http://iptvexample.net:1234/13/test/2
#EXTINF:-1 tvg-ID="examplechanel3.com" tvg-name="chanel3" tvg-logo="http://ch.xyz/logo3.png" group-title="USA HD",CHANEL3-HD
http://iptvexample.net:1234/14/test/3
#EXTINF:-1 tvg-ID="examplechanel4.com" tvg-name="chanel4" tvg-logo="http://ch.xyz/logo4.png" group-title="USA HD",CHANEL4-HD
http://iptvexample.net:1234/15/test/4
What M3U proxy IPTV do
- convert chanels url to new endpoints
- convert original m3u file with new routes pointing to the proxy
Start proxy server example
iptv-proxy --m3u-url http://example.com/get.php?username=user&password=pass&type=m3u_plus&output=m3u8 \
--port 8080 \
--hostname poxyexample.com \
--user test \
--password passwordtest
That's give you an m3u file on a specific endpoint iptv.m3u
in our example
http://poxyserver.com:8080/iptv.m3u?username=test&password=passwordtest
All the new routes pointing on your proxy server
#EXTM3U
#EXTINF:-1 tvg-ID="examplechanel1.com" tvg-name="chanel1" tvg-logo="http://ch.xyz/logo1.png" group-title="USA HD",CHANEL1-HD
http://poxyserver.com:8080/12/test/1?username=test&password=passwordtest
#EXTINF:-1 tvg-ID="examplechanel2.com" tvg-name="chanel2" tvg-logo="http://ch.xyz/logo2.png" group-title="USA HD",CHANEL2-HD
http://poxyserver.com:8080/13/test/2?username=test&password=passwordtest
#EXTINF:-1 tvg-ID="examplechanel3.com" tvg-name="chanel3" tvg-logo="http://ch.xyz/logo3.png" group-title="USA HD",CHANEL3-HD
http://poxyserver.com:8080/14/test/3?username=test&password=passwordtest
#EXTINF:-1 tvg-ID="examplechanel4.com" tvg-name="chanel4" tvg-logo="http://ch.xyz/logo4.png" group-title="USA HD",CHANEL4-HD
http://poxyserver.com:8080/15/test/4?username=test&password=passwordtest
% iptv-proxy --m3u-url http://example.com:1234/get.php?username=user&password=pass&type=m3u_plus&output=m3u8 \
--port 8080 \
--hostname poxyexample.com \
## put xtream flags if you want to add xtream proxy
--xtream-user xtream_user \
--xtream-password xtream_password \
--xtream-base-url http://example.com:1234 \
--user test \
--password passwordtest
What Xtream proxy do
- convert xtream
xtream-user
andxtream-password
into newuser
andpassword
- convert
xtream-base-url
withhostname
andport
Original xtream credentials
user: xtream_user
password: xtream_password
base-url: http://example.com:1234
New xtream credentials
user: test
password: passwordtest
base-url: http://poxyexample.com:8080
All xtream live, streams, vod, series... are poxyfied!
You can get the m3u file with the original Xtream api request:
http://poxyexample.com:8080/get.php?username=test&password=passwordtest&type=m3u_plus&output=ts
Download lasted release
Or
% go install
in root repository
- Add an m3u URL in
docker-compose.yml
or add local file iniptv
folder HOSTNAME
andPORT
to expose- Expose same container port as the
PORT
ENV variable
ports:
# have to be the same as ENV variable PORT
- 8080:8080
environment:
# if you are using m3u remote file
# M3U_URL: http://example.com:1234/get.php?username=user&password=pass&type=m3u_plus&output=m3u8
M3U_URL: /root/iptv/iptv.m3u
# Port to expose the IPTVs endpoints
PORT: 8080
# Hostname or IP to expose the IPTVs endpoints (for machine not for docker)
HOSTNAME: localhost
GIN_MODE: release
## Xtream-code proxy configuration
## (put these env variables if you want to add xtream proxy)
XTREAM_USER: xtream_user
XTREAM_PASSWORD: xtream_password
XTREAM_BASE_URL: "http://example.com:1234"
USER: test
PASSWORD: testpassword
% docker-compose up -d
Put files of ./traekik
folder in root repo
docker-compose
sample with traefik:
version: "3"
services:
iptv-proxy:
build:
context: .
dockerfile: Dockerfile
volumes:
# If your are using local m3u file instead of m3u remote file
# put your m3u file in this folder
- ./iptv:/root/iptv
container_name: "iptv-proxy"
restart: on-failure
expose:
# have to be the same as ENV variable PORT
- 443
labels:
- "traefik.enable=true"
- "traefik.frontend.rule=Host:iptv.proxyexample.xyz"
environment:
# if you are using m3u remote file
# M3U_URL: https://example.com/iptvfile.m3u
M3U_URL: /root/iptv/iptv.m3u
# Port to expose the IPTVs endpoints
PORT: 443
# Hostname or IP to expose the IPTVs endpoints (for machine not for docker)
HOSTNAME: iptv.proxyexample.xyz
GIN_MODE: release
# Inportant to activate https protocol on proxy links
HTTPS: 1
## Xtream-code proxy configuration
XTREAM_USER: xtream_user
XTREAM_PASSWORD: xtream_password
XTREAM_BASE_URL: "http://example.tv:8080"
#will be used for m3u and xtream auth poxy
USER: test
PASSWORD: testpassword
traefik:
restart: unless-stopped
image: traefik:v1.7.16
read_only: true
command: --web
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./acme.json:/acme.json
- ./traefik.toml:/traefik.toml
Replace iptv.proxyexample.xyz
in docker-compose.yml
and traefik.toml
with your desired domain.
$ touch acme.json && chmod 600 acme.json
$ docker-compose up -d
there is basic auth just for testing. change with a real auth with database and user management and auth with token...
ENJOY!